mqtt的onWIFI32事件
void app.onWIFI32(int m){
str s;
int msgnum;
msgnum=wifi_getinfo(2);
/* 说明,正常时候建议使用 super.onWIFI32(m); 来处理mqtt等业务
让mqtt 处理代码放在appbase中,在任何页面都可以相应mqtt消息;
本例子中为防止mqtt干扰,因此放在页面处理中
*/
if (m==7){
//mqtt
if (msgnum==1){
//connect;
m1.text=m1.text+"服务器已连接\r\n";
}
if (msgnum==6){
//收到消息
str topic;
str data;
int qos;
topic=wifi_getinfo(23);
data=wifi_getinfo(24);
qos=wifi_getinfo(4);
//---在此书写收到的mqtt消息处理
s="topic:"+topic+"\r\ndata:"+data+"\r\nqos:"+qos+"\r\n";
m1.text=m1.text+s;
m1.rebuild();
}
}
}
由上面的onWIFI32事件代码我们可以看到 mqtt所有的消息事件都是在m==7 这个条件组中,而msgnum中将代表mqtt的各个事件,详见下表:
| msgnum | 内容 | 描述 |
|---|---|---|
| 1 | MQTT_EVENT_CONNECTED | 服务器已连接 |
| 2 | MQTT_EVENT_DISCONNECTED | 服务器已断开 |
| 3 | MQTT_EVENT_SUBSCRIBED | 订阅已成功(开启接收消息) |
| 4 | MQTT_EVENT_UNSUBSCRIBED | 订阅已取消 |
| 5 | MQTT_EVENT_PUBLISHED | 消息已发布(发送消息成功) |
| 6 | MQTT_EVENT_DATA | 接受到消息 |
| 7 | MQTT_EVENT_ERROR | 出现错误 |
备注
- wifi_getinfo(23); 获取订阅topic
- wifi_getinfo(3); 获取订阅msgid,一般无用,主要用于区分同内容的消息是否是重复消息
- wifi_getinfo(24);获取消息内容
- wifi_getinfo(4);获取消息的qos