串口数据曲线图绘制软件 SerialPortPlot

方便调试传感器输出做的一个软件,可以把串口的数据绘制曲线到一张图表上…

显示int16数据类型的曲线。支持4个图表16条曲线。异步显示, 刷新速率只与设置的速率相关。

数据说明:

例如我要传送的int为

int x = 0x0102;
int y = 0xFFFF;
int z = 0x5151;

单片机则发送到串口的数据为

0xA0 //包头
0x22 //x 一个字节拆分为两个字节发送 低四位先发送
0x00
0x11 //小端 低位在低地址
0x00
0xFF//y
0xFF
0xFF
0xFF
0X11//z
0x55
0x11
0X55 //这个例子是显示一个图表的3条曲线 如需更多则在包尾前继续发送数据
0x0A //包尾

以上显示在第一个图表的x,y,z 三条曲线
需要注意的是不显示的曲线也要在其对应的位置填充4个字节,例如我要第一个图表的X,Y,和A绘制但Z不绘制,那就应该在包中Z的数据位置发送00 00 00 00

点击下载:SerialPortPlot

串口数据曲线图绘制软件 SerialPortPlot》上有5个想法

  1. hi,打扰了,
    对于你的协议的解释有点没看明白,其一,例子中实际传送的数据和目的数据对应不上,所以看不出来具体协议;其二,四个图标其它三个怎么操作呢?期待你的解答,谢谢。

    • 表达能力有点糟糕…抱歉…

      1、int x = 0×0102; 小端模式在内存里就是 0x02 0x01,每个字节分两个字节发送,低四位先发,高四位后发,那就是先发0x02中的0x2,再发0x02中的0x0,发送时高低四位要一样,所以0x2发送的数据是0x22,如此类推int x = 0×0102; 发送的数据依次就是0x22 0x00 0x11 0x00。

      2、在一个包里四个int数据为一组,紧接着包头标识的4个int数据会显示在第一个图表里,第5个int数据就会显示在第二个图表里,如此类推。

      例如包中内容依次为(从左到右,从上到下)
      0xA0 //包头标识
      0x22 0x00 0x11 0x00 //第1个int数 0x0102 将显示在第一个图表的x轴
      0x22 0x44 0x11 0x33 //第2个int数 0x3142 将显示在第一个图表的y轴
      0x55 0x88 0x11 0x66 //第3个int数 0x6185 将显示在第一个图表的z轴
      0x22 0x44 0x55 0x00 //第4个int数 0x0542 将显示在第一个图表的a轴

      0x22 0x00 0x11 0x00 //第5个int数 0x0102 将显示在第二个图表的x轴
      0x22 0x44 0x11 0x33 //第6个int数 0x3142 将显示在第二个图表的y轴
      0x22 0x00 0x11 0x00 //第7个int数 0x0102 将显示在第二个图表的z轴
      0x22 0x00 0x11 0x00 //第8个int数 0x0102 将显示在第二个图表的a轴

      0x22 0x00 0x11 0x00 //第9个int数 0x0102 将显示在第三个图表的x轴
      0x22 0x44 0x11 0x33 //第10个int数 0x3142 将显示在第三个图表的y轴
      0x22 0x00 0x11 0x00 //第11个int数 0x0102 将显示在第三个图表的z轴
      0x22 0x00 0x11 0x00 //第12个int数 0x0102 将显示在第三个图表的a轴

      0x22 0x00 0x11 0x00 //第13个int数 0x0102 将显示在第四个图表的x轴
      0x22 0x44 0x11 0x33 //第14个int数 0x3142 将显示在第四个图表的y轴
      0x22 0x00 0x11 0x00 //第15个int数 0x0102 将显示在第四个图表的z轴
      0x22 0x00 0x11 0x00 //第16个int数 0x0102 将显示在第四个图表的a轴
      0x0A //包尾标识

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注