大家好,我是小麦,趁着今天休假,给大家推荐一个开源的串口虚拟示波器项目,可以实时显示串口传输的数据,非常直观,当然也可以做二次开发,非常的灵活。
基本功能
项目地址:https://github.com/CieNTi/serial_port_plotter
这是一个Windows应用程序,可显示来自串行端口的实时数据,使用Qt和QCustomPlot库构建。
具体有哪些功能:
范围无限制:新的通道数据会创建一个新图形并使用它;
无数据点限制:保留所有接收到的数据,以便用户可以浏览旧数据;
无波特率限制:经过测试高达912600bps;
使用鼠标进行缩放和拖动(滚轮或单击,仅限于X轴);
在图上移动会在状态栏中显示图形的X和Y值;
频道名称图例(双击进行修改);
频道选择(点击图例文字);
支持正负整数和浮点数;
可以输出图像保存为PNG;
可以到处数据为CSV;
自动缩放到可见图;
使用比较简单,在软件布局中大致有三个地方经常使用:
串口的基本配置(配置串口通讯的参数);
串口数据图形显示区(用于显示波形);
串口数据显示区域(串口的数据基本都会显示出来);
如何使用程序?
只需通过串行端口发送整数数据即可。
该应用程序期望使用某种格式,以便可以区分值。
发送的数据都必须以$开头,并以;结尾(分号)和内部的整数需要用空格分隔。
如何显示波形?
这个软件上传数据非常简单,每一帧数据保持格式如下:
printf("$%d%d;",data1,data2);
根据要显示的数据量,可以调整数据点的数量。
例如,如果每10毫秒(100Hz)从mbed的串行端口发送一次数据,并且绘图仪设置为显示500点,它将包含5秒钟数据的信息。
支持整数和浮点数(单精度和双精度)。
测试
简单测试一下这个软件,需要向PC发送数据,具体按照帧格式printf("$%d%d;",data1,data2)即可;
本文基于STM32F767-Nucleo-144的开发板,通过STM32CubeIDE进行开发,连续从单片机往PC发送三个数据;
while(1)
{
data_1++;
data_2++;
angle+=0.01;
data_sin=sin(angle);
data_3=data_sin*128+128;
/*USERCODEENDWHILE*/
printf("$%d%d%d;",data_1,data_2,data_3);
//printf("hello\n");
/*USERCODEBEGIN3*/
}
最终结果如下,基本符合要求;
进行二次开发
该项目是在QtCreator环境下开发的,需要在PC上搭建Qt的开发环境,安装QtCreator之后,打开项目目录下的.pro的工程文件即可,然后就可以随意添加自己需要加入的功能,源码目录如下图所示;
下面是我以前项目中加入的一些控制指令,还有读写Flash的操作,具体如下所示;