做嵌入式调试时,我们经常会遇到这样的场面:
串口助手里不断往上滚数字,肉眼盯了半天,只能确认“数据确实在变”。至于变化是否平滑、几个通道是否同步、某次抖动发生在什么时候,单看文本很难判断。
常见的处理办法是把数据保存下来,再导入 Excel、MATLAB 或 Python 画图。这当然能用,但调一个传感器、PID 参数或者电机控制程序时,每改一次代码都要重新采集和作图,太折腾了。
SerialPlot 做的事情很直接:读取串口数据,实时画成曲线。
项目地址:https://github.com/hyOzd/serialplot
一个不打算包办所有事情的小工具
SerialPlot 是一款基于 Qt 开发的开源软件,界面和功能都比较克制。它不是示波器的替代品,也没有复杂的数据分析模块,重点就是把设备通过串口发来的数据快速画出来。
这种定位反而很适合日常调试。
例如,单片机每隔一段时间输出温度、转速和控制量:
26.4,1520,37
26.5,1536,39
26.7,1518,35
将 SerialPlot 设置为 ASCII 数据和逗号分隔后,三个数值就能分别显示为三条同步曲线。原本挤在串口助手里的数字,马上有了形状。温度有没有突跳、转速是否振荡、控制量何时触顶,一眼就能看出来。
ASCII 和二进制数据都能处理
很多串口绘图工具只接受一行一组的文本数据,优点是简单,缺点是占用带宽。采样率升高或者通道变多后,大量数字转成字符串再发送,效率不太理想。
SerialPlot 同时支持 ASCII 和二进制输入。
ASCII 模式采用 CSV 一类的分隔格式,适合刚开始调试时使用。代码里用 printf 输出几个变量,电脑端稍作设置即可看到波形,不必先写一套上位机程序。
二进制模式支持有符号或无符号的 8、16、32 位整数以及浮点数。对于采样频率较高的项目,这种方式能减少传输的数据量,也省去了设备端频繁进行数字转字符串的开销。
它还提供自定义帧格式,可以设置帧头、帧长、校验等内容。持续数据流中一旦丢字节,固定的数据排列可能会整体错位;加入帧头和校验后,软件更容易重新找到一帧数据的起点。调试时间较长、串口链路偶尔受干扰时,这一点很实用。
多通道同步看,问题更容易暴露
单独观察一个变量,往往看不出系统为什么异常。
调电机时,可以把目标转速、实际转速和控制器输出放在同一时间轴上;调姿态算法时,可以同时观察多个轴的数据;测试温控程序,则可以对照温度与加热输出的变化。
SerialPlot 支持多通道同步绘图。 各通道曲线可以同时显示,便于观察变量之间的先后关系。软件还提供增益和偏移设置,当几个变量的量级差距很大时,可以先调整显示比例,免得数值较小的曲线被压成一条直线。
这里也要说清楚:SerialPlot 更适合调试和快速观察,不是专业的数据采集分析系统。需要严格的时间戳、高级频谱分析或长时间海量存储时,仍然要考虑更完整的工具链。
不只是看曲线,也能向设备发命令
有些设备不会在上电后自动上传数据,需要先发送启动采集、切换模式或修改参数等命令。SerialPlot 可以预先定义 ASCII 或十六进制命令,调试时直接点击发送。
比如:
START
或者一段二进制命令:
AA 01 01 55
这样一来,观察曲线和控制设备可以在同一个窗口中完成。对于协议不算复杂的小项目,通常不用再开一个串口助手来回切换。
当前波形还可以保存为 CSV,之后用其他软件继续处理;也可以制作快照,保留某次调试现场。遇到偶发异常时,保存一份曲线往往比截取满屏串口文本更容易复盘。
上手简单
最省事的方式是前往项目的 Releases 页面 下载已经编译好的版本。项目提供 Windows 程序和 Linux AppImage,当前公开版本为 0.13.0,已经迁移到 Qt 6。
基本使用流程可以归纳为几步:
- 选择串口并设置波特率、数据位、停止位等参数。根据设备输出选择 ASCII、简单二进制流或自定义帧。设置通道数量和相应的数据类型。打开串口,检查各通道曲线是否与预期一致。需要留存时,再保存快照或导出 CSV。
如果使用 ASCII 模式,建议设备每个采样周期发送一行数据,各通道保持固定顺序。例如:
printf("%d,%.2f,%.2frn", speed, voltage, current);
SerialPlot 没有很重的学习成本。设备输出格式确定后,几分钟就能看到曲线。它尤其适合传感器数据检查、控制算法调参以及多变量状态观察。
这个工具也很诚实:串口进来什么,它就尽量把什么画出来。需要临时确认一组数据的走势时,不必先搭 Python 环境,也不用专门写上位机。打开软件、选好串口,先看波形再说。
串口绘图工具用顺手以后,开发板上的通信接口够不够用,很快就会变成一个现实问题。尤其是多控制器、多传感器或车载通信项目,几路 UART 往往转眼就被占满。
创龙科技基于全志 T536 的开发板提供 17 路 UART 和 4 路 CAN-FD,适合需要集中接入多路串口设备及 CAN 节点的场景。T536 采用 4 核 Cortex-A55@1.6GHz,并集成 RISC-V 核,平台还支持 Local Bus 与 inline ECC。需要同时采集、转发和处理多路通信数据的项目,可以通过文末卡片进一步了解。
179