Linux下QT编程之MQTT实战

应课设要求需要使用MQTT通信协议进行网关开发,所以就花了时间捣鼓一下,也遇到很多的坑所以写了这篇博客记录一下。

1、mqtt服务器有很多在这里我选择EMQ X因为这个是开源并且还有可视化的后台管理便于开发和调试。可以到官网直接下载:点击进去下载 

 

3、接下来就是上传到Ubuntu虚拟机进行解压安装

解压命令:unzip        emqx-ubuntu16.04-4.3.10-amd64.zip

 安装直接进入解压目录:emqx/bin/ 

执行命令:./emqx         start

4、测试服务器:

在浏览器中输入 http://localhost:18083,用户名admin,密码public,进入Dashboard

 

小编使用的测试工具是MQTT.fx,这个工具个人决定还是很好用的建议大家去下载

 

 5、关闭服务器

在目录中输入./emqx stop 即可

6、服务其搭建好了之后接下来就是进行mqtt库的移植了,可以到GitHub下载源码点击下载

这里一定要注意的是版本号跟QT一定要对应否则编译不通过 !!!

7、接下来就是上传到Ubuntu进行解压

 

 8、进入解压目录使用QT打开工程文件编译源码

 打开之后就是直接简单粗暴编译,过程有一丢丢慢(不出意外会报错,下面就会讲怎么修改

显示头文件找不到,是因为头文件路径的目录不正确,要进行修改 使用绝对路径即可

 

 接下来就是反复调试查找要修改的头文件路径直到编译通过,通过之后会生成一个工程文件夹里面就有我们需要使用到的库了,别泄气老铁们到这里已经成功3/4了。需要用的只有include文件夹和lib文件夹。

 接下来就是新建我们自己的QT工程了,把库加进去就可以爽快的进行开发啦,下面是我自己新建的工程,这里可能会有些朋友不熟悉添加外部库(非常简单)

需要把include文件夹拷贝到源码的mqtt目录里面

 下面是把lib文件夹和刚才添加了include源码文件夹的mqtt文件夹放到自己的新建工程自己的工程添加完后的:

 打开工程添加库

 点击工程右键“添加库”

 

 

 选择对应的平台就可以了,小编的是Linux平台,你们按照自己的系统来选择即可。添加成功界面如下:

在头文件目录添加一个文件如下:

 在头文件中添加mqtt相关的文件编译成功,致辞移植成功啦!

 

 9、下面就是懒人图形界面设计

 设计好界面后直接上代码关联后台

.cpp源文件

#include "dialog.h"
#include "ui_dialog.h"
#include <qdebug.h>

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::Dialog)
{
    ui->setupUi(this);
    pMqttClient = new QMqttClient(this);//创建一个客户端对象
    connect(pMqttClient,&QMqttClient::stateChanged,this,&Dialog::updateLogStateChange);
    connect(pMqttClient,&QMqttClient::messageReceived,this,&Dialog::recv_message);
}

Dialog::~Dialog()
{
    delete ui;
}

void Dialog::updateLogStateChange()//监测客户端的状态是否发生改变
{
    const QString content = QLatin1String(":state change")
            +QString::number(pMqttClient->state())+QLatin1Char('\n');
    qDebug()<<content;
}

void Dialog::on_connectBt_clicked()//连接服务器
{

    pMqttClient->setHostname(ui->ServerIPEdit->text().trimmed());//设置主机IP
    pMqttClient->setPort(ui->PortEdit->text().trimmed().toUInt());//设置端口号
    updateLogStateChange();
    if(pMqttClient->state()==QMqttClient::Disconnected){
        pMqttClient->connectToHost();
        ui->connectBt->setText(tr("Disconnected"));
    }else{
        pMqttClient->disconnectFromHost();
        ui->connectBt->setText(tr("Connect"));
    }
}

void Dialog::on_PublishBt_clicked()//发布主题
{
    QString topic=ui->topicEdit->text().trimmed();//获取主题
    QString playload = ui->playloadEdit->text().trimmed();
    pMqttClient->publish(QMqttTopicName(topic),playload.toLocal8Bit());
    qDebug()<<"publish: ["<<topic<<"] "<<playload;
}

void Dialog::on_SubscribeBt_clicked()//订阅主题
{
    QString topic = ui->Subscribe_top_Edit->text().trimmed();//获取订阅的主题
    pMqttClient->subscribe(QMqttTopicFilter(topic));
    qDebug()<<"Subscribe:"<<topic;
}

void Dialog::recv_message(const QByteArray &message,const QMqttTopicName &topic)//获取订阅的消息内容
{
    QString receiveTempStr = ui->Subscribe_play_Edit->toPlainText();
    QString receiveStr = receiveTempStr + "\n["+topic.name()+"] "+message;
    ui->Subscribe_play_Edit->setPlainText(receiveStr);
    ui->Subscribe_play_Edit->moveCursor(QTextCursor::End);
    qDebug()<<message<<"\n"<<topic.name();

}
#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <mqtt/qmqttclient.h>

QT_BEGIN_NAMESPACE
namespace Ui { class Dialog; }
QT_END_NAMESPACE

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = nullptr);
    ~Dialog();
protected:
    QMqttClient *pMqttClient;
private slots:
    void on_connectBt_clicked();

    void on_PublishBt_clicked();

    void on_SubscribeBt_clicked();

    void updateLogStateChange();//客户端状态发生改变
    void recv_message(const QByteArray &message,const QMqttTopicName &topic);
private:
    Ui::Dialog *ui;
};
#endif // DIALOG_H

至此实验结束啦

  • 13
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: 在Linux/ARM下编译安装Qt MQTT库,您可以按照以下步骤进行操作: 1. 首先,确保您已经在ARM架构的Linux系统上安装了必要的编译工具和依赖项,例如GCC、make等。可以通过包管理器或从源代码手动安装它们。 2. 下载Qt MQTT库的源代码,可以从Qt官方网站或其他可靠的资源下载。确保选择与您的Qt版本兼容的源代码。 3. 解压源代码文件,并进入解压后的目录。 4. 打开终端,进入源代码目录,并执行以下命令来生成Makefile: ``` qmake ``` 5. 接下来,使用make命令编译库文件: ``` make ``` 6. 编译过程可能会需要一些时间,具体取决于您的系统性能。请耐心等待编译完成。 7. 完成编译后,可以使用以下命令安装Qt MQTT库到系统中: ``` make install ``` 8. 安装完成后,您可以在系统的Qt库目录中找到MQTT库文件。可以通过以下命令获取库文件的位置: ``` qmake -query QT_INSTALL_LIBS ``` 9. 接下来,您可以在Qt项目中使用MQTT库。在项目的.pro文件中添加以下行: ``` LIBS += -lQt5Mqtt ``` 以上就是在Linux/ARM下编译安装Qt MQTT库的简要步骤。请注意,这只是一般的指导,具体步骤可能会因您所使用的系统和版本而有所差异。请参考Qt官方文档或相关资源获取更详细的信息。 ### 回答2: 在Linux/ARM平台下,编译安装Qt MQTT库的过程如下: 1. 首先,确保系统中已经安装了必要的开发工具链和依赖库。可以使用以下命令安装: ``` sudo apt-get update sudo apt-get install build-essential sudo apt-get install libssl-dev ``` 2. 下载Qt MQTT库的源代码。可以从Qt官方网站的下载页面或Github上的项目页面获取最新的源代码。 3. 解压下载的源代码。可以使用以下命令: ``` tar -xzvf qt-mqtt-xxx.tar.gz cd qt-mqtt-xxx ``` 4. 创建一个用于编译的目录,并进入该目录: ``` mkdir build cd build ``` 5. 配置编译选项。运行以下命令,选择所需的配置选项: ``` qmake .. ``` 你可以在此处添加其他自定义的配置选项。 6. 运行make命令进行编译: ``` make ``` 这将会生成Qt MQTT库的可执行文件。 7. (可选)运行make install命令进行安装。这将会将Qt MQTT库复制到系统目录中,以便其他项目可以使用: ``` sudo make install ``` 如果不想全局安装库,可以跳过此步骤,将生成的库文件手动复制到项目中使用。 完成上述步骤后,你就成功地在Linux/ARM平台下编译安装了Qt MQTT库。注意,具体的命令和选项可能会根据你所使用的Linux发行版和版本而有所不同,以上命令仅供参考。 ### 回答3: 在Linux/ARM下编译安装Qt MQTT库,需要按照以下步骤进行: 1. 首先,确保你已经安装了Qt开发环境和所需的编译工具链。你可以使用命令行工具或者图形界面工具进行安装。 2. 下载Qt MQTT库的源代码。你可以在Qt的官方网站上找到对应的版本。下载后,解压缩源代码到你的开发环境下的任意目录。 3. 打开终端,进入解压缩后的源代码目录。使用cd命令进行切换目录。 4. 创建一个新的构建目录,并进入该目录。这个目录将用于存储编译生成的文件。可以使用以下命令创建并进入该目录: ``` mkdir build cd build ``` 5. 使用qmake命令生成Makefile文件。执行以下命令: ``` qmake .. ``` 6. 使用make命令进行编译。执行以下命令: ``` make ``` 7. 编译完成后,可以使用make install命令进行安装。执行以下命令: ``` make install ``` 8. 安装完成后,你可以在系统的Qt库目录中找到编译生成的MQTT库文件。其中包括头文件和库文件。 9. 最后,你可以在你的项目中使用Qt MQTT库。在你的项目文件中添加相应的包含路径和链接库即可开始使用。 请注意,以上步骤中涉及到的命令和路径可能需要根据你的具体环境和需求进行调整。此外,确保你已经阅读并理解了Qt MQTT库的编译要求和依赖项,以确保顺利进行编译和安装。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值