前言
前端时间做了一个项目,要求在PC端使用QT制作一个客户端,用来接收从单片机上传到Onennet的数据,并且还要下发指令。当时弄了好几天,中途遇见了非常多的问题,所以写下这篇文章记录一下,同时分享一下自己的经验。
我的环境:QT 5.12.6
难点
总结下我遇见的难点:
1,环境配置极难,当时光环境配置这一项就弄了我好几天
Qt在5,10版本开始支持mqtt,但是也没有集成到安装包里面,需要自己下载编译。Qt开发MQTT程序有两种方式,一个是Qt官方提供的基于MQTT的封装,一个是第三方(EMQ)开发的用于Qt调用MQTT的接口,二者使用方法大同小异,并且均提供了源码
下载
Qt官方在github上提供了源代码,地址:https://github.com/qt/qtmqtt
第三方的mqtt库GitHub地址:https://github.com/emqx/qmqtt
在下载官方库文件时需要注意,要下载与自己版本相符合的程序源码,像我是5.12.6版本的QT。我就要下载5.12.6版本的mqtt库文件
环境搭建
第一步,编译构建qmqtt源码
下面我们使用第三方的MQTT库来进行环境搭建,第三方公司的MQTT库环境搭建过程与官方库的环境搭建过程基本上都是相同的步骤,只是他们两方的头文件名字不太一样而已。
将第三方的源码下载后点击qmqtt.pro
![qt连接onenet,c++,qt,Powered by 金山文档](https://imgs.yssmx.com/Uploads/2023/08/668870-1.png)
出现这个界面点红框即可
![qt连接onenet,c++,qt,Powered by 金山文档](https://imgs.yssmx.com/Uploads/2023/08/668870-2.png)
后面直接点击左下角的小锤子进行构建
![qt连接onenet,c++,qt,Powered by 金山文档](https://imgs.yssmx.com/Uploads/2023/08/668870-3.png)
有时候可能会出现构建失败的提示,这也是我花费时间最多的地方,当时找了许多教程都没弄清楚
问题
你出现这个现象可能有一下几个原因:
1,需要安装一个perl
perl下载地址:https://www.perl.org/get.html
2,你可能需要使用release模式进行构建
点击左下角的这个小显示器形的图标就可以调节模式
3,你的QT版本太低,不支持
这时候下载一个更新的,5.10以上版本的
4,此时开始编译后会出现如下类型错误
![qt连接onenet,c++,qt,Powered by 金山文档](https://imgs.yssmx.com/Uploads/2023/08/668870-4.png)
接下来我们将源码路径下C:\Users\maogu\Desktop\qtmqtt-5.10\src\mqtt 的所有头文件复制,
粘贴到C:\Users\maogu\Desktop\build-qtmqtt-Desktop_Qt_5_10_1_MSVC2013_64bit-Release\include\QtMqtt路径中,
我在include文件夹中已经建好QtMqtt文件夹,(以上路径仅作参考)
最后一步还要在QtMqtt文件夹下建立private文件夹,将名称为*_p.h的四个头文件存放进去。
5,之后若是还出现以下问题
![qt连接onenet,c++,qt,Powered by 金山文档](https://imgs.yssmx.com/Uploads/2023/08/668870-5.jpeg)
这时,我们将所有错误的包含文件名换为相应*.h文件,如下:
![qt连接onenet,c++,qt,Powered by 金山文档](https://imgs.yssmx.com/Uploads/2023/08/668870-6.png)
之后就可以正常编译了
构建完成后你会得到一个文件夹
![qt连接onenet,c++,qt,Powered by 金山文档](https://imgs.yssmx.com/Uploads/2023/08/668870-7.png)
第二步:部署到QT项目
这里有两种方法进行环境配置,
第一种是直接在项目中导入外部库和头文件。
第二种是将其以模块的形式部署到QT的安装目录。
其中第二种的好处就是,只需要一次操作,以后需要再用MQTT库就可以直接调用了,不用每次都导入外部库
所以在这里我们主要演示第二种
首先,将qmqtt源码目录下(qmqtt\src\mqtt)的所有.h后缀的头文件拷贝,然后打开QT安装目录下的include文件夹,创建一个mqtt目录,将拷贝的头文件粘贴进去
我的文件目录如下:D:\QT\5.12.6\mingw73_64
![qt连接onenet,c++,qt,Powered by 金山文档](https://imgs.yssmx.com/Uploads/2023/08/668870-8.png)
注意:当你的QT安装了不同的编译环境时会有
之后,将源码编译生成目录下的lib中以下6个文件拷贝
![qt连接onenet,c++,qt,Powered by 金山文档](https://imgs.yssmx.com/Uploads/2023/08/668870-9.png)
并粘贴到QT安装目录下对应环境的lib文件夹去
例如D:\QT\5.12.6\mingw73_64\lib
接下来将源码编译生成的bin文件夹下两个库文件拷贝到Qt安装目录的bin中:
![qt连接onenet,c++,qt,Powered by 金山文档](https://imgs.yssmx.com/Uploads/2023/08/668870-10.png)
![qt连接onenet,c++,qt,Powered by 金山文档](https://imgs.yssmx.com/Uploads/2023/08/668870-11.png)
之后将编译构建得到的目录下的\mkspecs\modules-inst中的文件复制到QT对应安装目录中
![qt连接onenet,c++,qt,Powered by 金山文档](https://imgs.yssmx.com/Uploads/2023/08/668870-12.png)
![qt连接onenet,c++,qt,Powered by 金山文档](https://imgs.yssmx.com/Uploads/2023/08/668870-13.png)
这样就配置完成了
以这种方式配置的在新工程中引用只需要引入模块就可以直接使用了
QT += mqtt
包含头文件
#include <QtMqtt/QtMqtt>
问题
在我配置好使用过程中出现了一下问题:
1,头文件不对
这时候查看你刚刚添加的头文件具体名字,官方库和第三方库的头文件名并不相同
2,显示找不到头文件
这时尝试自己导入文件试试
新建一个项目,在项目的.pro文件中右键,点击添加库
![qt连接onenet,c++,qt,Powered by 金山文档](https://imgs.yssmx.com/Uploads/2023/08/668870-14.png)
选择外部库
![qt连接onenet,c++,qt,Powered by 金山文档](https://imgs.yssmx.com/Uploads/2023/08/668870-15.png)
选择库文件,找到QT安装目录相应环境下的lib文件
![qt连接onenet,c++,qt,Powered by 金山文档](https://imgs.yssmx.com/Uploads/2023/08/668870-16.png)
之后再次运行应该就没有问题了
接下来就是正式的客户端开发了,将会在我下一篇博客发出,敬请期待
参考文献:
(112条消息) Qt开发MQTT(一) 之Qt官方Qt MQTT_luoyayun361的博客-CSDN博客
(112条消息) 【QT配置第三方MQTT协议】_mqtt qt_自然醒欧的博客-CSDN博客
(112条消息) Qt开发技术:mqtt介绍、QtMqtt编译和开发环境搭建_qt mqtt_长沙红胖子Qt的博客-CSDN博客文章来源:https://www.toymoban.com/news/detail-668870.html
代码分享:http://t.csdn.cn/ufC4W文章来源地址https://www.toymoban.com/news/detail-668870.html
到了这里,关于QT使用MQTT协议连接ONENET云平台:智能家居PC客户端开发笔记-1 环境搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!