作者:mmm3310245179 | 来源:互联网 | 2023-05-29 10:09
我想使用MQtt协议作为Messing协议.我想用CCS编译器在微控制器TMS470(德州仪器)上移植Mqtt库.由于我是本协议的新手,任何机构都可以建议我如何使用GPRS模块使用此协议.我对MQtt做了一些研究.但我不知道如何开始.打开TCP/IP后,如何发布或订阅数据.通常如何移植库.我会在哪里找到一个图书馆
1> 小智..:
您可以使用Paho嵌入式客户端库:https://eclipse.org/paho/clients/c/embedded .
使用此库,您只需实现从GPRS模块(网络)和时间管理(定时器)写入和读取的逻辑.
作为示例,您可以查看我的Arduino MQTT库:https://github.com/256dpi/arduino-mqtt.Paho嵌入式客户端存储库中还有更多示例.
2> 小智..:
我有类似的问题,我正在使用STM32F405和GPRS模块(Quectell M95).我无法正确接收MQTT包.根据我的经验,通过PAHO嵌入式C库,我可以将测试消息发布到iot.eclipse.org.
本杰明MQTT与CC3200的例子非常好理解概念.观看视频教程.
http://blog.benjamin-cabe.com/2014/08/26/mqtt-on-the-ti-cc3200-launchpad-thanks-to-paho-embedded-client
据我所知,PAHO嵌入式C库序列化MQTT包,您需要将传输方法植入库中.(发送/重放/连接/断开)
这是我的transport_sendPacketBuffer()函数,它只是将缓冲区放到gprs模块中.不要使用printf.因为,MQTT包可以包含0x00或任何类型的数据."buflen"由图书馆计算.
int transport_sendPacketBuffer(int out, char* buf, int buflen)
{
int i=0;
for(i=0;i<=buflen;i++){
put(buf[i]); // Put One char to GPRS modem .
}
}
在您传输transport_data之前您需要使用AT命令连接套接字,有几种方法可以连接.这取决于您的GSM模块AT +命令/ TCP文档(透明/多重连接)如果您有一个用于GSM模块的库,它也会有所帮助.
这是简单的Quectel M95 TCP套接字连接命令,AT + QIOPEN
int CONNECT_SERVER_SOC (char *ip,int soc ){
char bf[128];
sprintf(bf,"AT+QIOPEN=\"TCP\",\"%s\",%d\r\n",ip,soc); // ip= "198.41.30.241", port:1883
// iot.eclipse.org
printf("%s",bf);
}
如果你能处理回复信息,我很乐意听到.