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

Qt 最新版6.9.0使用MQTT连接腾讯云详细教程

Qt 最新版6.9.0使用MQTT连接腾讯云详细教程

  • 一、MQTT介绍
  • 二、MQTT库编译
    • 1、源码下载
    • 2、源码编译
  • 三、库的使用方法
  • 四、MQTT连接设备
    • 1、包含头文件
  • 2、定义一个mqtt客户端
    • 3、实例并连接相关信号与槽
    • 4、连接服务器
    • 5、订阅topic

一、MQTT介绍

1. 概述

  • 全称: Message Queuing Telemetry Transport (消息队列遥测传输协议)
  • 类型: 轻量级的消息传输协议
  • 用途: 适用于物联网(IoT)设备和受限网络环境中的数据传输

2. 特点

  • 轻量级: 协议开销小,适合资源有限的设备
  • 低带宽: 高效利用网络带宽
  • 简单易用: 易于实现和集成
  • 可靠性高: 支持多种服务质量级别

3. 架构

  • 发布/订阅模式: 设备通过主题(Topic)进行通信
  • Broker: 中心节点,负责消息的转发
  • Client: 发布或订阅消息的终端设备

4. 工作流程

  1. 连接建立: 客户端与Broker建立TCP连接
  2. 认证与授权: 客户端提供用户名和密码进行身份验证
  3. 发布消息: 客户端将消息发送到指定主题
  4. 订阅消息: 客户端订阅感兴趣的主题
  5. 接收消息: Broker将消息分发给订阅了相应主题的客户端

5. 应用场景

  • 智能家居: 控制和监控家庭设备
  • 工业自动化: 实时数据采集和控制
  • 车联网: 车辆与基础设施之间的通信
  • 远程监控: 远程设备的状态监测和管理

二、MQTT库编译

1、源码下载

点击链接Qt MQTT
选择Qt版本下载
在这里插入图片描述
在这里插入图片描述

2、源码编译

将下载的源码解压后用Qt打开。
在这里插入图片描述
直接点击左下角编译
在这里插入图片描述
编译成功后会出现下图中的几个文件夹:
在这里插入图片描述

三、库的使用方法

1、首先将lib文件夹中的libQt6Mqtt.aQt6Mqtt.dll拷贝到自己工程中
在这里插入图片描述
2、将下载源码中\qtmqtt-6.9.0\src\mqtt目录中的头文件全部拷贝到自己工程对应目录中:
在这里插入图片描述
完成如下:
在这里插入图片描述
3、在自己工程中添加库:右键工程
在这里插入图片描述
在这里插入图片描述
选择库和对应头文件目录:
在这里插入图片描述
点击确定就OK了。

四、MQTT连接设备

1、包含头文件

#include <qmqttclient.h>
#include <qmqttsubscription.h>

2、定义一个mqtt客户端

QMqttClient *mqttClient = nullptr;

3、实例并连接相关信号与槽

this->mqttClient = new QMqttClient(this);
connect(this->mqttClient,&QMqttClient::messageReceived,this,&MainWindow::mqttReadyReadSlot);
connect(this->mqttClient,&QMqttClient::connected,this,[=](){qDebug()<<"subscribe:"<<this->connectWidget->getTopic();QMqttTopicFilter topic(this->connectWidget->getTopic());this->mqttClient->subscribe(topic);});
void MainWindow::mqttReadyReadSlot(const QByteArray &message, const QMqttTopicName &topic)
{qDebug()<<message;qDebug()<<topic;
}  

4、连接服务器

        this->mqttClient->setHostname(para1);this->mqttClient->setPort(para2.toInt());this->mqttClient->setClientId(para3);this->mqttClient->setUsername(para4);this->mqttClient->setPassword(para5);this->mqttClient->setKeepAlive(1000);this->mqttClient->setProtocolVersion(QMqttClient::MQTT_3_1);this->mqttClient->connectToHost();

对应的参数在腾讯云上查看
在这里插入图片描述

5、订阅topic

 qDebug()<<"subscribe:"<<this->connectWidget->getTopic();QMqttTopicFilter topic(this->connectWidget->getTopic());this->mqttClient->subscribe(topic);

连接成功后订阅:

connect(this->mqttClient,&QMqttClient::connected,this,[=](){qDebug()<<"subscribe:"<<this->connectWidget->getTopic();QMqttTopicFilter topic(this->connectWidget->getTopic());this->mqttClient->subscribe(topic);});

相关文章:

  • paddlehub搭建ocr服务
  • 免费轻量便携截图 录屏 OCR 翻译四合一!提升办公效率
  • 开搞:第四个微信小程序:图上县志
  • 腾讯云媒体AI解码全球视频出海智能密码
  • 大模型在闭合性胫骨平台骨折诊疗全流程中的应用研究报告
  • UniApp+Vue3微信小程序二维码生成、转图片、截图保存整页
  • 现代生活的健康密钥:养生新法则
  • 记录:uniapp 上线部署到微信小程序vendorjs包过大的问题
  • 外网如何连接内网中的mysql数据库服务器?简单网络工具方案
  • uniapp-商城-65-shop(1-品牌信息显示,将数据库信息同步到vuex的state)
  • uni-app(3):互相引用
  • uni-app学习笔记九-vue3 v-for指令
  • PP-YOLOE-SOD学习笔记1
  • Web前端开发(HTML、CSS快速入门)
  • HarmonyOS开发-自定义倒计时功能
  • 快速创建 Vue 3 项目
  • 深入解析Java泛型:从定义到实战应用
  • RTC技术
  • NBA足球赛事直播源码体育直播M35模板赛事源码
  • SQL概述和定义
  • 网站建设搭建环境/做网站推广的公司
  • 迁西个人网页设计制作软件/苏州关键词seo排名
  • 网站的标题怎么做吸引人/seo站长工具
  • 网站里的地图定位怎么做的/搜索引擎优化seo专员招聘
  • 王烨辉简历/小吴seo博客
  • 韶关哪里做网站最好/百度网盘人工客服电话