纸飞机调试助手文档 ComAssistant Docs

单窗口绘图(EasyHex协议)

单窗口绘图(EasyHex协议)

适用场合

EasyHex协议使用十六进制传输,支持多种不同的协议,为了确保足够简单,没有使用校验,因此适用于对传输效率有一定要求,但是可以接收一定程度数据乱码的场合

协议介绍

EasyHex协议由两部分组成:数据 + 帧尾

  • 数据部分就是你要绘制曲线的十六进制数据内容,支持INT8/UINT8、INT16/UINT16、INT32/UINT32、FLOAT32等8种数据类型。
  • 帧尾用来表示一个数据包的结束,是一个固定的十六进制常量,不同的数据类型对应不同的帧尾
  • 以下是不同数据类型所对应的帧尾:

    | 数据类型 | 帧尾 | | --- | --- | | UINT8 | 0xFF | | --- | --- | | UINT16 | 0xFFFF | | --- | --- | | UINT32 | 0xFFFFFFFF | | --- | --- | | INT8 | 0x80 | | --- | --- | | INT16 | 0x8000 | | --- | --- | | INT32 | 0x80000000 | | --- | --- | | FLOAT32 | 0xFFFFFFFF | | --- | --- |

    由于使用十六进制传输,数据和帧尾都需要特别关注字节序(大小端)的问题,否则解析一定出错。

    特别注意:受协议限制,帧尾会占用一个数值,导致实际可表示的数据范围会变小。举例:

  • UINT8可以表示0 ~ 256的数据,但是0xFF(256)被帧尾占用,所以UINT8只能表示0 ~ 255的数据范围,如果你的数据出现了256,将会被软件误识别为帧尾导致解析出错,此时您应该选用UINT16的数据类型。
  • 类似地,INT8受这个限制,0x80(-128)被帧尾占用,所以只能表示 -127 ~ 127的数据范围
  • FLOAT32协议比较特殊,0xFFFFFFFF在浮点标准里属于一个非法的数据,所以不会受影响。
  • 绘图演示

    首先我们要确保软件选择了正确的协议,打开数据可视化,并打开串口 在这里插入图片描述

    假设,下位机有2个INT16类型的数据要绘图,数据字节序是小端发送的。那么我们应该按照这些信息设置好纸飞机的参数 在这里插入图片描述 继续假设两个数据分别为300(0x012C)和500(0x01F4),那么小端形式下正确的数据流应该是

    | 数据1 | 数据2 | 帧尾 | | --- | --- | --- | | 0x2C 0x01 | 0xF4 0x01 | 0x00 0x80 | | --- | --- | --- |

    绘图结果应该如下 在这里插入图片描述 如果是大端模式,则数据流应该如下

    | 数据1 | 数据2 | 帧尾 | | --- | --- | --- | | 0x01 0x2C | 0x01 0xF4 | 0x80 0x00 | | --- | --- | --- |

    在这里插入图片描述 对于其他的数据类型,只需要确认好字节序,并选择好对应的数据类型和帧尾即可。

    多窗口绘图

    EasyHex协议不支持多窗口绘图,如有需要,请参阅 [[09-多窗口绘图-十六进制数据-modbusrtu协议]]