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

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);});
http://www.xdnf.cn/news/7969.html

相关文章:

  • window 显示驱动开发-视频内存供应和回收(一)
  • jquery.table2excel方法导出
  • 鸿蒙仓颉开发语言实战教程:实现商城应用首页
  • 尼科彻斯定理
  • Vue 3.0中自定义指令
  • 01-jenkins学习之旅-window-下载-安装
  • 【云原生安全】零信任与机密计算
  • Qt C++实现马的遍历问题
  • 【JavaEE】(1) 计算机如何工作
  • 阿里巴巴 MCP 分布式落地实践:快速转换 HSF 到 MCP server
  • 记录:uniapp 上线部署到微信小程序vendorjs包过大的问题
  • 外网如何连接内网中的mysql数据库服务器?简单网络工具方案
  • Cause: org.apache.ibatis.ognl.OgnlException: sqlSegment
  • 【C++】位图+布隆过滤器
  • JAVA EE(进阶)_CSS
  • 如何排查服务器 CPU 温度过高的问题并解决?
  • C++ 前缀和数组
  • C++STL(二)类模板
  • YCKC【二分查找专题】题解
  • 《对话记忆的进化史:智能体大模型如何实现跨轮次的深度交互》
  • 国酒华夏实业酒水供应链:全品类覆盖打造一站式购销平台
  • 第四十三节:人脸检测与识别-人脸识别基础 (Eigenfaces, Fisherfaces, LBPH)
  • Selenium自动化测试终极指南:从原理到实战
  • 【Python生成器全解析】从基础到高阶应用实战
  • C语言—Linux环境下CMake设置库(动态/静态)
  • 借助IEDA ,Git版本管理工具快速入门
  • 多线程(七)
  • 开疆智能Profinet转RS485网关连接工业型土壤水分温度传感器 配置案例
  • 如何在 Windows 10 或 11 上安装 Adminer?
  • 非欧空间计算加速:图神经网络与微分几何计算的GPU优化(流形数据的内存布局优化策略)