6步!教你寫(xiě)一個(gè)mqtt調(diào)試助手
時(shí)間:2021-10-22 15:35:12
手機(jī)看文章
掃描二維碼
隨時(shí)隨地手機(jī)看文章
[導(dǎo)讀]點(diǎn)擊上方“小麥大叔”,選擇“置頂/星標(biāo)公眾號(hào)”福利干貨,第一時(shí)間送達(dá)大家好,我是小麥,之前寫(xiě)過(guò)一篇MQTT的文章,里面用來(lái)測(cè)試的mqttclient程序是自己編譯的??梢詤⒖忌弦黄恼隆禡QTT協(xié)議,終于有人講清楚了》。在這篇文章里我簡(jiǎn)單總結(jié)了如何基于Qt的Mqtt庫(kù),編譯一個(gè)m...
點(diǎn)擊上方“小麥大叔”,選擇“置頂/星標(biāo)公眾號(hào)”福利干貨,第一時(shí)間送達(dá)
大家好,我是小麥,之前寫(xiě)過(guò)一篇MQTT的文章,里面用來(lái)測(cè)試的mqtt client程序是自己編譯的。可以參考上一篇文章《MQTT協(xié)議,終于有人講清楚了》。在這篇文章里我簡(jiǎn)單總結(jié)了如何基于
星標(biāo)公眾號(hào),后臺(tái)回復(fù)【MQTT】,即可獲取。
—— The End?——
推薦好文??點(diǎn)擊藍(lán)色字體即可跳轉(zhuǎn)??狀態(tài)機(jī)的三種騷操作,值得你了解
??推薦一個(gè)直接用于項(xiàng)目開(kāi)發(fā)的PID庫(kù)!很好用,很穩(wěn)定??這14種嵌入式實(shí)時(shí)系統(tǒng),你用過(guò)哪些???推薦一款我私藏已久的串口示波神器
歡迎轉(zhuǎn)發(fā)、留言、點(diǎn)贊、分享給你的朋友,感謝您的支持!
點(diǎn)擊上方名片關(guān)注公眾號(hào)
分享???點(diǎn)贊???在看????以“三連”行動(dòng)支持優(yōu)質(zhì)內(nèi)容!
大家好,我是小麥,之前寫(xiě)過(guò)一篇MQTT的文章,里面用來(lái)測(cè)試的mqtt client程序是自己編譯的。可以參考上一篇文章《MQTT協(xié)議,終于有人講清楚了》。在這篇文章里我簡(jiǎn)單總結(jié)了如何基于
Qt
的Mqtt
庫(kù),編譯一個(gè)mqtt client
.Qt開(kāi)發(fā)MQTT程序有兩種方式;- Qt官方已經(jīng)提供了基于MQTT的封裝,但是并沒(méi)有正式加入到Qt的標(biāo)準(zhǔn)庫(kù)中,需要自己進(jìn)行編譯添加;
- 基于第三方EMQ開(kāi)發(fā)的MQTT接口;
https://github.com/qt/qtmqtt
這個(gè)庫(kù)是基于MQTT V3.1和V3.1.1實(shí)現(xiàn)的,這里要注意協(xié)議版本。如上圖所示,這里有很多分支;這里我測(cè)試6.2
這個(gè)版本,它需要通過(guò)CMake
對(duì)項(xiàng)目進(jìn)行構(gòu)建,但是發(fā)現(xiàn)這個(gè)版本的MQTT需要QT 6 以上的版本才行,具體報(bào)錯(cuò)信息如下圖所示:下面,簡(jiǎn)單羅列一下,整體的環(huán)境;QT版本:Qt5.12.11
MQTT庫(kù)版本:5.12.10
整體環(huán)境:Win10
QtCreator
MinGW-W64
編譯QtMqtt庫(kù)
D:\Qt\Qt5.12.11\5.12.11\mingw73_64\include
在Qt的安裝目錄下新建QtMqtt
文件夾;然后將qtmqtt-5.12.10路徑下的文件復(fù)制到D:\Qt\Qt5.12.11\5.12.11\mingw73_64\include
路徑下;總結(jié)一下上述的過(guò)程,具體如下圖所示;具體的實(shí)際路徑要根據(jù)自己的安裝情況為主。這時(shí)候我們重新回到qtmqtt-5.12.10路徑下,打開(kāi)qtmqtt.pro
,就可以進(jìn)行編譯了;這里可以編譯成Debug和Release模式,編譯成功之后就可以找到 Qt5Mqtt.dll
和Qt5Mqttd.dll
;復(fù)制DLL庫(kù)和lib庫(kù)將lib文件夾的文件復(fù)制到這時(shí)候,我們可以打開(kāi)simple mqtt client
項(xiàng)目進(jìn)行測(cè)試了,路徑如下所示;這時(shí)候已經(jīng)可以進(jìn)行編譯了,但是會(huì)發(fā)現(xiàn)有還兩個(gè)報(bào)錯(cuò)情況:第一個(gè)報(bào)錯(cuò)信息如下:Unknown?module(s)?in?QT:?mqtt
無(wú)法識(shí)別mqtt模塊;解決方案如下:將qt_lib_mqtt.pri
文件和qt_lib_mqtt_private.pri
復(fù)制到Qt的安裝路徑下的mkspecs\modules
路徑中即可,例如我的電腦上的路徑是D:\Qt\Qt5.12.11\5.12.11\mingw73_64\mkspecs\modules
;mingw73_64
是我具體使用的工具鏈,這里要根據(jù)實(shí)際使用的工具鏈進(jìn)行選擇。第二個(gè)報(bào)錯(cuò)信息如下:QMqttClient?does?not?exist
原因是頭文件無(wú)法找到,做出如下修改;//#include?
#include?
再次編譯運(yùn)行,程序可以正常運(yùn)行。簡(jiǎn)單總結(jié)一下:- 庫(kù)版本和位置是否放置在相應(yīng)編譯工具鏈目錄下。
- 頭文件是否對(duì)應(yīng)到類(lèi)名文件,并放置到編譯工具鏈目錄下。
- modules-inst下的pri文件是否放置到編譯工具鏈目錄的相應(yīng)目錄下, QT =mqtt 能否正常工作都依賴(lài)目錄里的pri文件。
cmd.ini
文件進(jìn)行配置主機(jī)地址,端口,以及需要發(fā)送的Topic
和Message
的內(nèi)容;注意:cmd.ini必須和可執(zhí)行文件處于同一路徑下;代碼已經(jīng)上傳到
Github
,目前功能比較簡(jiǎn)單,不支持設(shè)置QoS
,支持文本格式數(shù)據(jù)接收,不支持遺囑消息,感興趣的同學(xué)可以看一下,地址如下:https://github.com/hotsauce1861/mqtt-client-debug-helper.git
如果大家更好的推薦,可以在下方留言區(qū)積極討論。另外我編譯了一個(gè)可執(zhí)行程序;星標(biāo)公眾號(hào),后臺(tái)回復(fù)【MQTT】,即可獲取。
—— The End?——
推薦好文??點(diǎn)擊藍(lán)色字體即可跳轉(zhuǎn)??狀態(tài)機(jī)的三種騷操作,值得你了解
??推薦一個(gè)直接用于項(xiàng)目開(kāi)發(fā)的PID庫(kù)!很好用,很穩(wěn)定??這14種嵌入式實(shí)時(shí)系統(tǒng),你用過(guò)哪些???推薦一款我私藏已久的串口示波神器
歡迎轉(zhuǎn)發(fā)、留言、點(diǎn)贊、分享給你的朋友,感謝您的支持!
分享???點(diǎn)贊???在看????以“三連”行動(dòng)支持優(yōu)質(zhì)內(nèi)容!