微 网 高 通

二进制的通讯格式
来源: | 作者:微网高通 | 发布时间: 2025-04-23 | 29 次浏览 | 分享到:

1.1 二进制流接口格式


指令

平面化表示与结构化表示的对应关系

字节

参数

数值

说明

1

m_iHeader

0XAA

报文的同步字节,用于检测报文的起始位置,常量0XAA

2

m_iOpCode


该报文的命令字,取值范围 0X00-0XFF

3

m_iValueA


报文命令字的**个参数,具体意义取决于m_iOpCode

4

m_iValueB


报文命令字的第二个参数,具体意义取决于m_iOpCode

5

m_iValueC


报文命令字的第三个参数,具体意义取决于m_iOpCode

6

m_iValueD


报文命令字的第四个参数,具体意义取决与m_iOpCode

7

m_iAmount


扩展部分的数据报文m_pBuffer的长度,取值范围0X00-0XF5

8

m_iCRCode.MSB

0X##

整个报文的16位CRC校验和的高字节

9

m_iCRCode.LSB

0X##

整个报文的16位CRC校验和的低字节

10

m_pBuffer


扩展部分的数据报文,最多可容纳245(0XF5)个字节

 

备注-1

CRC计算从**个字节开始m_iHeader,至m_pBuffer的最后一个字节结束;计算之前需要将CRC高低字节全部清零,然后将计算结果写到 CRC 的位置,保持高字节在前,低字节在后

备注-2

请求命令的应答命令,其命令字 = 请求命令 + 0X80

备注-3

报文的同步字节 m_iHeader 是一个固定的常数,取值 0XAA

备注-4

如果命令没有用到参数,默认将参数 m_iValueA,m_iValueB, m_iValueC, m_iValueD 填写为0X00

备注-5

如果命令没有扩展部分,则m_pBuffer 区域不要填写,同时将 m_iAmount 字段填写为 0X00

示例-1

请求命令:AA 26 00 00 00 00 01 F8 24 01

应答命令:AA A6 00 00 00 00 02 F3 BB 01 00



1.2  二进制流接口 CRC计算方式

    1. 多项式:f(X)=1+X2+X15+X16,该多项式和工业标准的Modbus-RTU完全一样

    2. 发送端CRC计算:先把m_iCRCode位置清零,然后计算整个报文(从**个字节m_iHeader开始至m_pBuffer的最后一个字节结束)的CRC数据,注意高字节在前(MSB)

    3. 接收端CRC验算:首先从报文中读取CRC,然后将报文的m_iCRCode清零,计算出整个报文(同上)的CRC,比较这两个CRC验证报文的正确性。

    4. 应答命令字:请求命令字 + 0X80

    5. CRC算法:工业标准CRC-16、CRC-32,请参考:“CRC-16查表算法”和“CRC-32查表算法”。

       CRC的计算可以借助如下的工具软件—WiMi-net无线自组网管理平台


WiMi-net无线自组网管理平台软件有两种显示模式,上图中红色框住的部分是结构化显示模式,绿色部分是平面显示的模式。为了测试指令是否正确,可以将平面化的指令复制出来,在串口调试助手中进行测试,看看是否有回应。如果可以收到应答,那么说明CRC的计算是正确的。

采用串口助手测试的时候,切记要正确设置数据的格式:

    1. 发送需要采用十六进制(勾选“HEX发送”)

    2. 接收显示需要采用十六进制(勾选“HEX显示”)

1.3  名词术语和缩写简记符

    1. MSB:Most Significant Byte,双字节变量的高字节 ,即B8-B15

    2. LSB:Least Significant Byte,双字节变量的低字节,即B0-B7

    3. Addr:无线节点的16位网络地址

    4. MAC:无线节点的64位MAC地址

1.4   32位系统上的编程注意事项

    1. 如果采用C语言的结构体访问内存数据,需要调整到单字节边界(默认为4字节边界)

    2. 系统的多字节变量默认是Big-Endian,也就是大端在前,ARM和X86都是Little-Endian,需要进行字节顺序转换

    3. CRC-16的计算多项式和Modbus完全一样,但是其位置不一样,作用范围也不一样

    4. CRC-16在计算之前需要采用默认的数值0X00作为填充。

1.5  关于缺省参数和配置

    1. WiMi-net基于自组网技术设计,所有的站点,包括主站,从站,和中继,都有默认的出厂配置参数,通常情况下无需人工配置

    2. 从站和中继的网络(PAN)标示可以通过对码的方式予以获取

    3. 从站和中继节点的工作频带,信道,网络路径,时槽等参数会通过自组网机制自动获取,不需要用户配置