OpenEdv-开源电子网

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

利用mini板通过mqtt上传数据到阿里云物联网平台出错

[复制链接]

32

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2022-9-21
在线时间
14 小时
发表于 2022-11-5 16:55:23 | 显示全部楼层 |阅读模式
1金钱
在使用正点原子mini板用mqtt协议上传数据时,定义了一个500大小的数组来供sprintf函数装AT指令,在上传六个参数的值时发现错误,改为上传4个参数就可以,于是猜想可能时数组大小定义小了,但是改为1000,还是失败,函数代码如下:
bool ESP8266_MQTTPUB_ME( char temperature,char humidity,int light,float Pressure,float MQ135,char PM)
{
    char cCmd [500];
        sprintf ( cCmd, "AT+MQTTPUB=0,\"/sys/a1ZyoZhw5CG/device1/thing/event/property/post\",\"{\\\"id\\\":862489675\\,\\\"params\\\":{\\\"temperature\\\":%d\\,   \\\"humidity\\\":%d\\,   \\\"light\\\":%d\\,   \\\"airpressure\\\":%.2f\\,   \\\"nh\\\":%.2f\\,   \\\"pm\\\":%d\\}\\,\\\"version\\\":\\\"1.0\\\"\\,\\\"method\\\":\\\"thing/event/property/post\\\"}\",1,0",
        temperature,humidity,light,Pressure,MQ135,PM);
    return ESP8266_Send_AT_Cmd( cCmd, "OK", NULL, 500 );
}


其中ESP8266_Send_AT_Cmd函数如下:
//对ESP8266模块发送AT指令
// cmd 待发送的指令
// ack1,ack2;期待的响应,为NULL表不需响应,两者为或逻辑关系
// time 等待响应时间
//返回1发送成功, 0失败

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 ) );

}

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

使用道具 举报

13

主题

643

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2432
金钱
2432
注册时间
2019-12-28
在线时间
527 小时
发表于 2022-11-7 10:39:07 | 显示全部楼层
没玩过mqtt的,帮顶一下
回复

使用道具 举报

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2016-7-14
在线时间
21 小时
发表于 2024-8-19 11:20:22 | 显示全部楼层
来学习学习
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 06:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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