QT+MQTT 使用MQTT官方库

开发环境:win7 64 + Qt5.9

       基于MQTT协议的优良特性,和所从事的软件开发消息较多,与MQTT较为契合,因此先调研MQTT的使用。 

 一、MQTT官方库下载路径 

             github地址:https://github.com/qt/qtmqtt  

我选择下载5.10版本。 

二、编译下载的MQTT 

我这里的编译环境是:Qt5.12.3+

 

编译完成后:bin目录下就是我们要的库文件: 

三、新建MqttClient工程,将MQTT库作为外部库导入 

 新建工程目录下新建lib  include目录

打开新建工程的pro文件,添加:

QT       += core gui network




win32:CONFIG(release, debug|release): LIBS += -L$$PWD/lib/ -lQt5Mqtt
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/lib/ -lQt5Mqttd


INCLUDEPATH += $$PWD/include
DEPENDPATH += $$PWD/include

将 库文件放到新建工程的lib文件下

 在mainwindow.h中加入头文件引用

#include "include/qmqttclient.h"

将所有的头文件拷贝到i新建nclude文件夹下 

四、链接服务器、断开服务器、订阅消息、发布下次、接收消息代码 

 初始化mqtt指针

    QMqttClient * m_client;//mqtt client指针
    m_client  =  new QMqttClient(this);

链接断开服务器

void MainWindow::on_pushButton_clicked()
{
    //未连接服务器则连接
    if (m_client->state() == QMqttClient::Disconnected) {
        m_client->setHostname("127.0.0.1");
        m_client->setPort(1883);
        m_client->connectToHost();
    } else {//断开连接
        m_client->disconnectFromHost();
    }
}

 订阅消息

void MainWindow::on_pushButton_3_clicked()
{
    QString topicSub ="firsttopic";;
    if(m_client->state() == QMqttClient::Connected)
    {
        m_client->subscribe(topicSub, 0);
        connect(m_client, SIGNAL(messageReceived(QByteArray,QMqttTopicName)), this, SLOT(receiveMess(QByteArray,QMqttTopicName)));
        return;
    }
}

发布消息

void MainWindow::on_pushButton_2_clicked()
{
    QString topic ="firsttopic";
    QString mess ="第一条消息";
    if (m_client->publish(topic,mess.toUtf8()) == -1){}
          //QMessageBox::critical(this, QLatin1String("Error"), QLatin1String("Could not publish message"));
}

接收消息

 connect(m_client, SIGNAL(messageReceived(QByteArray,QMqttTopicName)), this, SLOT(receiveMess(QByteArray,QMqttTopicName)));

void MainWindow::receiveMess(const QByteArray &message, const QMqttTopicName &topic)
{
    QString content;
        content = QDateTime::currentDateTime().toString() + QLatin1Char('\n');
        content += QLatin1String(" Received Topic: ") + topic.name() + QLatin1Char('\n');
        content += QLatin1String(" Message: ") + message + QLatin1Char('\n');
        ui->textEdit->append(content);
}

五、验证

 链接服务器:

断开服务器 

发布消息

通过MQTT.fx订阅程序发布的消息

 接收消息

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
移植Qt MQTT 到 ARM Linux 平台上需要以下几个步骤: 1. 安装交叉编译工具链:在Linux下,我们需要安装适用于ARM架构的交叉编译工具链,例如arm-linux-gnueabihf。这个工具链将会提供编译Qt和其它依赖所需的工具和环境。 2. 下载Qt源码:从Qt官方网站上下载适用于ARM Linux的Qt源码。选择适合您的版本和需要的模块。确保选择支持MQTT的模块。 3. 配置编译选项:解压源码后,使用命令行进入源码目录。运行`configure`脚本来配置编译选项,例如指定交叉编译工具链和目标平台。确保选择MQTT模块和适当的依赖,在这种情况下是Paho MQTT C和OpenSSL。 4. 运行make:在配置完成后,运行`make`命令来编译Qt源码。这个过程可能会需要一段时间,具体取决于您的电脑性能和源码大小。 5. 安装Qt:编译完成后,使用`make install`命令来安装Qt到指定的路径。确保您选择正确的安装路径,以便在ARM Linux上使用。 6. 创建Qt MQTT项目:现在,您可以在ARM Linux上创建基于Qt MQTT的项目了。使用Qt Creator工具创建一个新项目,并在项目配置中添加必要的和模块。确保设置正确的编译器和目标平台。 7. 编译和部署:通过Qt Creator编译和构建项目。然后,将生成的可执行文件和任何依赖的文件复制到ARM Linux设备上。确保正确配置和安装依赖,包括Paho MQTT C和OpenSSL。 8. 测试和调试:最后,在ARM Linux设备上运行和测试您的Qt MQTT应用程序。使用调试工具(例如GDB)来调试任何可能出现的问题,确保应用程序正常运行。 通过以上步骤,您应该能够成功将Qt MQTT移植到ARM Linux平台上,并在设备上运行和测试。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值