當(dāng)前位置:首頁 > 公眾號精選 > 小麥大叔
[導(dǎo)讀]點擊上方“小麥大叔”,選擇“置頂/星標(biāo)公眾號”福利干貨,第一時間送達大家好,我是小麥,之前寫過一篇MQTT的文章,里面用來測試的mqttclient程序是自己編譯的。可以參考上一篇文章《MQTT協(xié)議,終于有人講清楚了》。在這篇文章里我簡單總結(jié)了如何基于Qt的Mqtt庫,編譯一個m...

點擊上方“小麥大叔”,選擇“置頂/星標(biāo)公眾號”

福利干貨,第一時間送達

大家好,我是小麥,之前寫過一篇MQTT的文章,里面用來測試的mqtt client程序是自己編譯的??梢詤⒖忌弦黄恼?span>《MQTT協(xié)議,終于有人講清楚了。

在這篇文章里我簡單總結(jié)了如何基于QtMqtt庫,編譯一個mqtt client.

Qt開發(fā)MQTT程序有兩種方式;

  • Qt官方已經(jīng)提供了基于MQTT的封裝,但是并沒有正式加入到Qt的標(biāo)準(zhǔn)庫中,需要自己進行編譯添加;
  • 基于第三方EMQ開發(fā)的MQTT接口;
本文主要介紹第一種方式,即使用Qt官方的MQTT封裝庫,我們將編譯MQTT庫,并編譯一個官方的Demo,實際需要寫的代碼其實并不多。

下載地址

Qt已經(jīng)在GitHub上托管了相應(yīng)的MQTT庫的代碼,地址:https://github.com/qt/qtmqtt

這個庫是基于MQTT V3.1和V3.1.1實現(xiàn)的,這里要注意協(xié)議版本。

如上圖所示,這里有很多分支;

這里我測試6.2這個版本,它需要通過CMake對項目進行構(gòu)建,但是發(fā)現(xiàn)這個版本的MQTT需要QT 6 以上的版本才行,具體報錯信息如下圖所示:

下面,簡單羅列一下,整體的環(huán)境;

QT版本:Qt5.12.11

MQTT庫版本:5.12.10

整體環(huán)境:Win10 QtCreator MinGW-W64

編譯QtMqtt庫

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é)一下上述的過程,具體如下圖所示;

具體的實際路徑要根據(jù)自己的安裝情況為主。

這時候我們重新回到qtmqtt-5.12.10路徑下,打開qtmqtt.pro,就可以進行編譯了;

這里可以編譯成Debug和Release模式,編譯成功之后就可以找到 Qt5Mqtt.dllQt5Mqttd.dll;

復(fù)制DLL庫和lib庫

將lib文件夾的文件復(fù)制到

這時候,我們可以打開simple mqtt client項目進行測試了,路徑如下所示;

這時候已經(jīng)可以進行編譯了,但是會發(fā)現(xiàn)有還兩個報錯情況:

第一個報錯信息如下:

Unknown?module(s)?in?QT:?mqtt
無法識別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ù)實際使用的工具鏈進行選擇。

第二個報錯信息如下:

QMqttClient?does?not?exist
原因是頭文件無法找到,做出如下修改;

//#include?
#include?
再次編譯運行,程序可以正常運行。

簡單總結(jié)一下:

  • 庫版本和位置是否放置在相應(yīng)編譯工具鏈目錄下。
  • 頭文件是否對應(yīng)到類名文件,并放置到編譯工具鏈目錄下。
  • modules-inst下的pri文件是否放置到編譯工具鏈目錄的相應(yīng)目錄下, QT =mqtt 能否正常工作都依賴目錄里的pri文件。
為了方便測試mqtt的一些自定義指令,我在原來的demo基礎(chǔ)上簡單修改了一下,最多支持9條消息編輯和單獨發(fā)送,具體如下所示;

這里可以通過修改cmd.ini文件進行配置主機地址,端口,以及需要發(fā)送的TopicMessage的內(nèi)容;

注意:cmd.ini必須和可執(zhí)行文件處于同一路徑下;

代碼已經(jīng)上傳到Github,目前功能比較簡單,不支持設(shè)置QoS,支持文本格式數(shù)據(jù)接收,不支持遺囑消息,感興趣的同學(xué)可以看一下,地址如下:https://github.com/hotsauce1861/mqtt-client-debug-helper.git

如果大家更好的推薦,可以在下方留言區(qū)積極討論。

另外我編譯了一個可執(zhí)行程序;


星標(biāo)公眾號,后臺回復(fù)【MQTT】,即可獲取。


—— The End?——
推薦好文??點擊藍色字體即可跳轉(zhuǎn)??狀態(tài)機的三種騷操作,值得你了解
??推薦一個直接用于項目開發(fā)的PID庫!很好用,很穩(wěn)定??這14種嵌入式實時系統(tǒng),你用過哪些???推薦一款我私藏已久的串口示波神器
歡迎轉(zhuǎn)發(fā)、留言、點贊、分享給你的朋友,感謝您的支持!


點擊上方名片關(guān)注公眾號


分享???點贊???在看????

以“三連”行動支持優(yōu)質(zhì)內(nèi)容!

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
關(guān)閉
關(guān)閉