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:")));
	}
}
posted @ 2025-08-13 16:46  我不是萧海哇~~~  阅读(29)  评论(0)    收藏  举报