13.6.5 MQTT測試程序上機實驗
把mqtt_test、paho.mqtt.c.tar.bz2放到Ubuntu上同一個目錄下。
1.編譯paho庫
在Ubuntu下執(zhí)行如下命令:
左右滑動查看完整內(nèi)容
$ tar xjf paho.mqtt.c.tar.bz2 $ cd paho.mqtt.c
修改CMakeLists.txt,在最前面增加如下內(nèi)容:
左右滑動查看完整內(nèi)容
set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR arm) SET(CMAKE_C_COMPILER aarch64-poky-linux-gcc) SET(CMAKE_CXX_COMPILER aarch64-poky-linux-g++) set(CMAKE_SYSROOT /opt/remi-sdk/sysroots/aarch64-poky-linux) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
然后執(zhí)行如下命令編譯:
左右滑動查看完整內(nèi)容
$ source /opt/remi-sdk/environment-setup-aarch64-poky-linux $ mkdir build $ cd build $ cmake ../ -DCMAKE_INSTALL_PREFIX=output $ make $ make install
如果一切順利,會在build目錄下生成一個output目錄(有些錯誤信息提示權(quán)限問題,無關(guān)緊要),里面有很多庫文件。內(nèi)容如下:
$ ls output/ bin include lib share
把頭文件、庫文件復(fù)制到工具鏈里:
左右滑動查看完整內(nèi)容
$ sudo cp -rf output/include/* /opt/remi-sdk/sysroots/aarch64-poky-linux/usr/include/ $ sudo cp -rfd output/lib/* /opt/remi-sdk/sysroots/aarch64-poky-linux/usr/lib64/
把output目錄壓縮,上傳到開發(fā)板:
左右滑動查看完整內(nèi)容
$ tar cjf output.tar.bz2 output/ $ scp output.tar.bz2 root@192.168.5.9:/mnt
在開發(fā)板里解壓output.tar.bz2文件,復(fù)制庫文件到“/usr/lib64”,命令如下:
左右滑動查看完整內(nèi)容
# cd /mnt # tar xjf output.tar.bz2 # cd output/lib # cp -d libpaho* /usr/lib64/
2.編譯測試程序
在Ubuntu上執(zhí)行如下命令:
左右滑動查看完整內(nèi)容
$ source /opt/remi-sdk/environment-setup-aarch64-poky-linux $ cd mqtt_test $ make $ scp mqtt_test root@192.168.5.9:/mnt
3.測試
按照《13.6.3 PC MQTT工具使用》,先啟動MQTT服務(wù)軟件,然后再啟動MQTTX,如下配置、連接:
在MQTTX里訂閱主題為“/iot/up”的消息,發(fā)送主題為“/iot/down”的消息,如下圖所示:
最后,在開發(fā)板上執(zhí)行mqtt_test程序,如下:
13.7 MQTT程序開發(fā)
源碼為:
13.7.1 程序流程
程序主要有2大功能:
①根據(jù)配置文件,周期性地讀“點”、發(fā)布消息
②訂閱消息,根據(jù)消息寫“點”
這些功能可以細分如下:
①通過RPC獲得MQTT信息
②通過RPC獲得“點”的信息
③連接MQTT Broker
④訂閱消息
⑤周期性地讀“點”,發(fā)布消息
在程序運行過程中,用戶可能使用前臺程序修改了配置,比如修改了MQTT Broker的信息、增加、刪除的點,并且程序運行過程中可能發(fā)生錯誤。這就需要重新運行程序:重新運行上述5個細分步驟。
本程序使用狀態(tài)機來實現(xiàn),有如下狀態(tài):
在main函數(shù)中,根據(jù)當(dāng)前狀態(tài)進行對應(yīng)處理。
13.7.2 監(jiān)測配置文件
前臺程序會導(dǎo)致配置文件被修改,需要監(jiān)測配置文件是否發(fā)生了變化。使用的函數(shù)在cfg.c里,它們的代碼在《13.4.2 配置文件的操作》講解過。
main.c的main函數(shù)里,調(diào)用的代碼如下:
13.7.3 初始化RPC連接
需要使用RPC調(diào)用得到MQTT信息、得到點的信息。所以第1個狀態(tài)代碼如下:
13.7.4 獲取MQTT信息
要進行MQTT連接,需要獲得MQTT信息,代碼如下:
13.7.5 獲取點的信息
后續(xù)要讀點、上報點的信息,所以需要使用RPC調(diào)用獲得、記錄所有點的信息,代碼如下:
13.7.6 連接MQTT
代碼如下:
13.7.7 訂閱消息
代碼如下:
13.7.8 發(fā)布消息
發(fā)布消息時,如果沒有錯誤,則已知保存在本狀態(tài):循環(huán)發(fā)布消息。代碼如下:
13.7.9 訂閱消息的處理
在前面設(shè)置了MQTT回調(diào)函數(shù),當(dāng)接收到訂閱的消息時,使用如下函數(shù)處理:
①解析接收到的信息,根據(jù)它找到“點”
②寫點
13.7.10 錯誤處理
如果發(fā)生的錯誤累計達到10次,或則配置文件發(fā)生了變化,則重新處理:
-
命令
+關(guān)注
關(guān)注
5文章
722瀏覽量
22631 -
Ubuntu
+關(guān)注
關(guān)注
5文章
580瀏覽量
30656 -
測試程序
+關(guān)注
關(guān)注
1文章
71瀏覽量
23097 -
MQTT
+關(guān)注
關(guān)注
5文章
662瀏覽量
23358
原文標(biāo)題:MQTT測試程序上機實驗及程序開發(fā)——RZ MPU工業(yè)控制教程連載(55)
文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
匯編語言上機實驗指導(dǎo)書
匯編語言程序結(jié)構(gòu)
微信小程序上線三天 看網(wǎng)友們現(xiàn)在怎么樣了

C程序上機教程之課程標(biāo)準(zhǔn)的詳細資料免費下載

cadence-Pspice-上機實驗-電子電路的直流分析

評論