以下是使用at组件登录OneNET后,订阅报文时,打印的RAW数据:
[D/AT] sendline: 0000-0020: 82 0C 00 01 00 07 73 65 74 74 69 6E 67 01 ......setting.
[D/AT] recvline: 0000-0020: 20 0D 0A ..
[D/AT] recvline: 0000-0020: 53 45 4E 44 20 4F 4B 0D 0A SEND OK..
[D/AT] recvline: 0000-0020: 0D 0A ..
[D/AT] recvline: 0000-0020: 2B 51 49 55 52 43 3A 20 22 72 65 63 76 22 2C 30 2C 35 0D 0A +QIURC: "recv",0,5..
[D/AT] urc_recv: 0000-0020: 90 03 00 01 01 ..... .....
订阅过程中,实际发送的数据包是82 0C 00 01 00 07 73 65 74 74 69 6E 67 01
,其中:
82 0c是固定头:82代表订阅QOS1质量的报文,0C代表后面内容长度为12字节;
00 01是可变消息头:代表packid;
00 07 73 65 74 74 69 6E 67 01是有效载荷:00 07代表主题长度,73 65 74 74 69 6E 67
代表主题为setting,最后的01再次表示为QOS1质量的主题。
收到的回复是90 03 00 01 01
,其中:
90 03是固定头:90代表订阅ACK报文,03代表后面的数据长度为3;
00 01是可变消息头:代表packid;
01是返回值,代表QOS1主题成功。
0x00 成功(granted qos = 0)
0x01 成功(granted qos = 1)
0x02 成功(granted qos = 2)
0x80 失败
当收到订阅的报文时,有如下数据:
[D/AT] recvline: 0000-0020: 0D 0A ..
[D/AT] recvline: 0000-0020: 2B 51 49 55 52 43 3A 20 22 72 65 63 76 22 2C 30 2C 31 36 0D 0A +QIURC: "recv",0,16..
[D/AT] urc_recv: 0000-0020: 30 0E 00 07 73 65 74 74 69 6E 67 48 65 6C 6C 6F 0...settingHello
[D/AT] recvline: 0000-0020: 0D 0A ..
实际数据包是30 0E 00 07 73 65 74 74 69 6E 67 48 65 6C 6C 6F
,其中:
30 0E
是固定头:30代表发布消息,虽然是设备订阅,但对于服务器来说是发布;0E代表后面数据长度为14;
00 07 73 65 74 74 69 6E 67
是可变消息头:00 07是主题长度,主题名称为setting;
48 65 6C 6C 6F
是有效载荷,内容为Hello