一、概述
这个资料写的很好:MQTT协议,终于有人讲清楚了
参考图:
默认的Qt环境是不能使用MQTT的,但Qt官方提供了基于MQTT的封装,需要通过源码进行编译。
可以在下面的链接中获取到:
https://github.com/qt/qtmqtt
在dev分支中可以选择MQTT版本,选择最新的下载到本地。注意一定要选择对应自己QT版本的MQTT源码 ,我使用的是QT5.14.2,所以MQTT的版本也得是5.14.2.
二、配置环境
1、编译源码库文件
下载下来的是一个Qt项目,在Qt Creator中打开.pro文件,用你所需要的编译器(VS,MinGW…),开始编译。
之后报错如下:
qmqttglobal.h: No such file or directory
解决方法: 在qt安装目录指定编译器的include路径下,新建QtMqtt文件夹。
并且将qtmqtt源码目录中的:src/mqtt/ 目录下的所有头文件拷贝到前面新建的QtMqtt文件夹目录下面。重新编译即可。
完成编译后,可以在你的编译路径的/bin目录中得到所需的动态链接库文件Qt5Mqtt.dll和Qt5Mqttd.dll。前者是release版库,后者是debug版。
2、配置永久项目环境
为了实现一次配置,所有项目可用的目的,我们可以直接将MQTT配置到系统的Qt环境中去。
(1)将编译出来的bin目录中的库文件拷贝到QT安装目录中去
将以上文件拷贝到以下目录中
(2)然后,将源码编译生成目录下的静态链接库相关文件拷贝到Qt安装目录的/lib下,
依次为Qt5Mqtt.lib(.a) Qt5Mqtt.prl Qt5mqttd.lib(.a) Qt5Mqttd.prl。
(3)最后再拷贝模块配置文件到Qt安装目录中。
将以上两个文件夹拷贝到以下目录中
这样MQTT就已经配置到我们本地的Qt环境中了。后续所有使用此Qt环境的项目都可以直接使用MQTT了。
(4)使用方法
使用MQTT时,首先要在.pro中添加模块:
QT += mqtt
在使用前引入包:备注:头文件的名字一定要对上,看了好多资料发现名字有的是大写的
#include <QtMqtt/qmqttclient.h>
编写代码可以参考Qt官方的MQTT说明文档:
https://doc.qt.io/qt-6/qtmqtt-index.html
三、现象
四、连接MQTT服务器
可以搭建EMQX服务器,这是一个开源的MQTT服务器,方便我们测试
EMQ X提供了开源版的EMQ X服务器安装包,支持Windows,Ubuntu等多种使用环境。
下载链接:
https://www.emqx.com/zh/try?product=broker
这样本地就开启了MQTT服务,这里有两个重要的端口号要记住:1883(暴露给外部的MQTT服务端口),18083(服务器控制面板端口)。在本地浏览器输入http://127.0.0.1:18083/,打开服务器控制面板。输入初始用户名admin和用户密码public,即可进入控制面板,并进行MQTT服务器相关配置。
然后用我们的QT的客户端连接上即可发送消息
五、参考资料
Qt5.15.2配置qmqtt
编译一个QT MQTT Client
qt 5.14.1 mqtt正常编译分享
Unknown module(s) in QT: mqtt
一文搞懂Qt-MQTT开发文章来源:https://www.toymoban.com/news/detail-499658.html
六、源码
https://download.csdn.net/download/weixin_44618297/87452814文章来源地址https://www.toymoban.com/news/detail-499658.html
到了这里,关于基于QT5.14.2的MQTT通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!