13.6.5 MQTT測(cè)試程序上機(jī)實(shí)驗(yàn)
把mqtt_test、paho.mqtt.c.tar.bz2放到Ubuntu上同一個(gè)目錄下。
1.編譯paho庫(kù)
在Ubuntu下執(zhí)行如下命令:
左右滑動(dòng)查看完整內(nèi)容
$ tar xjf paho.mqtt.c.tar.bz2 $ cd paho.mqtt.c
修改CMakeLists.txt,在最前面增加如下內(nèi)容:
左右滑動(dòng)查看完整內(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í)行如下命令編譯:
左右滑動(dòng)查看完整內(nèi)容
$ source /opt/remi-sdk/environment-setup-aarch64-poky-linux $ mkdir build $ cd build $ cmake ../ -DCMAKE_INSTALL_PREFIX=output $ make $ make install
如果一切順利,會(huì)在build目錄下生成一個(gè)output目錄(有些錯(cuò)誤信息提示權(quán)限問(wèn)題,無(wú)關(guān)緊要),里面有很多庫(kù)文件。內(nèi)容如下:
$ ls output/ bin include lib share
把頭文件、庫(kù)文件復(fù)制到工具鏈里:
左右滑動(dòng)查看完整內(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ā)板:
左右滑動(dòng)查看完整內(nèi)容
$ tar cjf output.tar.bz2 output/ $ scp output.tar.bz2 [email protected]:/mnt
在開發(fā)板里解壓output.tar.bz2文件,復(fù)制庫(kù)文件到“/usr/lib64”,命令如下:
左右滑動(dòng)查看完整內(nèi)容
# cd /mnt # tar xjf output.tar.bz2 # cd output/lib # cp -d libpaho* /usr/lib64/
2.編譯測(cè)試程序
在Ubuntu上執(zhí)行如下命令:
左右滑動(dòng)查看完整內(nèi)容
$ source /opt/remi-sdk/environment-setup-aarch64-poky-linux $ cd mqtt_test $ make $ scp mqtt_test [email protected]:/mnt
3.測(cè)試
按照《13.6.3 PC MQTT工具使用》,先啟動(dòng)MQTT服務(wù)軟件,然后再啟動(dòng)MQTTX,如下配置、連接:
在MQTTX里訂閱主題為“/iot/up”的消息,發(fā)送主題為“/iot/down”的消息,如下圖所示:
最后,在開發(fā)板上執(zhí)行mqtt_test程序,如下:
13.7 MQTT程序開發(fā)
源碼為:
13.7.1 程序流程
程序主要有2大功能:
①根據(jù)配置文件,周期性地讀“點(diǎn)”、發(fā)布消息
②訂閱消息,根據(jù)消息寫“點(diǎn)”
這些功能可以細(xì)分如下:
①通過(guò)RPC獲得MQTT信息
②通過(guò)RPC獲得“點(diǎn)”的信息
③連接MQTT Broker
④訂閱消息
⑤周期性地讀“點(diǎn)”,發(fā)布消息
在程序運(yùn)行過(guò)程中,用戶可能使用前臺(tái)程序修改了配置,比如修改了MQTT Broker的信息、增加、刪除的點(diǎn),并且程序運(yùn)行過(guò)程中可能發(fā)生錯(cuò)誤。這就需要重新運(yùn)行程序:重新運(yùn)行上述5個(gè)細(xì)分步驟。
本程序使用狀態(tài)機(jī)來(lái)實(shí)現(xiàn),有如下?tīng)顟B(tài):
在main函數(shù)中,根據(jù)當(dāng)前狀態(tài)進(jìn)行對(duì)應(yīng)處理。
13.7.2 監(jiān)測(cè)配置文件
前臺(tái)程序會(huì)導(dǎo)致配置文件被修改,需要監(jiān)測(cè)配置文件是否發(fā)生了變化。使用的函數(shù)在cfg.c里,它們的代碼在《13.4.2 配置文件的操作》講解過(guò)。
main.c的main函數(shù)里,調(diào)用的代碼如下:
13.7.3 初始化RPC連接
需要使用RPC調(diào)用得到MQTT信息、得到點(diǎn)的信息。所以第1個(gè)狀態(tài)代碼如下:
13.7.4 獲取MQTT信息
要進(jìn)行MQTT連接,需要獲得MQTT信息,代碼如下:
13.7.5 獲取點(diǎn)的信息
后續(xù)要讀點(diǎn)、上報(bào)點(diǎn)的信息,所以需要使用RPC調(diào)用獲得、記錄所有點(diǎn)的信息,代碼如下:
13.7.6 連接MQTT
代碼如下:
13.7.7 訂閱消息
代碼如下:
13.7.8 發(fā)布消息
發(fā)布消息時(shí),如果沒(méi)有錯(cuò)誤,則已知保存在本狀態(tài):循環(huán)發(fā)布消息。代碼如下:
13.7.9 訂閱消息的處理
在前面設(shè)置了MQTT回調(diào)函數(shù),當(dāng)接收到訂閱的消息時(shí),使用如下函數(shù)處理:
①解析接收到的信息,根據(jù)它找到“點(diǎn)”
②寫點(diǎn)
13.7.10 錯(cuò)誤處理
如果發(fā)生的錯(cuò)誤累計(jì)達(dá)到10次,或則配置文件發(fā)生了變化,則重新處理:
-
命令
+關(guān)注
關(guān)注
5文章
698瀏覽量
22127 -
Ubuntu
+關(guān)注
關(guān)注
5文章
567瀏覽量
30065 -
測(cè)試程序
+關(guān)注
關(guān)注
1文章
71瀏覽量
22983 -
MQTT
+關(guān)注
關(guān)注
5文章
655瀏覽量
22723
原文標(biāo)題:MQTT測(cè)試程序上機(jī)實(shí)驗(yàn)及程序開發(fā)——RZ MPU工業(yè)控制教程連載(55)
文章出處:【微信號(hào):瑞薩MCU小百科,微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
匯編語(yǔ)言上機(jī)實(shí)驗(yàn)指導(dǎo)書
匯編語(yǔ)言程序結(jié)構(gòu)
Labview之上機(jī)實(shí)驗(yàn)二
Labview之上機(jī)實(shí)驗(yàn)之三
微信小程序上線三天 看網(wǎng)友們現(xiàn)在怎么樣了
![微信小<b class='flag-5'>程序上</b>線三天 看網(wǎng)友們現(xiàn)在怎么樣了](https://file1.elecfans.com//web2/M00/A6/A3/wKgZomUMP0iAOPzuAAAKuUoAa_M145.jpg)
C程序上機(jī)教程之課程標(biāo)準(zhǔn)的詳細(xì)資料免費(fèi)下載
![C<b class='flag-5'>程序上機(jī)</b>教程之課程標(biāo)準(zhǔn)的詳細(xì)資料免費(fèi)下載](https://file.elecfans.com/web1/M00/6F/7E/o4YBAFvzaGOAODOyAAQnuj7R-hQ221.png)
MATLAB上機(jī)作業(yè)的程序資料免費(fèi)下載
![MATLAB<b class='flag-5'>上機(jī)</b>作業(yè)的<b class='flag-5'>程序</b>資料免費(fèi)下載](https://file.elecfans.com/web1/M00/82/33/pIYBAFw36cqAfVGiAABRNWhskKE693.png)
cadence-Pspice-上機(jī)實(shí)驗(yàn)-電子電路的直流分析
![cadence-Pspice-<b class='flag-5'>上機(jī)</b><b class='flag-5'>實(shí)驗(yàn)</b>-電子電路的直流分析](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
手指在應(yīng)用程序上機(jī)器人
![手指在應(yīng)用<b class='flag-5'>程序上機(jī)</b>器人](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論