OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6133|回复: 0

MQTT指令AT+MQTTCLIENTID,AT+MQTTCONN=0,一直失败

[复制链接]

12

主题

21

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2022-10-18
在线时间
13 小时
发表于 2022-11-9 21:47:31 | 显示全部楼层 |阅读模式
7金钱
写的函数如下:
bool ESP8266_MQTTUSERCLIENTID( char * ClienId )
{
    char cCmd [120];
    sprintf(cCmd,"AT+MQTTCLIENTID=0,\"%s\"",ClienId );
    return ESP8266_Send_AT_Cmd( cCmd, "OK", NULL, 1000 );
}

bool ESP8266_Send_AT_Cmd(char *cmd,char *ack1,char *ack2,u32 time)
{
    ESP8266_Fram_Record_Struct .InfBit .FramLength = 0; //重新接收新的数据包
    ESP8266_USART("%s\r\n",cmd);
    if(ack1==0&&ack2==0)     //不需要接收数据
    {
    return true;
    }
    delay_ms(time);   //延时
                delay_ms(1000);
    ESP8266_Fram_Record_Struct.Data_RX_BUF[ESP8266_Fram_Record_Struct.InfBit.FramLength ] = '\0';
               
    printf("%s",ESP8266_Fram_Record_Struct .Data_RX_BUF);
    if(ack1!=0&&ack2!=0)
    {
        return ( ( bool ) strstr ( ESP8266_Fram_Record_Struct .Data_RX_BUF, ack1 ) ||
                         ( bool ) strstr ( ESP8266_Fram_Record_Struct .Data_RX_BUF, ack2 ) );
    }
    else if( ack1 != 0 )  //strstr(s1,s2);检测s2是否为s1的一部分,是返回该位置,否则返回false,它强制转换为bool类型了
        return ( ( bool ) strstr ( ESP8266_Fram_Record_Struct .Data_RX_BUF, ack1 ) );

    else
        return ( ( bool ) strstr ( ESP8266_Fram_Record_Struct .Data_RX_BUF, ack2 ) );
}

#define ESP8266_USART(fmt, ...)   printf(fmt, ##__VA_ARGS__)

调用这个函数之后一直返回error,另外一个函数也是一样,其他的步骤都没问题 。不知道为什么哎。。很烦

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 21:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表