H3C归一化报文格式

报文结构

header Payload CRC
变长 NByte 2Byte
FrameCtrl FirmTopic AddrLen Addr MsgType DataLen Seq Packet
2Byte 4Byte 1Byte 变长 1Byte 2Byte 1Byte 1Byte

FrameCtrl字段定义如下:

Bit15-Bit14 Bit13-Bit8 Bit7 Bit6-Bit4 Bit3 Bit2 Bit1 Bit0
Frame Version Reserve EncryptEnabled EncryptMethod Acked NeedCRC NeedSeq Frame Pending

各字段定义如下:

Ø Frame Version: 协议版本号,本协议为0b01

Ø Reserve: 保留位,全0

Ø Encrypt Enabled: 是否加密, 0b0: 明文, 0b1: payload加密,

Ø Encrypt Method: 加密方式, 0b0: 不加密, 0b1: h3c加密, 0b2: MD5加密方法

Ø NeedAck: 是否需要应答, 0b0: 无需应答, 0b1: 需要应答

Ø NeedCRC: 是否有校验, 0b0:报文尾部没有CRC字段, 0b1:报文尾部有2字节CRC

Ø NeedSeq: 是否有报文序列号, 0b0: 无Seq, 0b1: 有报文序列号,header会有1Byte信息标识报文序列号

Ø Frame Pending: 是否分片,分片报文,header尾部会3Byte的分片信息(非分片报文没有分片信息)

Ø FirmTopic: 厂商模板标识,在平台申请后写入

Ø AddrLen: 设备标识长度

Ø Addr: 设备地址信息

Ø MsgType: 表示报文通用类型,定义可以参考下面表格:

MsgType定义:
msgType 描述
0x81 数据上报
0xF1 平台通用应答
0x84 入网join
0x8D 保活
0x01 获取日志
0x30 下行配置报文
0x36 采用间隔
0x32 重启

Ø DataLen: 报文长度

Ø Seq: 为报文的序列号,依次递增.

*注:设备在回复时使用和服务器下发报文相同的seq即可。

Ø FragID: 分片报文ID, 报文分片时有此字段

*注:默认都使用非分片报文,无此字段,设备主动发送报文时seq使用 0x00 。

Ø Payload定义: 由用户自行定义报文格式

Ø CRC校验: CRC校验码长度为2Byte,校验范围:整个报文(frameCtrl到data)。

校验计算方法:(javascript语言)

function CRC(dataBuf){
    var temp = 0;
    var crc = 0xffff;
    for(var i=0;  i<dataBuf.length;  i++){
        crc ^= parseInt(dataBuf[i].toString());
        for (var j=0;  j<8;  j++){
            temp = 1 & crc;
            crc >>= 1;
            if (temp == 1){
                crc ^= 0xa001;
            }
        }
    }
    crc ^= 0xffff;
    crc = ('0000' + crc.toString(16)).substr(-4);
    return crc;
}
© H3C IoT all right reserved,powered by Gitbook更新时间: 2021-11-24 17:53:45

results matching ""

    No results matching ""