vesperW · 3月24日

一个超赞的开源串口虚拟示波器项目,玩起来!

大家好,我是麦鸽,趁着今天休息,给大家推荐一个开源的串口虚拟示波器项目,可以实时显示串口传输的数据,非常直观,当然也可以做二次开发,非常的灵活。

基本功能

image.png

双击放大

项目地址:https://github.com/CieNTi/serial_port_plotter

这是一个Windows应用程序,可显示来自串行端口的实时数据,使用QtQCustomPlot库构建。

具体有哪些功能:

  • 范围无限制:新的通道数据会创建一个新图形并使用它;
  • 无数据点限制:保留所有接收到的数据,以便用户可以浏览旧数据;
  • 无波特率限制:经过测试高达912600 bps
  • 使用鼠标进行缩放和拖动(滚轮或单击,仅限于 X 轴);
  • 在图上移动会在状态栏中显示图形的 X 和 Y 值;
  • 频道名称图例(双击进行修改);
  • 频道选择(点击图例文字);
  • 支持正负整数和浮点数;
  • 可以输出图像保存为PNG
  • 可以到处数据为CSV
  • 自动缩放到可见图;

Image

使用比较简单,在软件布局中大致有三个地方经常使用:

  1. 串口的基本配置(配置串口通讯的参数);
  2. 串口数据图形显示区(用于显示波形);
  3. 串口数据显示区域(串口的数据基本都会显示出来);

如何使用程序?

只需通过串行端口发送整数数据即可。

该应用程序期望使用某种格式,以便可以区分值。

发送的数据都必须以$开头,并以;结尾 (分号)和内部的整数需要用空格分隔。

如何显示波形?

这个软件上传数据非常简单,每一帧数据保持格式如下:

printf("$%d %d;",data1,data2);

根据要显示的数据量,可以调整数据点的数量。

例如,如果每 10 毫秒(100 Hz)从 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;
    /* USER CODE END WHILE */
    printf("$%d %d %d;",data_1,data_2,data_3);
    //printf("hello\n");

    /* USER CODE BEGIN 3 */
}

最终结果如下,基本符合要求;

Image

双击放大

进行二次开发

该项目是在QtCreator环境下开发的,需要在 PC 上搭建 Qt 的开发环境,安装QtCreator之后,打开项目目录下的.pro的工程文件即可,然后就可以随意添加自己需要加入的功能,源码目录如下图所示;

Image

源码目录结构

下面是我以前项目中加入的一些控制指令,还有读写 Flash 的操作,具体如下所示;

Image

二次开发后的项目

image.png

END

作者:麦鸽
来源:小麦大叔

推荐阅读

欢迎大家点赞留言,更多 Arm 技术文章动态请关注极术社区嵌入式客栈专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

推荐阅读
关注数
2914
内容数
341
分享一些在嵌入式应用开发方面的浅见,广交朋友
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息