抹 阳 ° 2025-03-26 19:52 采纳率: 0%
浏览 6

华为云平台MQTT协议M2M设备间通信

有没有用户用过塔石的NB模块?想用华为云平台的M2M设备间通信功能,用AT+ECMPUB指令发字符串上去,华为云平台总是报错JSON格式错误。有用户知道咋解决不?

void SendAmplitudeString(float amplitude)
{
    char json[128];
    char cmd[256];
    // 生成JSON字符串,其中%.6f表示以浮点数格式输出amplitude
    snprintf(json, sizeof(json), "{\"services\":[{\"service_id\":\"NBIOT\",\"properties\":{\"Electricity\":%.6f}}]}", amplitude);
    
    // 将JSON字符串嵌入AT命令中,其中Topic部分保持不变
    snprintf(cmd, sizeof(cmd), "AT+ECMPUB=0,1,1,0,\"/test/M2M/data\",\"%s\"\r\n", json);
    
    Usart_SendString(USART6, cmd);
    printf("NB串口发送成功 JSON: %s\r\n",cmd);
}

将JSON字符直接发送就没问题,用AT命令就不可以

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-03-26 19:53
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    解答

    你遇到的问题是使用华为云平台的M2M设备间通信功能,使用AT+ECMPUB指令发送字符串,但是总是报错JSON格式错误。

    首先,需要检查AT+ECMPUB指令的格式是否正确,是否符合华为云平台的要求。同时,也可以检查华为云平台的M2M设备间通信文档,了解其具体的发送格式和要求。

    如果问题仍然存在,可以尝试使用华为云平台提供的示例代码,或者联系华为云平台的支持团队,获取更多的帮助和指导。

    以下是一个简单的示例代码,使用AT+ECMPUB指令发送字符串:

    void SendAmplitude(char* data) {
        char cmd[256] = {0};
        sprintf(cmd, "AT+ECMPUB=%s", data);
        // 发送指令
        // ...
    }
    

    在上面的代码中,data 是要发送的字符串,cmd 是构建的AT+ECMPUB指令字符串。需要注意的是,data 字符串需要根据华为云平台的要求进行编码和格式化。

    希望这个示例代码能够帮助你解决问题。如果你仍然遇到问题,可以提供更多的信息和代码,我将尽力帮助你解决问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月26日