2014-12-29 69 views
6

我想使用MQtt協議作爲Messing協議。我想用CCS編譯器移植單片機TMS470(德州儀器)上的Mqtt庫。由於我是本協議的新成員,任何機構能否告訴我如何使用該協議使用GPRS模塊。我對MQtt做了一些研究。但我不知道如何開始。打開TCP/IP之後,如何發佈或訂閱數據。通常如何移植庫。在哪裏我將獲得一個庫微控制器上的MQTT庫

回答

8

您可以使用Paho嵌入式客戶端庫:https://eclipse.org/paho/clients/c/embedded

使用這個庫,你只需要實現GPRS模塊(網絡)和時間管理(定時器)的寫入和讀取邏輯。

作爲一個例子,你可以看看我的MQTT庫Arduino:https://github.com/256dpi/arduino-mqtt。 Paho嵌入式客戶端存儲庫中還有更多示例。

+0

謝謝,所以MQTT只是混亂的格式,需要使用GPRS發送?如果沒有,你能告訴我MQTT和GPRS之間的接口是什麼。 –

+0

MQTT是通過TCP流運行的協議。您需要事先使用AT命令配置您的Modem。嵌入式庫將以Client類的形式提供一個很好的接口。但是你必須自己實現網絡層(如何自己發送和接收字節),網絡類。 – 256dpi

6

我有類似的問題,我正在使用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

據我瞭解,泛美衛生組織嵌入式C庫serilaze 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 Command連接套接字,有幾種連接方法。它取決於你的GSM模塊AT + Command/TCP文件(透明/多連接)如果你有一個GSM模塊庫,它也會有幫助。

這是簡單的移遠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); 
} 

如果你能處理recive消息,我會很高興聽到這個消息。

+0

什麼是IP,它是經紀人的IP?或GPRS模塊(它自己的iP)和什麼是soc –

+1

它是經紀人的IP地址和端口。只需ping iot.eclipse.org。 soc意味着港口,1883年.iot.eclipse.org有一個測試問題的公開經紀人。您可以下載「MQTTLens」插件進行鑲邊。所以你可以使用iot.eclipse.org broker發佈/發佈消息。 –