赞
踩
之前写了一款串口调试上位机,有很大的功能欠缺,整体感觉十分不爽。这次在原有基础上进行了优化,并且增加了协议帧捕获功能,使用QCustomPlot进行波形绘图的功能,可应用于实时动态绘图。(直男审美,实在不懂UI设计,望吐槽时嘴下留情)
左侧是绘图区,右侧为控制区。最大可以显示20条曲线,可对波形、散点、背景、坐标进行设置。
右侧 曲线/散点设置 的功能,依次为:隐藏/显示、颜色选择、加粗显示、值显示、线连接方式、散点形状。
每条曲线的颜色、线连接方式、散点形状均可调。线连接方式包括:点、线左对齐、右对齐、居中对齐、平行y轴的高线。
百万字节接收绘图测试:CPU占用率保持在20%左右(7代i5四核四线程),内存占用随历史接收的增加而增加。
协议帧兼容匿名四轴调试上位机,在mainwindow.h中修改宏定义可自定义帧头、功能字。
每帧数据包含 N条绘图波形的一个点,类型为int16,每输入一帧便会在波形界面中绘制出N个点,并且X轴显示坐标加1。连续不断发送便可实时动态绘图。
固定帧头 3A 3B,用于帧起始位置的识别。(默认3A 3B,可在代码中修改)
功能字 01,意义为波形绘图,暂时只定义了这一个有效功能字。
有效字的总字节长度范围为 2~40,只能为偶数,对应着 1~20条曲线。
单个有效字的字节长度为 2Byte,int16类型,由于计算机存储数据时使用补码,手动计算需要转换为补码。
校验和为此帧前面所有数据的累加,取末位的1字节,做校验和。校验比对正确则进行绘图,不正确则误码数量加1。
例1,包含2条波形:
3A 3B 01 04 FF 38 13 14 D8(16进制显示) | |||||
3A 3B | 01 | 04 | FF 38 | 13 14 | D8 |
固定帧头 | 功能字 | 有效字的总长度,4 | 第1有效字,-200的补码 | 第2有效字,4884的补码 | 校验和 |
例2,包含20条波形:
3A 3B 01 28 00 C8 01 90 02 58 03 20 03 E8 04 B0 05 78 06 40 07 08 07 D0 FF 38 FE 70 FD A8 FC E0 FC 18 FB 50 FA 88 F9 C0 F8 F8 F8 30 94(16进制显示) | |||||||||||||||||||||||
3A 3B | 01 | 28 | 00 C8 | 01 90 | 02 58 | 03 20 | 03 E8 | 04 B0 | 05 78 | 06 40 | 07 08 | 07 D0 | FF 38 | FE 70 | FD A8 | FC E0 | FC 18 | FB 50 | FA 88 | F9 C0 | F8 F8 | F8 30 | 94 |
固定帧头 | 功能字 | 有效字的总长度,40 | 200的补码 | 400 | 600 | 800 | 1000 | 1200 | 1400 | 1600 | 1800 | 2000 | -200 | -400 | -600 | -800 | -1000 | -1200 | -1400 | -1600 | -1800 | -2000 | 校验和 |
补码计算器:补码在线计算
自动扫描可用串口端口,同时显示端口硬件信息(无须再查看设备管理器,方便选择),波特率可手动输入。
发送/接收字节、速率统计、帧统计、误码统计。
接收区每2000字节强制换行,避免一行的内容太多,导致CPU占用过高从而卡顿,已测试过累计千万字节不卡顿。(仅仅是在接收显示里加换行,实际的真实数据不受影响)
支持中文收发,默认GB2312编码,如需Unicode/UTF8/UTF16需要更改代码。(单片机中文编码大多使用GB2312,占用空间小)
收/发区,无缝16进制转换,GB2312中文不乱码。输入框可作为转换框,无须在计算后重复输入。
增加帧捕获功能,用户可自定义修改两字节的帧头,帧协议兼容匿名四轴调试上位机。
增加捕获帧调试界面,方便调试。
波形绘图最多可显示20条曲线。曲线连接方式,颜色、散点形状可任意设置。可隐藏,可加粗显示。
曲线连接方式支持:点、线连接、左台阶、右台阶、居中台阶、纵值绘图。
波形散点形状支持:x形、+形、空心圆、实心圆、矩形、菱形、星形、正三角、倒三角、x框、+框、x圆、+圆、和平。
动态绘图支持: X轴自动跟随、Y轴范围自适应。
图页显示范围可在右下角手动输入调整。
支持滚轮Y轴缩放、左键拖拽、单击曲线加粗显示,不支持拖拽缩放。
(对体验影响不大,更新要等到猴年马月了)
曲线值显示。跟随鼠标显示,波形名称显示。
QSetting记录用户设置。
波形名称可点击修改。
保存数据为txt/excel。
GitHub源码仓库:源码下载
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。