串口波形小工具-V1.0.2
串口波形小工具-V1.0.2

串口波形小工具-V1.0.2

串口波形小工具用于实时解析串口数据流里边的数据,并实时绘制曲线

注意:新的小工具已经发布:串口波形小工具-V1.0.3

介绍

目前通用的串口波形小工具很少,大多数此类工具使用时必须遵循特定的传输协议,不方便。为此特地设计了一款串口波形小工具,用户只需将需要绘制的点简单的打印出来,此小工具会立即捕捉到该点,并绘制出来。目前串口波形小工具已经升级到了 V1.0.2 版本,将来还将继续维护升级。

此串口小工具能实时解析串口数据流里边的数据,并实时绘制曲线,能流畅动态显示上百万个点。此小工具不仅能绘制曲线,还能对捕捉到的数据做实时幅频分析,方便后续开发。

小工具介绍

串口波形小工具界面如下所示,为了方便使用,小工具使用了单页面设计。

串口波形小工具最上边即为波形绘制区。波形绘制区的纵坐标会根据波形数据的最大最小值动态调整,用户无需关系。波形绘制区的横坐标即为波形点数,即显示区最大波形点数,可根据需要修改,可以支持动态显示上百万个点。

波形绘制区下方白色的区域即为 FFT 波形绘制区。此小工具会实时为捕捉到的信号做幅频分析,FFT 的点数和采样率由左侧行输入控件确定,FFT 结果会被归一化处理,最终绘制出来。FFT 波形绘制区的横坐标的单位为 Hz,占比最大的谐波的频率和周期会实时更新到右侧结果区显示。小工具做 FFT 处理时会顺便统计最大值、最小值和平均值,并同步更新到右侧结果区显示。FFT 为小工具自带的功能,一直处于开启状态,一旦捕捉到的数据量达到了设定的 FFT 点数,就会开启实时幅频分析,每更新一个点就重新做一次幅频分析。注意:FFT的波形点数一定要是2的N次幂,如果输入的参数不符合规范,那么软件将会自动调整到最近的合规点数。

点击开始绘制后,此小工具才会捕捉串口数据流里边的数据并实时更新。一旦启动绘制,波形点数、FFT 点数和采样率这几个参数将会被锁定,无法被修改。若是需要修改,请先关闭波形绘制。注意:开始绘制后小工具会清空所有显示,同时将波形点数、FFT 点数和采样率这几个参数保存到“WaveSerialPort.ini”,以便于下次启动时根据用户预设的参数运行。

此小工具支持数据保存,点击“保存波形”按键后,会将波形绘制区数据保存到“wave.csv”,如果波形点数设置为 2048 个点,那么最多保存 2048个点。

FFT 波形绘制区下方白色区域即为交互区域,用于显示用户的打印数据,和向设备发送数据。目前暂不支持 16 进制发送。

用户打开串口后,小工具会每隔 100ms 检验一次串口是否脱落。

如何输出数据

串口波形小工具能实时捕捉串口数据流中的数字,并将其更新到波形显示区。数字以 10 进制形式,可以没有开始符,但一定要有结束符(非数字),可以以逗号、回车换行、空格等非数字字符作为结束符。具体使用如下所示。

printf("123, ");                  //波形值为123,使用逗号和空格分隔
printf("123\r\n");                //波形值为123,使用回车换行分隔
printf("adc = %d\r\n", adc);      //小工具上显示ADC波形
printf("wave1 = %.1f\r\n", wave); //小工具上显示浮点波形

注意:

1、目前只支持10进制数,暂不支持16进制数据。

2、串口数据流中尽量避免使用中文字符。

3、为提高系统稳定性,尽量使用回车换行分隔数据。

错误示范

printf("123");  //绘制波形值 123
printf("456");  //绘制波形值 456

出错原因:数字字符串没有结束符,小工具会将波形值计算为”123456”,即使这两个打印函数相隔很远,也依旧会显示异常。

还需要做的更新

目前此小工具的功能还比较单一,将来还将支持显示多条曲线、可任意伸缩、发送多条指令、可自由切换文本和 16 进制发送等。

版本记录

V1.0.0:初代版本

V1.0.1:添加了FFT显示和自动调节显示区域

V1.0.2:更新了清空按键不会清空对话框的bug,解决了某些时候发送按键按下会关闭串口的bug,添加了波特率范围。

源码

工具