单窗口绘图(EasyHex协议)
单窗口绘图(EasyHex协议)
适用场合
EasyHex协议使用十六进制传输,支持多种不同的协议,为了确保足够简单,没有使用校验,因此适用于对传输效率有一定要求,但是可以接收一定程度数据乱码的场合
协议介绍
EasyHex协议由两部分组成:数据 + 帧尾
以下是不同数据类型所对应的帧尾:
| 数据类型 | 帧尾 | | --- | --- | | UINT8 | 0xFF | | --- | --- | | UINT16 | 0xFFFF | | --- | --- | | UINT32 | 0xFFFFFFFF | | --- | --- | | INT8 | 0x80 | | --- | --- | | INT16 | 0x8000 | | --- | --- | | INT32 | 0x80000000 | | --- | --- | | 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协议]]