WHAT PAINT SEND IS [CHR]0 ? 4 / s y s / a 1 a c E b m 1 T O a / A g a i n A o s / t h i n g / s e r v i c e / p r o p e r t y / s e t { " m e t h o d " : " t h i n g . s e r v i c e . p r o p e r t y . s e t " , " i d " : " 3 9 0 0 2 8 9 7 6 " , " p a r a m s " : { " L i g h t S w i t c h " : 0 } , " v e r s i o n " : " 1 . 0 . 0 " }
WHAT PAINT SEND IS [HEX]30 9B 01 00 34 2F 73 79 73 2F 61 31 61 63 45 62 6D 31 54 4F 61 2F 41 67 61 69 6E 41 6F 73 2F 74 68 69 6E 67 2F 73 65 72 76 69 63 65 2F 70 72 6F 70 65 72 74 79 2F 73 65 74 7B 22 6D 65 74 68 6F 64 22 3A 22 74 68 69 6E 67 2E 73 65 72 76 69 63 65 2E 70 72 6F 70 65 72 74 79 2E 73 65 74 22 2C 22 69 64 22 3A 22 33 39 30 30 32 38 39 37 36 22 2C 22 70 61 72 61 6D 73 22 3A 7B 22 4C 69 67 68 74 53 77 69 74 63 68 22 3A 30 7D 2C 22 76 65 72 73 69 6F 6E 22 3A 22 31 2E 30 2E 30 22 7D
WHAT PAINT SEND IS [STR]0?
第一步整理乱码:
固定头:3个HEX
0X30标识-->PUBLISH 3 两个方向都允许 发布消息
0X9B 0X01标识剩余长度-->1*128 + (0X9B-128)=0X9B=155
确实 下面 就是155个HEX
00 34 2F 73 79 73 2F 61 31 61
63 45 62 6D 31 54 4F 61 2F 41
67 61 69 6E 41 6F 73 2F 74 68
69 6E 67 2F 73 65 72 76 69 63
65 2F 70 72 6F 70 65 72 74 79
2F 73 65 74 7B 22 6D 65 74 68
6F 64 22 3A 22 74 68 69 6E 67
2E 73 65 72 76 69 63 65 2E 70
72 6F 70 65 72 74 79 2E 73 65
74 22 2C 22 69 64 22 3A 22 33
39 30 30 32 38 39 37 36 22 2C
22 70 61 72 61 6D 73 22 3A 7B
22 4C 69 67 68 74 53 77 69 74
63 68 22 3A 30 7D 2C 22 76 65
72 73 69 6F 6E 22 3A 22 31 2E
30 2E 30 22 7D
可变头:2个HEX
0X00基本没有意义反而把%s截至了 弄巧不成!!!! 需要修改一下printf("%s\r\n",raw+5)
0X34不知道
回答:
0X00--Length MSB
0X34--Length LSB
所以0X0034 = 52标识的是主题长度!!! 他是QS0的 就没有那个报文标识符
确实数一数下面的主题 长度就是52
/sys/a1acEbm1TOa/AgainAos/thing/service/property/set
其实我们已经知道了 固定头已经说了后面有155个HEX 可变头又说了后面有52个HEX是主题 那么。。哈哈在后面的就是负载长度啦
负载:
后面的全部是负载呀!
/sys/a1acEbm1TOa/AgainAos/thing/service/property/set{"method":"thing.service.property.set","id":"390141300","params":{"LightSwitch":0},"version":"1.0.0"}
https://mcxiaoke.gitbooks.io/mqtt-cn/content/mqtt/0303-PUBLISH.html