20260111:解决了连接MQTT平台的bug(sprintf数组越界bug和参数类型错误)
This commit is contained in:
@@ -143,26 +143,45 @@ bool bEsp8266JoinAp ( char * pcSsid, char * pcPassWord )
|
||||
/**
|
||||
* @brief bEsp8266MqttInit
|
||||
* @note ESP8266ģ<36><C4A3>MQTT<54><54>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>á<EFBFBD>
|
||||
* @param pcMqttUser<65><72>MQTT<54>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
* @param pcMqttPwd<EFBFBD><EFBFBD>MQTT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param pcMqttCliId<49><64>MQTT<54>ͻ<EFBFBD><CDBB><EFBFBD>ID<49>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
* @param pcMqttUserName<EFBFBD><EFBFBD>MQTT<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param pcMqttPassword<EFBFBD><EFBFBD>MQTT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param pcMqttClientId<EFBFBD><EFBFBD>MQTT<EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD>ID<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param pcMqttServerIp<49><70>MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
* @param usMqttServerPort<72><74>MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿ں<CBBF>
|
||||
* @retval 1<><31><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD>
|
||||
* @retval 0<><30><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ʧ<EFBFBD><CAA7>
|
||||
*/
|
||||
bool bEsp8266MqttInit ( char * pcMqttUser, char * pcMqttPwd, char * pcMqttCliId, char * pcMqttServerIp, char * usMqttServerPort )
|
||||
bool bEsp8266MqttInit ( char * pcMqttUserName, char * pcMqttPassword, char * pcMqttClientId,
|
||||
char * pcMqttServerIp, uint16_t usMqttServerPort,
|
||||
char * pcMqttSubscribeTopic )
|
||||
{
|
||||
char cCmd [200];
|
||||
sprintf ( cCmd, "AT+MQTTUSERCFG=0,1,\"NULL\",\"%s\",\"%s\",0,0,\"\"", pcMqttUser, pcMqttPwd );
|
||||
if ( ! bEsp8266Command ( cCmd, "OK", NULL, 1500 ) )
|
||||
char cCmd[512] = {0};
|
||||
|
||||
// 1. <20><><EFBFBD><EFBFBD>MQTT<54>û<EFBFBD><C3BB><EFBFBD>Ϣ
|
||||
snprintf(cCmd, sizeof(cCmd), "AT+MQTTUSERCFG=0,1,\"NULL\",\"%s\",\"%s\",0,0,\"\"",
|
||||
pcMqttUserName, pcMqttPassword);
|
||||
if (!bEsp8266Command(cCmd, "OK", NULL, 2000))
|
||||
return false;
|
||||
sprintf ( cCmd, "AT+MQTTCLIENTID=0,\"%s\"", pcMqttCliId );
|
||||
if ( ! bEsp8266Command ( cCmd, "OK", NULL, 1500 ) )
|
||||
|
||||
// 2. <20><><EFBFBD>ÿͻ<C3BF><CDBB><EFBFBD>ID
|
||||
memset(cCmd, 0, sizeof(cCmd));
|
||||
snprintf(cCmd, sizeof(cCmd), "AT+MQTTCLIENTID=0,\"%s\"", pcMqttClientId);
|
||||
if (!bEsp8266Command(cCmd, "OK", NULL, 2000))
|
||||
return false;
|
||||
sprintf ( cCmd, "AT+MQTTCONN=0,\"%s\",%s,1", pcMqttServerIp, usMqttServerPort );
|
||||
if ( ! bEsp8266Command ( cCmd, "OK", NULL, 2000 ) )
|
||||
|
||||
// 3. <20><><EFBFBD>ӵ<EFBFBD>MQTT<54><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
memset(cCmd, 0, sizeof(cCmd));
|
||||
snprintf(cCmd, sizeof(cCmd), "AT+MQTTCONN=0,\"%s\",%u,1",
|
||||
pcMqttServerIp, usMqttServerPort);
|
||||
if (!bEsp8266Command(cCmd, "OK", NULL, 5000))
|
||||
return false;
|
||||
|
||||
// 4. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
memset(cCmd, 0, sizeof(cCmd));
|
||||
snprintf(cCmd, sizeof(cCmd), "AT+MQTTSUB=0,\"%s\",1", pcMqttSubscribeTopic);
|
||||
if (!bEsp8266Command(cCmd, "OK", NULL, 2000))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -349,7 +368,7 @@ uint8_t ucEsp8266InquireApIp ( char * pcApIp, uint8_t ucArrayLength )
|
||||
*/
|
||||
bool bEsp8266UnvarnishSend ( void )
|
||||
{
|
||||
bEsp8266Command ( "AT+CIPMODE=1", "OK", 0, 500 );
|
||||
return ( bEsp8266Command ( "AT+CIPMODE=1", "OK", 0, 500 ) );
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user