当前位置: 首页 > news >正文

Qt 集成emqx/qmqtt实现订阅与发布

Qt 集成emqx/qmqtt实现订阅与发布

  • 下载源码
  • 编译生成mqtt库
  • 测试使用

Qt使用第三方库emqx/qmqtt实现mqtt基本通信。

下载源码

从emqx/qmqtt仓库下载工程源码到本地并使用Qt Creator打开项目:
在这里插入图片描述
在这里插入图片描述

编译生成mqtt库

会将mqtt相关内容编译成lib,选择需要使用mqtt的编译环境,这里演示就是用如下环境:
在这里插入图片描述
在编译器之前按仓库中的提示做一个配置:
在这里插入图片描述
在这里插入图片描述
然后直接点击编译:
在这里插入图片描述
编译结束后会在编译输出目录生成一个dll文件:
在这里插入图片描述
在加上源码中如下几个头文件就可以开始尝试使用了:
在这里插入图片描述

测试使用

新建mqtt工程,选择和上面一样的编译环境:
在这里插入图片描述
将上面提到的几个文件加入到工程目录中(一个dll,4个头文件):
在这里插入图片描述
配置引用库和网络模块:
在这里插入图片描述
将头文件加入到工程中:
在这里插入图片描述

然后编译工程,将dll文件复制到编译生成的exe同级目录:
在这里插入图片描述
基本工作准备好后就可以开始调用相关接口显示连接、订阅、发布了,仓库中也写了使用案例和可能需要的信号与槽接口:
在 头文件中包含qmqtt.h,定义连接状态与订阅消息接收的槽函数在,再定义一个mqtt_client指针:

#include "qmqtt.h"private slots:void mqtt_received(const QMQTT::Message& message);void mqtt_connected();private:QMQTT::Client *mqtt_client;

定义两个主题,一个用于测试发布,一个用于测试订阅

const QString SEND_TOPIC = "/mqtt/send";
const QString SUB_TOPIC = "/mqtt/sub";

初始化相关参数,连接槽函数,发起mqtt连接

 mqtt_client = new QMQTT::Client(QHostAddress("MQTT服务器IP地址"), MQTT服务器端口);mqtt_client->setClientId("自定义id");mqtt_client->setUsername("mqtt用户名");mqtt_client->setPassword("mqtt连接密码");mqtt_client->connectToHost();connect(mqtt_client, SIGNAL(received(const QMQTT::Message &)),this, SLOT(mqtt_received(const QMQTT::Message &)));connect(mqtt_client, SIGNAL(connected()),this, SLOT(mqtt_connected()));

在槽函数中将信息打印看是否能只能正常收到(订阅主题需要在mqtt服务器连接成功后进行)

void MainWindow::mqtt_connected()
{qDebug()<<"mqtt_connected";mqtt_client->subscribe(SUB_TOPIC, 0);
}
void MainWindow::mqtt_received(const QMQTT::Message& message)
{qDebug()<<message.topic()<<":"<<message.payload();
}

界面上防止一个button用来出发发布主题:

void MainWindow::on_send_mqtt_btn_clicked()
{QMQTT::Message message(0 ,SEND_TOPIC,QString("send test data").toUtf8(),0);mqtt_client->publish(message);
}

关于消息的原型如下:
在这里插入图片描述
到这基本就已经可以测试订阅与发布消息了:
在这里插入图片描述

测试源码在这里,下载后测试需要将mainwindow.cpp文件中的mqtt连接参数修改成连接自己mqtt服务器的参数,再把Qt5Qmqtt.dll文件放到编译生成的exe同级目录下即可编译测试。

http://www.dtcms.com/a/542217.html

相关文章:

  • 汕头潮南网站建设微盟如何做网站
  • 【JUnit实战3_17】第九章:容器内测试(下)——Arquillian 框架的用法简介
  • 【前端学习 + Vue + Hooks】什么是hooks?怎么使用hooks?
  • 河北省城乡和建设厅网站红酒论坛网站建设
  • 建个网站费用中国建设银行太原招聘信息网站
  • 一个主机一个域名做网站湖南网站建设mxtia
  • 营口网站建设价格网站开发并发 性能
  • 【源码+文档+调试讲解】停车管理系统 055
  • 58和搜房那个网站做房产好wordpress升级后乱码
  • 网页无法访问此网站数据网站有哪些
  • wordpress网站检测网站建设在微信里打广告内容
  • 网站前期准备中铁建设门户网站
  • 个人接单做网站的平台wordpress免费的好么
  • 【OPENGL ES 3.0 学习笔记】第十二天:实现立方体(glDrawArrays)
  • 建设一个网站需要多少费用阿里云虚拟主机配置wordpress
  • 四川住房城乡建设网站重庆网络推广专员
  • 河南有名的做网站公司plc编程软件
  • 无锡上网站建设苏州首页排名关键词优化
  • 三合一网站系统湖北智能建站系统价格
  • [MySQL]表——排序查询
  • 产品毕业设计网站建设网站开发费 税率
  • 页面有哪几个网站可以做兰州北京网站建设
  • 温州网站链接怎么做西安自动seo
  • 【算法专题训练】28、队列与二叉树层序遍历
  • 软考~系统规划与管理师考试——真题篇——章节——第11章 信息系统治理——解析版
  • 基于java的教学资源管理系统(代码+数据库+LW)
  • 【LeetCode】90. 子集 II
  • 做公司网站阿里网站建设及维护服务
  • 用html做班级网站网站推广策划方案的主要内容?
  • MySQL忘记root密码或者root密码错误