基于Qt实现的串口示波器

摘要:逛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、串口通信协议
int parse_protocol(protocol_struct* pprotocol,uint16_t parsedatalen){    //解析数据,使用前需提前缓冲 pprotocol->message_st.pdata    int ret = -1;    uint16_t pos_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] 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_lendata_len max_data_len)            {                if(crc16_check_sum(&pmessagestruct->pdata[0], pmessagestruct->data_len) != 0)                {                    pframestruct->frame_user.equipment_type = (pmessagestruct->pdata[5]frame_user.equipment_id   = (pmessagestruct->pdata[7] frame_user.data_id        = (pmessagestruct->pdata[9] 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] >crc16_check_sum err!);                    return protocol_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);                return protocol_result_out_of_len;            }        }        else        {            //通过包头计算,还未收到完整的数据包//            protocol_error_printf(parse_protocol->>data_len[%d] > max_data_len[%d]!,//                pmessagestruct->data_len,//                pmessagestruct->max_data_len);            return protocol_result_out_of_len;        }    }    else    {        //待解析buff超过预定解析数据容量,避免内存越界        protocol_error_printf(parse_protocol->>check_protocol_heade err!);        return protocol_result_check_head_err;    }    protocol_debug_printf(parse_protocol->>check_protocol_heade ok!);    return protocol_result_err;} 软件截图 项目开源地址:
https://github.com/seasky-master/vsailorproject
原文标题:一个开源的qt的串口示波器,很nice!
文章出处:【微信公众号:凡亿pcb】欢迎添加关注!文章转载请注明出处。

性价比划算的日产逍客低价来袭只要11.98万啦!!!
智能停车机器人如何解决车主的痛点
可重构数据流计算引领架构创新
INDEMIND双目视觉模组SDK已更新,正式支持ROS平台
小米10 Pro针对手机自动亮度调节存在的问题做出了哪些升级
基于Qt实现的串口示波器
手机指纹识别何优点和缺点?又会是何种发展趋势
简单说明轴承绝缘电阻和发电机轴电压的测量
富士康已签署协议在印度设立工厂
基于储备池资产1:1质押的稳定币Reserve介绍
浅谈电缆分支箱在外部环境设计上的关键点
多功能DR的检查意义及临床优势
电子负载用软开关DC/DC变换器的实现
Arm物联网芯片培训班在Arm中国顺利结业
OPPO R15运行内存测试:完全可以满足用户的重度使用需求
北斗导航定位芯片行业大事记,联通与华大北斗首个“5G+北斗高精度定位开放实验室”揭牌
华为计划与沃达丰西班牙公司合作本月将5G带到15个城市
如何从人工智能和5G等技术中找到红利
华为Mate 60 Pro芯片显示为麒麟9000s实测网速达到5G
BAT争夺WiFi入口 腾讯成立安全WiFi联盟