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

C程序上機教程之課程標準的詳細資料免費下載

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

評論