skiars / serialtool Goto Github PK
View Code? Open in Web Editor NEWA cross platform Serial-Port/TCP/UDP debugging tool.
License: GNU General Public License v3.0
A cross platform Serial-Port/TCP/UDP debugging tool.
License: GNU General Public License v3.0
调 RT-Thread finsh 控制台 msh ,用 PuTTY 和 sscom 都可以,但用这个就是不显示任何回传内容,怎么回事呢?
实现一个类似Windows CMD或者Linux终端的界面。用于支持交互操作。
这个界面应该实现简单的高亮功能。暂时不考虑优化。
如题,在两台Win11 22H2的机器上,打开只会在任务栏出现一个任务,但不能打开,鼠标移上去会预览到一个白色的窗口。兼容性设置无效。只有运行兼容模式疑难解答和QT构建项目时能打开,但是Option会显示空白,不能调设置,并且默认英语。确定兼容性设置或者运行编译好的软件依然是失败。
SendScintilla(SCI_SETKEYWORDS, (unsigned long)0, g_szKeywords);// 设置关键字
219: error: call of overloaded 'SendScintilla(QsciScintillaBase::, long unsigned int, const char*&)' is ambiguous
SendScintilla(SCI_SETKEYWORDS, (unsigned long)0, g_szKeywords);// 璁剧疆鍏抽敭瀛
编码方式选择asiic时,软件直接闪退
1>E:\private\JGSW\SerialTool-master\SerialTool\src\toolbox\vediobox\vediobox.cpp(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
1>E:\private\JGSW\SerialTool-master\SerialTool\src\views\filetransmit\xmodem.h(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 (编译源文件 src\views\filetransmit\filethread.cpp)
1>E:\private\JGSW\SerialTool-master\SerialTool\src\views\filetransmit\filethread.cpp(20,1): error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>E:\private\JGSW\SerialTool-master\SerialTool\src\views\filetransmit\filethread.cpp(70,1): error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>E:\private\JGSW\SerialTool-master\SerialTool\src\views\filetransmit\filethread.cpp(86,1): error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>E:\private\JGSW\SerialTool-master\SerialTool\src\views\filetransmit\filethread.cpp(135,9): error C2046: 非法的 case
1>E:\private\JGSW\SerialTool-master\SerialTool\src\views\filetransmit\filethread.cpp(138,9): error C2047: 非法的 default
1>E:\private\JGSW\SerialTool-master\SerialTool\src\views\filetransmit\filethread.cpp(137,13): error C2043: 非法 break
1>E:\private\JGSW\SerialTool-master\SerialTool\src\views\filetransmit\filethread.cpp(139,13): error C2043: 非法 break
1>E:\private\JGSW\SerialTool-master\SerialTool\src\views\filetransmit\filethread.cpp(141,7): error C2059: 语法错误:“else”
1>E:\private\JGSW\SerialTool-master\SerialTool\src\views\filetransmit\filethread.cpp(141,42): error C2143: 语法错误: 缺少“;”(在“{”的前面)
1>E:\private\JGSW\SerialTool-master\SerialTool\src\views\filetransmit\filethread.cpp(141,42): error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>E:\private\JGSW\SerialTool-master\SerialTool\src\views\filetransmit\filethread.cpp(151,5): error C2059: 语法错误:“if”
1>E:\private\JGSW\SerialTool-master\SerialTool\src\views\filetransmit\filethread.cpp(151,17): error C2143: 语法错误: 缺少“;”(在“{”的前面)
1>E:\private\JGSW\SerialTool-master\SerialTool\src\views\filetransmit\filethread.cpp(151,17): error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
新的设置界面使用JSON来进行页面布局,从而在增加新的设置项时不用去修改Options对话框的C++代码。
这项工作已经基本完成。
波形接收的界面,CH1~CH16是否能临时定义一个别名?这样便于截图或者通道多的时候便于自己识别
波形显示的界面上,最右边会有一小段无显示的区域,必须调整x轴的点数后才会刷新上去
一直处于波形接收状态,不做别的操作,大概十几分钟后软件会闪退,不管是否看开启硬件加速
run with qt creator
Compile output as below
15:35:46: Running steps for project SerialTool... 15:35:46: Configuration unchanged, skipping qmake step. 15:35:46: Starting: "/usr/bin/make" /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -stdlib=libc++ -fno-pie -no-pie -headerpad_max_install_names -arch x86_64 -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -mmacosx-version-min=10.10 -Wl,-rpath,@executable_path/Frameworks -Wl,-rpath,/Users/hb08499/Qt5.10.1/5.10.1/clang_64/lib -o SerialTool.app/Contents/MacOS/SerialTool aboutbox.o main.o mainwindow.o controller.o portsetbox.o defaultconfig.o updatedialog.o portmanager.o tcpudpport.o serialport.o viewmanager.o scriptextensionview.o textedit.o texttrview.o terminalview.o qvtchar.o qvtcharformat.o qvterminal.o qvtlayout.o qvtline.o oscilloscopeview.o channelitem.o oscopetimestamp.o pointdatabuffer.o plotview.o wavedecode.o filetransmitview.o filethread.o xmodem.o toolboxmanager.o vediobox.o valuedisplay.o optionsdialog.o settingswidget.o settingswidgets.o translate.o qrc_serialtool.o moc_mainwindow.o moc_controller.o moc_portsetbox.o moc_updatedialog.o moc_portmanager.o moc_abstractport.o moc_tcpudpport.o moc_serialport.o moc_viewmanager.o moc_abstractview.o moc_scriptextensionview.o moc_textedit.o moc_texttrview.o moc_terminalview.o moc_qvterminal.o moc_oscilloscopeview.o moc_channelitem.o moc_filetransmitview.o moc_filethread.o moc_toolboxmanager.o moc_abstracttoolbox.o moc_vediobox.o moc_valuedisplay.o moc_optionsdialog.o moc_settingswidget.o moc_settingswidgets.o -F/Users/hb08499/Qt5.10.1/5.10.1/clang_64/lib -L/Users/hb08499/Qt5.10.1/5.10.1/clang_64/lib -lqscintilla2_qt5_debug -framework QtCharts -framework QtWidgets -framework QtGui -framework QtCore -framework DiskArbitration -framework IOKit -lQt5UiTools_debug -framework OpenGL -framework AGL -framework QtPrintSupport -framework QtMacExtras -framework QtSerialPort -framework QtNetwork -framework QtScript clang: warning: argument unused during compilation: '-nopie' [-Wunused-command-line-argument] ld: library not found for -lqscintilla2_qt5_debug clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [SerialTool.app/Contents/MacOS/SerialTool] Error 1 15:35:46: The process "/usr/bin/make" exited with code 2. Error while building/deploying project SerialTool (kit: Desktop Qt 5.10.1 clang 64bit) When executing step "Make" 15:35:46: Elapsed time: 00:00.
现在保存数据只能手动保存,而且不知道这个缓存有多大。、
现在想24小时传感器记录数据,数据用串口保存的PC里,现在需要将数据可靠完整地保存到硬盘中。现在只能手动保存。而且不知道缓存有多大,如果开机24小时或者240小时,缓存应该会清空吧?
如果可以添加实时写入文件的功能就更好了。
新的SerialTool将会具有一个插件系统,目前计划的插件系统将有以下特性:
SerialTool的每个插件都是一个视图卡片,也是SerialTool的基本功能单元。我们希望新的插件系统能够帮助用户在不必理解SerialTool代码的情况下能快速开发适合自己需求的插件。
如果条件允许我们还会实现通信端口协议的插件支持。
说真的这个工具真的无敌,但是对于嵌入式开发的,就是少了串口复位,希望作者可以开发下。
使用过一些串口工具,这款工具挺简洁的,很喜欢,有一些功能可能可以加到新版本的软件之中
1、串口发送界面添加 发送新行功能,勾选后发送的字串自动添加\r\n
2、添加时间戳显示显示功能
3、添加发送数据回显功能,发送数据和接收数据使用不同的颜色进行区分;
portmanager.cpp中,line61,delete m_currentPort;被执行后,怎么还调用
m_currentPort->loadConfig(config);这行代码
下位机调整上送波形的通道数量时,上位机无法更新,必须关掉重新开启才能显示出对应通道
编译显示英文,想设置为中文,结果不行,求指教
/* 定义各通道 */
#define CH1 0
#define CH2 1
#define CH3 2
#define CH4 3
#define CH5 4
#define CH6 5
#define CH7 6
#define CH8 7
#define CH9 8
#define CH10 9
#define CH11 10
#define CH12 11
#define CH13 12
#define CH14 13
#define CH15 14
#define CH16 15
/* 信息帧数据结构定义 */
typedef struct {
uint8_t year; // 0~99 -> 2000 ~ 2099, 7 bit
uint8_t month; // 1 ~ 12, 4 bit
uint8_t day; // 1 ~ 31, 5 bit
uint8_t hour; // 0 ~ 23, 5 bit
uint8_t min; // 0 ~ 59, 6 bit
uint8_t sec; // 0 ~ 59, 6 bit
uint16_t msec; // 0 ~ 999, 10 bit
uint32_t sampleRate; // 0 ~ 2000000, 21 bit
} ws_timestamp_t;
/* 公共函数声明 */
char ws_point_int8(char *buffer, char channel, int8_t value);
char ws_point_int16(char *buffer, char channel, int16_t value);
char ws_point_int32(char *buffer, char channel, int32_t value);
char ws_point_float(char *buffer, char channel, float value);
void ws_frame_init(char *buffer);
char ws_frame_length(const char *buffer);
char ws_add_int8(char *buffer, char channel, int8_t value);
char ws_add_int16(char *buffer, char channel, int16_t value);
char ws_add_int32(char *buffer, char channel, int32_t value);
char ws_add_float(char *buffer, char channel, float value);
char ws_send_timestamp(char *buffer, ws_timestamp_t* ts);
/*****************************************************************************
* 文件名: sendwave.c
* 版本: V1.2
* 作者: 官文亮
* 日期: 2018/9/2
* 说明: 本文件属于SerialTool软件的波形显示功能的下位机参考代码, 作用是将数
* 值转换为SerialTool可以识别的帧, 用户需实现串口发送函数, 结合本程序
* 即可实现串口发送波形的显示, 本程序适合SerialTool v1.1.6及后续版本.
*
* SerialTool源码链接: https://github.com/gztss/SerialTool
* SerialTool安装包链接: https://github.com/gztss/SerialTool/releases
*
*****************************************************************************/
/* 此处定义一些常量, 请勿修改! */
enum {
Ch_Num = 16, // 通道数量
Frame_MaxBytes = 80, // 最大帧长度
Frame_Head = 0xA3, // 帧头识别字
Frame_PointMode = 0xA8, // 点模式识别字
Frame_SyncMode = 0xA9, // 同步模式识别字
Frame_InfoMode = 0xAA, // 信息帧识别字
Format_Int8 = 0x10, // int8识别字
Format_Int16 = 0x20, // int16识别字
Format_Int32 = 0x30, // int32识别字
Format_Float = 0x00 // float识别字
};
/* 函数功能: 发送int8类型数据
* 函数参数:
* buffer : 帧缓冲区, 需要4byte
* channel: 通道, 取值范围为0~15
* value : 通道数据值, 8bit有符号整数
* 返回值 : 数据帧长度(单位为byte)
**/
char ws_point_int8(char *buffer, char channel, int8_t value)
{
if ((uint8_t)channel < Ch_Num) { // 通道验证
// 帧头
*buffer++ = Frame_Head;
*buffer++ = Frame_PointMode;
*buffer++ = channel | Format_Int8; // 通道及数据格式信息
*buffer = value; // 数据添加到帧
return 4; // 数据帧长度
}
return 0;
}
/* 函数功能: 发送int16类型数据
* 函数参数:
* buffer : 帧缓冲区, 需要5byte
* channel: 通道, 取值范围为0~15
* value : 通道数据值, 16bit有符号整数
* 返回值 : 数据帧长度(单位为byte)
**/
char ws_point_int16(char *buffer, char channel, int16_t value)
{
if ((uint8_t)channel < Ch_Num) { // 通道验证
// 帧头
*buffer++ = Frame_Head;
*buffer++ = Frame_PointMode;
*buffer++ = channel | Format_Int16; // 通道及数据格式信息
// 数据添加到帧
*buffer++ = (value >> 8) & 0xFF;
*buffer = value & 0xFF;
return 5; // 数据帧长度
}
return 0;
}
/* 函数功能: 发送int32类型数据
* 函数参数:
* buffer : 帧缓冲区, 需要7byte
* channel: 通道, 取值范围为0~15
* value : 通道数据值, 32bit有符号整数
* 返回值 : 数据帧长度(单位为byte)
**/
char ws_point_int32(char *buffer, char channel, int32_t value)
{
if ((uint8_t)channel < Ch_Num) { // 通道验证
// 帧头
*buffer++ = Frame_Head;
*buffer++ = Frame_PointMode;
*buffer++ = channel | Format_Int32; // 通道及数据格式信息
// 数据添加到帧
*buffer++ = (value >> 24) & 0xFF;
*buffer++ = (value >> 16) & 0xFF;
*buffer++ = (value >> 8) & 0xFF;
*buffer = value & 0xFF;
return 7; // 数据帧长度
}
return 0;
}
/* 函数功能: 发送float类型数据
* 函数参数:
* buffer : 帧缓冲区, 需要7byte
* channel: 通道, 取值范围为0~15
* value : 通道数据值, 类型为单精度浮点(32bit)
* 返回值 : 数据帧长度(单位为byte)
**/
char ws_point_float(char *buffer, char channel, float value)
{
// 这个联合变量用来实现浮点到整形的变换
union {
float f;
uint32_t i;
} temp;
if ((uint8_t)channel < Ch_Num) { // 通道验证
temp.f = value;
// 帧头
*buffer++ = Frame_Head;
*buffer++ = Frame_PointMode;
*buffer++ = channel | Format_Float; // 通道及数据格式信息
// 数据添加到帧
*buffer++ = (temp.i >> 24) & 0xFF;
*buffer++ = (temp.i >> 16) & 0xFF;
*buffer++ = (temp.i >> 8) & 0xFF;
*buffer = temp.i & 0xFF;
return 7; // 数据帧长度
}
return 0;
}
/* 函数功能: 同步发送模式缓冲区初始化
* 函数参数:
* buffer : 帧缓冲区, 最多需要(Frame_MaxBytes + 3) bytes
**/
void ws_frame_init(char *buffer)
{
*buffer++ = Frame_Head;
*buffer++ = Frame_SyncMode;
*buffer = 0;
}
/* 函数功能: 获取同步模式缓冲区长度(单位bytes)
* 函数参数:
* buffer : 同步模式帧缓冲区
**/
char ws_frame_length(const char *buffer)
{
return buffer[2] + 3;
}
/* 函数功能: 在数同步据帧中加入一个int8类型数据
* 函数参数:
* buffer : 已经初始化的帧缓冲区
* channel: 通道, 取值范围为0~15
* value : 通道数据值, 类型为int8
* 返回值 : 0, 加入成功, 1, 帧长度已经达到上限或通道错误
**/
char ws_add_int8(char *buffer, char channel, int8_t value)
{
char count = buffer[2];
char *p = buffer + count + 3; // 跳过前面数据
count += 2;
// 帧长度及通道验证
if (count <= Frame_MaxBytes && (uint8_t)channel < Ch_Num) {
buffer[2] = count;
*p++ = channel | Format_Int8; // 通道及数据格式信息
*p = value; // 数据添加到帧
return 1;
}
return 0;
}
/* 函数功能: 在数同步据帧中加入一个int16类型数据
* 函数参数:
* buffer : 已经初始化的帧缓冲区
* channel: 通道, 取值范围为0~15
* value : 通道数据值, 类型为int16
* 返回值 : 0, 加入成功, 1, 帧长度已经达到上限或通道错误
**/
char ws_add_int16(char *buffer, char channel, int16_t value)
{
char count = buffer[2];
char *p = buffer + count + 3; // 跳过前面数据
count += 3;
// 帧长度及通道验证
if (count <= Frame_MaxBytes && (uint8_t)channel < Ch_Num) {
buffer[2] = count;
*p++ = channel | Format_Int16; // 通道及数据格式信息
// 数据添加到帧
*p++ = (value >> 8) & 0xFF;
*p = value & 0xFF;
return 1;
}
return 0;
}
/* 函数功能: 在数同步据帧中加入一个int32类型数据
* 函数参数:
* buffer : 已经初始化的帧缓冲区
* channel: 通道, 取值范围为0~15
* value : 通道数据值, 类型为int32
* 返回值 : 0, 加入成功, 1, 帧长度已经达到上限或通道错误
**/
char ws_add_int32(char *buffer, char channel, int32_t value)
{
char count = buffer[2];
char *p = buffer + count + 3; // 跳过前面数据
count += 5;
// 帧长度及通道验证
if (count <= Frame_MaxBytes && (uint8_t)channel < Ch_Num) {
buffer[2] = count;
*p++ = channel | Format_Int32; // 通道及数据格式信息
// 数据添加到帧
*p++ = (value >> 24) & 0xFF;
*p++ = (value >> 16) & 0xFF;
*p++ = (value >> 8) & 0xFF;
*p = value & 0xFF;
return 1;
}
return 0;
}
/* 函数功能: 在数同步据帧中加入一个float类型数据
* 函数参数:
* buffer : 已经初始化的帧缓冲区
* channel: 通道, 取值范围为0~15
* value : 通道数据值, 类型为float
* 返回值 : 0, 加入成功, 1, 帧长度已经达到上限或通道错误
**/
char ws_add_float(char *buffer, char channel, float value)
{
char count = buffer[2];
char *p = buffer + count + 3; // 跳过前面数据
count += 5;
// 帧长度及通道验证
if (count <= Frame_MaxBytes && (uint8_t)channel < Ch_Num) {
union {
float f;
uint32_t i;
} temp;
buffer[2] = count;
temp.f = value;
*p++ = channel | Format_Float; // 通道及数据格式信息
// 数据添加到帧
*p++ = (temp.i >> 24) & 0xFF;
*p++ = (temp.i >> 16) & 0xFF;
*p++ = (temp.i >> 8) & 0xFF;
*p = temp.i & 0xFF;
return 1;
}
return 0;
}
/* 函数功能: 发送时间戳
* 函数参数:
* buffer : 帧缓冲区
* ts : 时间戳
* 返回值 : 数据帧长度, (单位: bytes)
**/
char ws_send_timestamp(char *buffer, ws_timestamp_t* ts)
{
uint8_t temp;
*buffer++ = Frame_Head;
*buffer++ = Frame_InfoMode;
temp = (ts->year << 1) | ((ts->month >> 3) & 0x01);
*buffer++ = (char)temp;
temp = (ts->month << 5) | (ts->day & 0x1F);
*buffer++ = (char)temp;
temp = (ts->hour << 3) | ((ts->min >> 3) & 0x07);
*buffer++ = (char)temp;
temp = (ts->min << 5) | ((ts->sec >> 1) & 0x1F);
*buffer++ = (char)temp;
temp = (ts->sec << 7) | ((ts->msec >> 3) & 0x7F);
*buffer++ = (char)temp;
temp = (ts->msec << 5) | ((ts->sampleRate >> 16) & 0x1F);
*buffer++ = (char)temp;
*buffer++ = (char)((ts->sampleRate >> 8) & 0xFF);
*buffer = (char)(ts->sampleRate & 0xFF);
return 10;
}
/* end of file sendwave.c */
void sendBuffer(char *buf, uint8_t len)
{
Serial.write(buf);
}
// include file
#include <math.h>
//#include "sendwave.h"
typedef signed char int8_t;
typedef signed short int16_t;
typedef signed long int32_t;
// 串口示波器测试函数
void plotTest(void)
{
char buffer[100], len; // 缓冲区最大需要83bytes
static float key = 0.0f;
static ws_timestamp_t ts = { // 时间戳
17, 11, 20, // year, month, day
12, 30, 45, // hour, minute, second
120, 50 // msec, sample rate
};
// 每秒钟发送一次时间戳
if ((int64_t)(key * 50.0) % 100 == 0) {
len = ws_send_timestamp(buffer, &ts);
sendBuffer(buffer, len); // 串口发送数据
}
// 点发送模式 int8类型(8位有符号整形)
len = ws_point_int8(buffer, CH1, (int8_t)(sinf(key) * 64));
sendBuffer(buffer, len); // 串口发送数据
// 点发送模式 int16类型(16位有符号整形)
len = ws_point_int16(buffer, CH2, (int16_t)(sinf(key) * 4096));
sendBuffer(buffer, len); // 串口发送数据
// 点发送模式 int32类型(32位有符号整形)
len = ws_point_int32(buffer, CH3, (int32_t)(sinf(key) * 2048));
sendBuffer(buffer, len); // 串口发送数据
// 点发送模式 float类型(单精度浮点型)
len = ws_point_float(buffer, CH4, (float)(sinf(key) * 512));
sendBuffer(buffer, len); // 串口发送数据
// 同步模式(帧发送模式)
ws_frame_init(buffer);
ws_add_int8(buffer, CH5, (int8_t)(sinf(key) * 128));
ws_add_int16(buffer, CH6, (int16_t)(sinf(key) * 700));
ws_add_int32(buffer, CH7, (int32_t)(sinf(key) * 1024));
ws_add_float(buffer, CH9, (float)(sinf(key) * 256));
sendBuffer(buffer, ws_frame_length(buffer)); // 串口发送数据
// 更新时间计数
key += 0.02f;
}
void setup() {
//Initialize serial and wait for port to open:
Serial.begin(115200);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
}
float thisByte = 0.0f;
void loop() {
// static char buffer[83]; // maximum use of 83 bytes
// static int value = 10000; // a test value
// value+=10;
// if(value>=25600) value = 1;
//
// ws_frame_init(buffer);
// ws_add_int8(buffer, CH1, (int8_t)(value / 100));
// ws_add_int16(buffer, CH2, (int16_t)(value / 20));
// ws_add_float(buffer, CH3, (float)value * 0.1f);
// sendBuffer(buffer, ws_frame_length(buffer)); // serial port send data
delay(10);
plotTest();
}
缺少这个库是什么原因,没办法编译了
https://github.com/tumuyan/SerialTool/releases
tumuyan这位维护的兄弟。你的release版本 没有装QT环境用不了?
你能否打个包?
接下来将实现一种支持用户任意拖拽布局的界面。新的界面支持将不同的视图同时显示在窗口中,因此通信接口(例如串口)的数据应该流向哪些视图是新的问题。
新界面还将支持不同视图之间的通信。
目前测试SerialTool V1.3.0Beta发现两个问题,1:界面上的暂停发送\接收按钮,只能使发送按钮不可用,接收缓存区还是会继续接收并显示数据;2:点击“帮助”的更新按键,会显示网络出错,进度条停止在0%;
波形数据保存时虽然是按照csv格式保存,但是文件后缀是txt的,必须自己手工修改,建议文件后缀直接按csv保存,或者文件后缀可选择
textedit.o: In function TextEdit::onTextChanged()': textedit.cpp:(.text+0xac): undefined reference to
QsciScintilla::text() const'
textedit.cpp:(.text+0x134): undefined reference to QsciScintillaBase::SendScintilla(unsigned int, int) const' textedit.cpp:(.text+0x150): undefined reference to
QsciScintillaBase::SendScintilla(unsigned int, int) const'
textedit.cpp:(.text+0x164): undefined reference to QsciScintillaBase::SendScintilla(unsigned int, unsigned long, long) const' textedit.o: In function
TextEdit::setMarginsWidth()':
textedit.cpp:(.text+0x27c): undefined reference to QsciScintillaBase::SendScintilla(unsigned int, unsigned long, long) const' textedit.o: In function
TextEdit::onLinesChanged()':
textedit.cpp:(.text+0x3bc): undefined reference to QsciScintillaBase::SendScintilla(unsigned int, unsigned long, long) const' textedit.o: In function
TextEdit::highlightNone()':
textedit.cpp:(.text+0x480): undefined reference to QsciScintillaBase::SendScintilla(unsigned int, int) const' textedit.o: In function
TextEdit::highlightCpp()':
textedit.cpp:(.text+0x4a0): undefined reference to QsciScintillaBase::SendScintilla(unsigned int, int) const' textedit.cpp:(.text+0x4bc): undefined reference to
QsciScintillaBase::SendScintilla(unsigned int, unsigned long, char const*) const'
……省略中间部分……
moc_textedit.o:(.data.rel.ro._ZTV8TextEdit[_ZTV8TextEdit]+0x448): undefined reference to QsciScintilla::undo()' moc_textedit.o:(.data.rel.ro._ZTV8TextEdit[_ZTV8TextEdit]+0x450): undefined reference to
QsciScintilla::unindent(int)'
moc_textedit.o:(.data.rel.ro._ZTV8TextEdit[_ZTV8TextEdit]+0x458): undefined reference to QsciScintilla::zoomIn(int)' moc_textedit.o:(.data.rel.ro._ZTV8TextEdit[_ZTV8TextEdit]+0x460): undefined reference to
QsciScintilla::zoomIn()'
moc_textedit.o:(.data.rel.ro._ZTV8TextEdit[_ZTV8TextEdit]+0x468): undefined reference to QsciScintilla::zoomOut(int)' moc_textedit.o:(.data.rel.ro._ZTV8TextEdit[_ZTV8TextEdit]+0x470): undefined reference to
QsciScintilla::zoomOut()'
moc_textedit.o:(.data.rel.ro._ZTV8TextEdit[_ZTV8TextEdit]+0x478): undefined reference to QsciScintilla::zoomTo(int)' moc_textedit.o:(.data.rel.ro+0x0): undefined reference to
QsciScintilla::staticMetaObject'
collect2: error: ld returned 1 exit status
Makefile:429: recipe for target 'SerialTool_pre' failed
make: *** [SerialTool_pre] Error 1
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.