Linux Qt下MQTT模块的导入(源码移植)

Qt 下 MQTT模块的导入

     这里介绍最实用最方便快捷的办法

Linux Qt下MQTT模块的导入(编译成库版本)几乎适用所有版本 链接

Windows下 MQTT源码移植(几乎所有的Qt版本都适用) 链接

MQTT 源码下载

下载地址 ------下载的要是mqtt-master
在这里插入图片描述

解压下载的包然后找到src/mqtt文件夹 ,copy到工程路径下

在这里插入图片描述
此路径为新建的工程路径,mqtt_test_00 为我的工程名

在这里插入图片描述

在工程中添加一系列的 mqtt 的源码文件

选中所有的.h文件添加到工程中(在工程中右键添加选择现有项)
在这里插入图片描述

选中所有的.cpp文件添加到工程中

在这里插入图片描述

接下就是一系列的改错(不报错说明就没错)

首先在.pro文件中添加 QT += network
在这里插入图片描述
然后在.h文件中添加几个头文件
在这里插入图片描述
Debug运行工程
    出现第一个错误,鼠标双击错误
在这里插入图片描述
    把头文件的<> 改为 “” 即可
在这里插入图片描述

    再次Debug运行工程,出现错误,鼠标双击错误
在这里插入图片描述

    把头文件的<> 改为 “” 即可
在这里插入图片描述

实在是太难得截图啦啦啦啦啦啦啦啦啦,一直这样重复操作直到没错误为止,如下图:
在这里插入图片描述
**值得说明的是,在qt5.9.x下没得成功,在 5.7.0 5.5.1 下亲自测试有用,可成功**

下面就以oneNet平台来做个测试

在这里插入图片描述
关键连接代码

void MqttTest::clientMqtt(){
    
    
    client = new QMQTT::Client(); // 初始化QMQTT客户指针

    connect(client, SIGNAL(received(QMQTT::Message)),this, SLOT(onMQTT_Received(QMQTT::Message)));


  oneNet server ///

    QHostAddress host("183.230.40.39"); // 代理服务器 IP
    QByteArray password = "test"; // 设备名称
    quint16 port = 6002; // 代理服务器端口
    QString deviceId = "604219658"; // 设备 ID
    QString productId = "354215";   // 产品 ID

    client->setKeepAlive(120); // 心跳
    client->setHost(host); // 设置 EMQ 代理服务器
    client->setPort(port); // 设置 EMQ 代理服务器端口
    client->setClientId(deviceId); // 设备 ID
    client->setUsername(productId); // 产品 ID
    client->setPassword(password);
    client->cleanSession();
    client->setVersion(QMQTT::MQTTVersion::V3_1_1); // 设置mqtt版本


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

    QTimer::singleShot(1000, this, [=](){
    
     
        client->subscribe("abcd",0); // 订阅abcd
    });
}

void MqttTest::onMQTT_Received( QMQTT::Message message)
{
    
    
    QString str = message.payload();
    qDebug() <<"rcive: " << message.topic() << ":" <<str;

}

运行上述程序后可以看见对应的设备处于在线状态了
在这里插入图片描述

windows使用MQTT Simuiate Device 连接 设备 test01
在这里插入图片描述
连接成功
在这里插入图片描述
在这里插入图片描述

客户端发布一个Topic
在这里插入图片描述

OK,到此完成移植

Guess you like

Origin blog.csdn.net/wct3344142/article/details/107022706