Qt 移植mqtt库(非官方库)并连接到eMQ、onenet

环境说明

Qt版本:5.6 Mingw32 (其他版本在编译的过程中生成的include会不同)
操作系统:win10企业版

移植过程

1、从github下载qtmqtt源代码:https://github.com/emqtt/qmqtt
2、解压文件,进入src目录使用qt打开里面的工程(src.pro
在这里插入图片描述
在这里插入图片描述
3、编译运行工程,编译过程中如出现头文件出错,则需要根据实际文件路径进行修改
在这里插入图片描述
4、编译后将会在工程所在的电脑磁盘根目录生成include 和 lib 文件夹
在这里插入图片描述
5、将include文件夹复制到src\mqtt文件夹内
在这里插入图片描述
6、新建空白的qt工程,将src内的mqtt文件夹和磁盘根目录的lib文件夹复制到新建工程内。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
7、在qt软件内右击工程名->点击添加现有文件->添加mqtt\include\mqtt内的qmqttDepengd文件
在这里插入图片描述
8、在qt软件内右击工程名->点击添加现有文件->添加mqtt内的qmqtt.h文件
在这里插入图片描述
9、在qt软件内右击工程名->点击添加库->外部库->库文件:浏览->lib->libqmqtt.a
在这里插入图片描述
在这里插入图片描述
10、在qt软件内右击工程名->点击添加库->外部库->库文件:浏览->lib->libqmqttd.a,添加成功后工程会自动增加如下的代码。
在这里插入图片描述
11、编译工程,如果没有出错则移植成功。
在这里插入图片描述

创建mqtt客服端

1、在工程的.pro文件内添加代码 QT += network
在这里插入图片描述
2、在对应的文件内添加如下的头文件
在这里插入图片描述
3、编译工程会提醒部分头文件无法找到,只需要将报错的文件的<>改为“”引用即可,大概需要修改3个文件内的头文件,一直修改到编译不报错即可。
在这里插入图片描述
在这里插入图片描述
4、添加如下的代码,创建客户端
在这里插入图片描述
5、添加如下的代码

	QHostAddress host("127.0.0.1");
    QByteArray password = "";
    quint16 port = 1883;

    //client->set
    client->setKeepAlive(120);
    client->setHost(host);//设置EMQ代理服务器IP
    client->setPort(port);//设置EMQ代理服务器端口号
    client->setClientId("client");//设置一个客户端ID
    client->setUsername("");//设置一个客户端用户名
    client->setPassword(password);//设置一个客户端密码
    client->cleanSession();//清除缓存
    client->setVersion(QMQTT::MQTTVersion::V3_1_1);//设置mqtt版本

    client->connectToHost();//连接EMQ代理服务器

在这里插入图片描述
6、打开搭建好的eMQ服务器,搭建教程请参考这个:https://www.jianshu.com/p/e5cf0c1fd55c
7、运行以上的工程,成功运行后将能在服务器内看到如下的连接信息,如果没看到,则尝试重新运行一下工程。
在这里插入图片描述

连接到中国移动物联网平台onenet

1、注册onenet账号并添加基于MQTT协议的产品和添加一个设备,具体流程请参考onenet官方文档:https://open.iot.10086.cn/doc/art436.html#104
2、更改上一节第5的代码如下

	QHostAddress host("183.230.40.39");
    QByteArray password = "请输入你自己的设备授权信息";//onenet的产品Master-APIkey或者授权信息
    quint16 port = 6002;

    //client->set
    client->setKeepAlive(120);
    client->setHost(host);//设置EMQ代理服务器IP
    client->setPort(port);//设置EMQ代理服务器端口号
    client->setClientId("请输入你自己的设备ID");//onenet设备ID
    client->setUsername("请输入你自己的产品ID");//onenet的产品ID
    client->setPassword(password);//设置一个客户端密码
    client->cleanSession();//清除缓存
    client->setVersion(QMQTT::MQTTVersion::V3_1_1);//设置mqtt版本,onenet平台规定为mqtt3.1.1版本

    client->connectToHost();//连接EMQ代理服务器

在这里插入图片描述
3、运行工程到onenet的后台即可看到设备已经在线。
在这里插入图片描述

参考文章

QT采用MQTT协议远程控制LED灯:http://www.360doc.com/content/18/0307/14/16915_735115704.shtml
如何用Qt5.9接收EMQ代理服务器传过来的话题消息:https://blog.youkuaiyun.com/naibozhuan3744/article/details/78893682
Qt官方MQTT库的使用,附一个MqttClient例子:https://www.cnblogs.com/yexiaopeng/p/8542894.html
MQTT–Qt5编写MQTT-client客户端:https://blog.youkuaiyun.com/qq_28877125/article/details/78357510

源代码下载

1、本文章提到的源代码和工程等:https://download.youkuaiyun.com/download/baidu_33969363/10888403
2、有界面的基于qt的mqtt客户端源代码:https://download.youkuaiyun.com/download/baidu_33969363/10888403
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值