单片机:AT32F435
使用RT-T操作系统,在RT-T官网上拉取相关软件包,软件包都有相关介绍,下边是RT-T相关网址:软件包 - RT-Thread物联网操作系统
现象描述:设备连接MQTT服务器,订阅9/1/55主题,用mqttx软件每隔30s往9/1/55主题发送modbus数据(HEX)控制继电器,设备频繁掉线上线;
原因:mqtt库框架,mqtt订阅主题接收到数据,mqtt心跳时间清零,发布数据周期为30s,导致心跳周期一直清零,没有给服务器发送心跳,从而掉线;
解决:
方法1.设备收到订阅数据,返回确认帧;
方法2.修改mqtt心跳框架,在收到订阅数据后mqtt心跳时间不清0;
(我选择使用方法2,在mqttpacket_readpacket()函数中,屏蔽"c->tick_ping = rt_tick_get();");