逛github时看到这个QT的串口示波器,完全开源,支持串口、TCP、波形显示、通信协议。感觉很不错,跟以前分享的那个vofa+有点像。
Sailor Project功能说明

串口调试助手功能
- 支持传统的串口调试助手的基本收发功能,同时可以刷新大量的数据而不卡顿
- 支持保存接收的数据
- 支持最大200条可编辑指令的设置,并用于多条发送
- 支持定时器发送
- 支持换行符替换时间戳功能
- 支持较多的中文编码格式
- 值得注意的是支持Linux简单的串口调试
- 支持加载csv表格数据到200条可编辑指令
- 支持部分窗口配置的保存和重启恢复(前提是你不会删除配置文件)
操作说明
注意由于QT自带文本显示窗口加载大量数据后会造成软件卡顿,现解决方案为设定一个显示缓冲区,在有刷新数据阶段(即串口接收数据阶段),如果需要保持刷新状态(即实时显示接收得数据),则仅显示显示缓冲区的内容,你可以使用鼠标移动向上滚动条,停止数据刷新,同时当你向上移动滚动条到一定程度,便会开始加载所有数据,如果你想再次触发实时刷新数据状态,只需要将滚动条移动到最低端,并确保有数据接收。
由于保存数据为显示界面的数据,如果出于刷新状态,则无法保存所有数据,正确的做法是关闭串口后,将滚动条移动到最顶端,加载全部数据,然后保存窗口数据。
TCPServer界面





SEASKY串口通信协议
通信方式是串口,配置为波特率115200, 8位数据位, 1位停止位, 无硬件流控, 无校验位。
1、通信协议格式
| 帧头 | 设备类型 | 设备ID | 数据ID | 帧尾 |
|---|---|---|---|---|
| protocol_header(4-byte) | equipment_type(2-byte) | equipment_id (2-byte) | data_id(2-byte) | frame_tail(2-byte,CRC16,整包校验) |
2、帧头详细定义

3、串口通信协议
intparse_protocol(protocol_struct*pProtocol,uint16_tparseDataLen)
{
//解析数据,使用前需提前缓冲pProtocol->message_st.pData
intret=-1;
uint16_tpos_offset;
frame_struct*pFrameStruct=&pProtocol->frame_st;
message_struct*pMessageStruct=&pProtocol->message_st;
if(check_protocol_heade(pMessageStruct->pData)==PROTOCOL_RESULT_OK)
{
//更新帧头数据
pFrameStruct->header.sof=pMessageStruct->pData[0];
//获取data段的数据长度
pFrameStruct->header.data_length=(pMessageStruct->pData[2]<< 8)|(pMessageStruct->pData[1]);
pFrameStruct->header.crc_check=pMessageStruct->pData[3];
//获取此次数据包长度
pMessageStruct->data_len=pFrameStruct->header.data_length+PROTOCOL_DATA_OFFSET+2;
//计算解析后得到的data_union数据长度
pFrameStruct->frame_user.cmd_data.data_len=(pFrameStruct->header.data_length)/sizeof(data_union);
if(pMessageStruct->data_len<=parseDataLen)
{
if(pMessageStruct->data_len<= pMessageStruct->max_data_len)
{
if(CRC16_Check_Sum(&pMessageStruct->pData[0],pMessageStruct->data_len)!=0)
{
pFrameStruct->frame_user.equipment_type=(pMessageStruct->pData[5]<<8)|(pMessageStruct->pData[4]);
pFrameStruct->frame_user.equipment_id=(pMessageStruct->pData[7]<< 8)|(pMessageStruct->pData[6]);
pFrameStruct->frame_user.data_id=(pMessageStruct->pData[9]<< 8)|(pMessageStruct->pData[8]);
//拷贝data段指定长度数据
ret=(int)memcpy(&pFrameStruct->frame_user.cmd_data.pData[0],&pMessageStruct->pData[PROTOCOL_DATA_OFFSET],pFrameStruct->header.data_length);
pos_offset=pFrameStruct->header.data_length+PROTOCOL_DATA_OFFSET;
pFrameStruct->frame_tail=(pMessageStruct->pData[pos_offset+1]<< 8)|(pMessageStruct->pData[pos_offset]);
returnPROTOCOL_RESULT_OK;
}
else
{
//待解析BUFF超过预定解析数据容量,避免内存越界
PROTOCOL_ERROR_PRINTF("parse_protocol->>CRC16_Check_Sumerr!
");
returnPROTOCOL_RESULT_CHECK_FRAME_ERR;
}
}
else
{
//待解析BUFF超过预定解析数据容量,避免内存越界
PROTOCOL_ERROR_PRINTF("parse_protocol->>data_len[%d]>max_data_len[%d]!
",
pMessageStruct->data_len,
pMessageStruct->max_data_len);
returnPROTOCOL_RESULT_OUT_OF_LEN;
}
}
else
{
//通过包头计算,还未收到完整的数据包
//PROTOCOL_ERROR_PRINTF("parse_protocol->>data_len[%d]>max_data_len[%d]!
",
//pMessageStruct->data_len,
//pMessageStruct->max_data_len);
returnPROTOCOL_RESULT_OUT_OF_LEN;
}
}
else
{
//待解析BUFF超过预定解析数据容量,避免内存越界
PROTOCOL_ERROR_PRINTF("parse_protocol->>check_protocol_headeerr!
");
returnPROTOCOL_RESULT_CHECK_HEAD_ERR;
}
PROTOCOL_DEBUG_PRINTF("parse_protocol->>check_protocol_headeok!
");
returnPROTOCOL_RESULT_ERR;
}
软件截图




项目开源地址:
https://github.com/SEASKY-Master/vSailorProject
审核编辑 :李倩
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
示波器
+关注
关注
113文章
7129浏览量
196902 -
定时器
+关注
关注
23文章
3375浏览量
124698
原文标题:分享一个开源的QT的串口示波器
文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
热点推荐
逆风C++QT中控台逆向课程
https://www.bilibili.com/opus/1178756596191199237 QT中控逆向:多线程逻辑与消息处理分析 在软件逆向工程领域,QT框架因其跨平台特性和丰富的功能模块
QT301电容至模拟转换器:设计与应用指南
电子工程师们关注的焦点。 文件下载: QT301-D.pdf 一、QT301概述 QT301是一款数字突发模式电荷转移(
直播 | 睿擎平台AMP混合部署:你的Qt界面如何“指挥”底层电机?
很多工程师在做HMI+实时控制类产品时,会遇到两个棘手问题:●Qt界面写好了,怎么和底层实时任务通信?●AMP混合部署架构下,Linux与RT-Thread之间的数据交换代码该怎么写?3月4日(周三
开源鸿蒙SIG-Qt技术沙龙成都站成功举办,触觉智能产品方案展示
,深圳触觉智能等嘉宾展示了SIG-Qt产品解决方案。SIG-Qt产品解决方案深圳触觉智能科技有限公司,iotdraw方案展示:iotdraw是一个面向工业设备监控
开源鸿蒙城市技术沙龙成都站圆满落幕
10月31日,由开源鸿蒙项目管理委员会(PMC)、开源鸿蒙 SIG-Qt主办,成都中科合迅科技有限公司(以下简称“合迅科技”)支持的“开源鸿蒙城市技术沙龙·成都站”在成都海特国际广场成
tiny4412 Qt环境搭建
1.硬件环境 PC端:ubuntu18.04 开发板硬件平台:tiny4412 内核版本:linux3.5 交叉编译器:arm-linux-gcc Qt版本:Qt5.6 2.搭建 ubuntu 下
LVGL近期很多人问,那它和Qt哪个好?
最近拜访做工业控制、智能家居的客户时,常被问到同一个问题:嵌入式产品,GUI选LVGL还是Qt? 其实工具选择没有绝对的“好”与“坏”,但选对适配场景的GUI图形用户界面工具,能直接让产品开发效率
【干货分享】基于QT和ffmpeg硬解码的多路摄像头取流
前言其实官方为我们已经提供了三个官方实例,我打开学习了一下,QT实例虽然也用到了信号槽,是点击按钮的信号槽,我觉的QT妙就妙在了信号槽和多线程,而且官方的是
开放原子开源基金会发布150余个开源项目应用案例
近日,在2025开放原子开源生态大会开幕式上,开放原子开源基金会发布了150余个开源项目应用案例,涵盖中国南方电网、中国移动、京东集团、安贞医院、南京邮电大学、蚂蚁密算等100余家单位
分享一个开源的QT的串口示波器
评论