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

1 篇文章 0 订阅

环境说明

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.csdn.net/naibozhuan3744/article/details/78893682
Qt官方MQTT库的使用,附一个MqttClient例子:https://www.cnblogs.com/yexiaopeng/p/8542894.html
MQTT–Qt5编写MQTT-client客户端:https://blog.csdn.net/qq_28877125/article/details/78357510

源代码下载

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

  • 6
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: 要实现Qt界面与树莓派连接电机,您可以使用以下步骤: 1. 在树莓派上安装GPIO和WiringPi,用于控制电机。 2. 使用Qt的网络模块,建立TCP/IP连接。在树莓派上编写一个TCP服务器程序,并在Qt中创建一个TCP客户端程序。 3. 在Qt中编写控制电机的代码,并将代码发送给树莓派。 4. 在树莓派上接收Qt发送的指令,并将指令转换为控制电机的信号。 5. 将信号发送到电机上,控制电机的运动。 需要注意的是,在连接电机时,需要使用适当的电路保护,以避免损坏电机或树莓派。另外,需要根据电机的规格和要求,选择适当的电源和驱动器。 ### 回答2: QT界面与树莓派连接电机需要通过串口通信实现。首先,在QT界面中增加一个串口通信模块,用于与树莓派进行数据交互。在树莓派上,也需要设置一个串口通信模块,与QT界面进行数据传输。 具体步骤如下: 1. 在QT界面中,打开串口通信模块,并设置相应的波特率、数据位、停止位等参数,以与树莓派的串口进行通信。 2. 在QT界面上,设计一个控制电机的界面,可以包括按钮、滑动条或输入框等控件,用于控制电机的启停、速度调节等操作。 3. 当用户在QT界面上进行操作后,通过串口将相应的指令发送给树莓派。例如,用户点击启动按钮,QT界面会向串口发送启动指令。 4. 在树莓派上,通过串口接收到QT界面发送的指令后,解析指令,并执行相应的操作。例如,接收到启动指令后,树莓派会驱动电机启动。 5. 树莓派执行完相应的操作后,需要将执行结果通过串口返回给QT界面。例如,树莓派将电机启动成功的信息通过串口发送给QT界面。 通过以上步骤,就可以实现QT界面与树莓派连接电机的功能。用户在QT界面上进行相应操作后,树莓派能够接收到指令并执行相应的操作,同时将执行结果返回给QT界面,实现了界面与电机的控制交互。 ### 回答3: Qt界面与树莓派连接电机的实现方法可以通过以下步骤进行: 1. 首先,在树莓派上连接电机。将电机的电源和地线连接到树莓派的GPIO引脚。确保电机的电流和电压符合树莓派的规格要求。 2. 在Qt界面中,通过使用QProcess类或者相关的GPIO函数,通过串口或者网络连接到树莓派。可以通过Qt的串口通信模块来实现串口通信或者通过Qt网络编程实现网络通信。 3. 在Qt界面中,创建按钮或者其他控制元素,用于控制电机的启动、停止、调速等操作。当用户点击按钮时,触发对应的槽函数。 4. 在槽函数中,向树莓派发送控制命令,以控制电机的运动。可以通过串口或网络通信,向树莓派发送相应的控制指令,根据接收到的指令,树莓派控制电机的运行。 5. 树莓派接收到控制指令后,根据指令控制相应的GPIO引脚,控制电机的启动、停止、调速等操作。可以通过编写树莓派的GPIO控制程序,来实现对电机的控制。 通过以上步骤,可以实现Qt界面与树莓派连接电机的功能。用户可以通过Qt界面上的控制元素来控制电机的运行状态。树莓派接收到用户的控制指令后,控制对应的GPIO引脚,从而实现对电机的控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值