摘要:逛github时看到这个QT的串口示波器,完全开源,支持串口、TCP、波形显示、通信协议。感觉很不错,跟以前分享的那个vofa有点像。感兴趣的可以下载下来学习学习。 相关文章:QT上位机合集SailorProject功能说明 串口调试助手功能支持传统的串口调试助手的基本收发功能,同时可以刷新大量的数据而不卡顿支持保存接收的数据支持最大200条可编辑指令的设置,并用于多条发送支持定时器发送支持换行符替换时间戳功能支持较多的中文编码格式值得注意的是支持Linux简单的串口调试支持加载csv表格数据到200条可编辑指令支持部分窗口配置的保存和重启恢复(前提是你不会删除配置文件)操作说明 注意由于QT自带文本显示窗口加载大量数据后会造成软件卡顿,现解决方案为设定一个显示缓冲区,在有刷新数据阶段(即串口接收数据阶段),如果需要保持刷新状态(即实时显示接收得数据),则仅显示显示缓冲区的内容,你可以使用鼠标移动向上滚动条,停止数据刷新,同时当你向上移动滚动条到一定程度,便会开始加载所有数据,如果你想再次触发实时刷新数据状态,只需要将滚动条移动到最低端,并确保有数据接收。 由于保存数据为显示界面的数据,如果出于刷新状态,则无法保存所有数据,正确的做法是关闭串口后,将滚动条移动到最顶端,加载全部数据,然后保存窗口数据。 【嵌入式物联网单片机学习资料】整理了全套精华学习资料,除了教程外,还有一些大厂面经笔试面试题,开源共享给大家。 点击加V自取:领取资料私信我或者点击链接http:s。pdb2。comlCMIsoKcnATFIF4M TCPServer界面 SEASKY串口通信协议 通信方式是串口,配置为波特率115200,8位数据位,1位停止位,无硬件流控,无校验位。 1、通信协议格式 帧头设备类型设备ID数据ID帧尾protocolheader(4byte)equipmenttype(2byte)equipmentid(2byte)dataid(2byte)frametail(2byte,CRC16,整包校验) 2、帧头详细定义 3、串口通信协议intparseprotocol(protocolstructpProtocol,uint16tparseDataLen){解析数据,使用前需提前缓冲pProtocolmessagest。pDataintret1;uint16framestructpFrameStructpPmessagestructpMessageStructpPif(checkprotocolheade(pMessageStructpData)PROTOCOLRESULTOK){更新帧头数据pFrameStructheader。sofpMessageStructpData〔0〕;获取data段的数据长度pFrameStructheader。datalength(pMessageStructpData〔2〕8)(pMessageStructpData〔1〕);pFrameStructheader。crccheckpMessageStructpData〔3〕;获取此次数据包长度pMessageStructdatalenpFrameStructheader。datalengthPROTOCOLDATAOFFSET2;计算解析后得到的dataunion数据长度pFrameStructframeuser。cmddata。datalen(pFrameStructheader。datalength)sizeof(dataunion);if(pMessageStructdatalenparseDataLen){if(pMessageStructdatalenpMessageStructmaxdatalen){if(CRC16CheckSum(pMessageStructpData〔0〕,pMessageStructdatalen)!0){pFrameStructframeuser。equipmenttype(pMessageStructpData〔5〕8)(pMessageStructpData〔4〕);pFrameStructframeuser。equipmentid(pMessageStructpData〔7〕8)(pMessageStructpData〔6〕);pFrameStructframeuser。dataid(pMessageStructpData〔9〕8)(pMessageStructpData〔8〕);拷贝data段指定长度数据ret(int)memcpy(pFrameStructframeuser。cmddata。pData〔0〕,pMessageStructpData〔PROTOCOLDATAOFFSET〕,pFrameStructheader。datalength);posoffsetpFrameStructheader。datalengthPROTOCOLDATAOFFSET;pFrameStructframetail(pMessageStructpData〔posoffset1〕8)(pMessageStructpData〔posoffset〕);returnPROTOCOLRESULTOK;}else{待解析BUFF超过预定解析数据容量,避免内存越界PROTOCOLERRORPRINTF(parseprotocolCRC16CheckSumerr!);returnPROTOCOLRESULTCHECKFRAMEERR;}}else{待解析BUFF超过预定解析数据容量,避免内存越界PROTOCOLERRORPRINTF(parseprotocoldatalen〔d〕maxdatalen〔d〕!,pMessageStructdatalen,pMessageStructmaxdatalen);returnPROTOCOLRESULTOUTOFLEN;}}else{通过包头计算,还未收到完整的数据包PROTOCOLERRORPRINTF(parseprotocoldatalen〔d〕maxdatalen〔d〕!,pMessageStructdatalen,pMessageStructmaxdatalen);returnPROTOCOLRESULTOUTOFLEN;}}else{待解析BUFF超过预定解析数据容量,避免内存越界PROTOCOLERRORPRINTF(parseprotocolcheckprotocolheadeerr!);returnPROTOCOLRESULTCHECKHEADERR;}PROTOCOLDEBUGPRINTF(parseprotocolcheckprotocolheadeok!);returnPROTOCOLRESULTERR;}软件截图 项目开源地址:https:github。comSEASKYMastervSailorProject原文链接:https:mp。weixin。qq。comsBf619Q3bQuon5d4CNxrtQ 文章转载自:果果小师弟 文章来源于:一个开源的QT的串口示波器,很nice! 版权声明:本文来源于网络,免费传达知识,版权归原作者所有,如涉及作品版权问题,请联系我进行删除