
分享我的串口接收GUI程序-实时查看数据和图像-MyScomTest.rar
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
本资源提供一个用于实时监控与分析串口数据的图形界面程序MyScomTest。该工具能够便捷地展示接收到的数据,并支持将数据可视化为图表,方便用户进行数据分析和调试工作。
分享我的串口接收GUI程序——MyScomTest,该软件可以实时显示数据图像。设计这个软件的初衷源于阅读了飞哥编写的《串口收发助手》程序,在其第二版书中的第512页末端提出了一个需求:假设计算机与某硬件设备通过串口相连,设备每隔固定时间(我这里设定为5毫秒)通过串口发送数据给计算机。每一帧的数据包含两字节的帧头(0x55和0xAA),以及最多20个数据字节。
飞哥建议使用串口定时器定期读取的方法,并表示这种方法“经实践证明是可行的”。我花费了大量时间实现了他的方案,虽然过程艰辛,但现在已经完成初步调试。尽管代码可能不够整洁,但我用单片机作为上位机发送串口数据,每帧包含20个数据字节以及两个起始标志(5毫秒间隔)。这样做的意义在于实时观察采样数据的重要性,在我参加的智能车比赛中就深刻体会到这一点:上位机调试时查看数据曲线至关重要,否则无法了解参数变化情况。
简单描述一下程序的工作原理:STM32底层A/D转换器进行采样,并通过DMA连接到片上的USART接口定时发送采集的数据至上位机。具体来说,我使用一个通道的AD转换功能(12位精度),参考电压为3.3V,对同一个传感器连续采样十次共得到20个数据点。这些数据被传送到MATLAB串口接收端,并通过矩阵运算计算平均值后绘制到axes图上。
由于是定时器触发的数据读取函数,每次接收到的帧可能有以下几种情况:1)完整的一帧;2)一帧未满(少于20个字节),需等待下一周期补充数据。为确保不丢失任何数据,在处理这些中断时我编写了额外代码来恢复被打断的部分。
虽然程序中仍有未知原因导致的BUG,但我相信在严格的数据观察场景下这种细致入微的做法是有意义的。由于表达能力有限,可能有部分读者难以理解这个小作品或遇到运行问题,请随时提问。使用方法:将STM32工程中的USER文件导入到MATLAB GUI serial_communication2中,“打开串口”即可查看数据(有时可能会出现错误提示,关闭后重新执行GUI可以解决问题)。
全部评论 (0)


