MQTTpublish再次分析

【W5500W】socket recv :  
34 37 00 33 
2F 64 6F 77 6E 2F 66 63 37 65 32 37 31 33 33 32 66 37 66 36 65 36 38 34 64 35 63 32 36 34 39 65 36 31 39 62 61 62 
2F 44 43 32 43 32 36 30 30 32 31 45 43 
00 01 
30 50 00 33 
2F 64 6F 77 6E 2F 66 63 37 65 32 37 31 33 33 32 66 37 66 36 65 36 38 34 64 35 63 32 36 34 39 65 36 31 39 62 61 62 
2F 44 43 32 43 32 36 30 30 32 31 45 43 
00 02 00 01 00 00 80 C1 43 E9 F2 9C BA F4 BB 46 52 9D 80 24 92 BC 71 89 1C 38 AD 

钩子函数解析:
[#][MQTT协议学习RX]Message arrived on topicName /down/fc7e271332f7f6e684d5c2649e619bab/DC2C260021EC  前面topicName长度data->topicName->lenstring.data=0X33
[#][MQTT协议学习RX]负载长度data->message->payloadlen=0X00
[#][MQTT协议学习RX]负载内容payload: :  []


[#][MQTT协议学习RX]Message arrived on topicName /down/fc7e271332f7f6e684d5c2649e619bab/DC2C260021EC  前面topicName长度data->topicName->lenstring.data=0X33
[#][MQTT协议学习RX]负载长度data->message->payloadlen=0X1B
[#][MQTT协议学习RX]负载内容payload: :  [00 02 00 01 00 00 80 C1 43 E9 F2 9C BA F4 BB 46 52 9D 80 24 92 BC 71 89 1C 38 AD ]
解析
		msgType = p.payload[0];
		sqeId = p.payload[1]|(p.payload[2]<<8);
		serType = p.payload[3]|(p.payload[4]<<8);
		cmd = p.payload[5]|(p.payload[6]<<8);
所以
[#]msg type = 0 , seq id = 2 , server type = 1 , cmd = 8000 

个人再次分析
首先MQTT状态机任务必须20MS一次的跑才能解析处理-因为您能看到上面W5500收到的报文是2个报文混在一起的
然后你看报文2是很明白的30 50 00 33 意思的0X30标识publish 0X50标识报文长度
这是2个固定头 然后00 33是可变头标识0X0033就是topicname长度
已减去就得到了body
继续分析报文1为什么是空的呢?
它固定头是0X34所以最后的00 01不是body!它0X34和0X30不同 它00 01是隶属于可变头的 body为空!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值