c语言之关于AT指令连接MQTT时如何区分连接失败和中途失败
链接mqtt AT指令:
"AT+MQTTCONN=0,"172.11.1.1",1883,0
及时连接失败是也会返回OK,但是也会返回+MQTTDISCONNECTED:
关键信息,所以要区分连接失败还是中途失败可以在urc回调中处理,如果当前是发送指令是连接服务器,就不上报给应用,避免应用一直重连。
void mqtt_disconnect(struct at_client* client, const char* data, rt_size_t size)
{
int cmd_size = 0;
char *cmd = at_get_last_cmd(&cmd_size);
if (strncmp(cmd, "AT+MQTTCONN=", strlen("AT+MQTTCONN=")) == 0) {
//连接断开
printf("wifi mqtt connect error\r\n");
}
else {
//中途断开
printf( "[%s] -%s- Line=%d:mqtt id:%d disconnected\r\n", filename(__FILE__), __FUNCTION__, __LINE__, atoi(data + strlen("+MQTTDISCONNECTED:")));
}
}