逛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
深圳成全国首个显示5G独立组网全覆盖的城市
220v单相电动机的旋转方向怎么调
电脑组建RAID 0的要诀
华为手机利润攀升 2016年预计在韩国零件采购额将达到311亿元
RS485总线与TCP/IP协议对比分析
一个开源的QT的串口示波器案例
苹果Wi-Fi型iPad平板电脑9月15号在中国上市
汽车保险丝座也分大小吗 常规汽车保险丝座尺寸多大
PCB概念上涨的逻辑是什么_龙头股有哪些?
MOTO双核XT908首次曝光 仅支持qHD
物联网设备开发,搭载IoTwebOS系统唯快不破!
时间继电器的选型要求和注意事项
led灯串联/并联电路原理图 led灯串并联电阻的选择
背投电视的音频系统
Altera推出面向Stratix IV FPGA的最新开发
无人机市场的介绍和直流无刷无人机电机的市场前景的详细概述
10A输入高耐压同步升压ZCC9429规格
物联网互联设备可以赋能制造业吗
工业机器人需求自3月以来持续复苏,机器人都去哪儿了
搭建华为V3存储仿真器,模拟真实的存储环境