国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

嵌入式QT- QT使用MQTT

這篇具有很好參考價值的文章主要介紹了嵌入式QT- QT使用MQTT。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、MQTT介紹

二、MQTT概念

? 2.1 訂閱(Subscribtion)

? 2.2?會話(Session)

? 2.3 主題名(Topic Name)

? ?2.4 主題篩選器(Topic Filter)

? ?2.5 消息訂閱

三、MQTT中的角色

3.1 客戶端

3.2 服務器

四、X86平臺安裝mosquitto

4.1 下載?mosquitto 服務器

4.2?下載 mosquitto 客戶端

4.3?mosquitto 命令

? ?4.3.1??mosquitto

? ?4.3.2??mosquitto_pub

? ?4.3.3??mosquitto_sub

五、軟件測試?

六、QT使用MQTT?

? ?6.1 MQTT初始化

? ? 6.1.1 源碼下載

? ? 6.2.1 將源碼添加到工程?

? ?6.3.1 添加頭文件路徑?

?6.4.1 編譯

? 6.5.1 mqtt初始化?

? 6.6.1mqtt信號與槽

? ?6.7.1 MQTT發(fā)布

嵌入式QT- QT使用MQTT,C++,嵌入式,編程語言,網(wǎng)絡,數(shù)據(jù)庫,服務器?

一、MQTT介紹

? ? MQTT Message Queuing Telemetry Transport , 消 息 隊 列 遙 測 傳 輸 協(xié) 議 ), 是 一 種 基于發(fā)布 / 訂 閱 publish/subscribe)模式的 " 輕量級 " 通訊協(xié)議,該協(xié)議構(gòu)建于 TCP/IP 協(xié)議上,由 IBM 1999 年發(fā)布。 MQTT 最大優(yōu)點在于,可以以極少的代碼和有限的帶寬,為連接遠程設備提供實時可靠的消息服務。作為一種低開銷、低帶寬占用的即時通訊協(xié)議,使其在物聯(lián)網(wǎng)、小型設備、移動應用等方面有較廣泛的應用。
MQTT 是一個基于客戶端 - 服務器的消息發(fā)布 / 訂閱傳輸協(xié)議。 MQTT 協(xié)議是輕量、簡單、開放和易于實現(xiàn)的,
? ?這些特點使它適用范圍非常廣泛。在很多情況下,包括受限的環(huán)境中,如:機器與機器( M2M )通信和物聯(lián)網(wǎng)(IoT )。其在,通過衛(wèi)星鏈路通信傳感器、偶爾撥號的醫(yī)療設備、智能家居、及一些小型化設備中已廣泛使用。

二、MQTT概念

? 2.1 訂閱(Subscribtion)

? ?訂閱包含主題篩選器( Topic Filter )和最大服務質(zhì)量( QoS )。訂閱會與一個會話( Session )關(guān)聯(lián)。一個會話可以包含多個訂閱。每一個會話中的每個訂閱都有一個不同的主題篩選器。

? 2.2?會話(Session)

? ? 每個客戶端與服務器建立連接后就是一個會話,客戶端和服務器之間有狀態(tài)交互。會話存在于一個網(wǎng)絡之間,也可能在客戶端和服務器之間跨越多個連續(xù)的網(wǎng)絡連接。

? 2.3 主題名(Topic Name)

? ?連接到一個應用程序消息的標簽,該標簽與服務器的訂閱相匹配。服務器會將消息發(fā)送給訂閱所匹配標簽的每個客戶端。
? 需要注意的是, MQTT 中消息主題按照層級命名,使用 ‘/’ 進行分割
? 此外,主題中可以使用通配符進行多個主題或多層級的訂閱,有兩種常見的通配符:
1. 單層通配符 + :單層通配符只能匹配一層的主題,例如: China/Beijing/+ ,可以匹配的只有 Beijing 這個主 題下面一層的主題,例如 Xicheng, DongCheng, Xuanwu 等等。
2. 多層通配符 # :顧名思義,多層通配符就是可以匹配多個層級的主題,例如: China/# ,可以匹配到的主題可能有:China/Beijing/Dongcheng, China/Shanghai/PuDong ,等等。

? ?2.4 主題篩選器(Topic Filter)

一個對主題名通配符篩選器,在訂閱表達式中使用,表示訂閱所匹配到的多個主題。

? ?2.5 消息訂閱

消息訂閱者所具體接收的內(nèi)容。


三、MQTT中的角色

嵌入式QT- QT使用MQTT,C++,嵌入式,編程語言,網(wǎng)絡,數(shù)據(jù)庫,服務器

?1. Publisher 和 Subscriber 為客戶端,Broker 為服務器端,消息主題為消息類型,Broker 根據(jù) Topic 過濾消息,并將消息向客戶端推送。

2. MQTT 中用 QoS 表示服務質(zhì)量, MQTT 協(xié)議中有三種服務質(zhì)量 (QoS)
? 1 QoS =0 ,至多一次,可能會出現(xiàn)丟包的情況,使用在對實時性要求不高的情況,例如,將此服務質(zhì)量與通信環(huán)境傳感器數(shù)據(jù)一起使用。 對于是否丟失個別讀取或是否稍后立即發(fā)布新的讀取并不重要。
? 2 QoS =1, 至少一次,保證包會到達目的地,但是可能出現(xiàn)重包。
? 3 QoS =2, 剛好一次,保證包會到達目的地,且不會出現(xiàn)重包的現(xiàn)象。

3.1 客戶端

1. Publisher Subscriber 都屬于客戶端。
2. 發(fā)布應用消息給其它相關(guān)的客戶端。
3. 訂閱以請求接受相關(guān)的應用消息。
4. 取消訂閱以移除接受應用消息的請求。
5. 從服務端斷開連接

3.2 服務器

1. 服務器端即所謂的 MQTT Broker 服務器。
2. 接受來自客戶端的網(wǎng)絡連接。
3. 接受客戶端發(fā)布的應用消息。
4. 處理客戶端的訂閱和取消訂閱請求。
5. 轉(zhuǎn)發(fā)應用消息給符合條件的已訂閱客戶端。
6. MQTT 提供的公共服務器端( Broker )有:
?1) test.mosquitto.org
?2) broker.hivemq.com
?3) iot.eclipse.org

?


四、X86平臺安裝mosquitto

嵌入式QT- QT使用MQTT,C++,嵌入式,編程語言,網(wǎng)絡,數(shù)據(jù)庫,服務器

4.1 下載?mosquitto 服務器

命令:

sudo apt-get install mosquitto

4.2?下載 mosquitto 客戶端

sudo apt-get install mosquitto-clients

4.3?mosquitto 命令

? ?4.3.1??mosquitto

啟動服務器的命令 , Ubuntu 里已經(jīng)啟動了。

? ?4.3.2??mosquitto_pub

發(fā)布消息使用的命令
mosquitto_pub -h 192.168.0.137 -t "house" -m "500"
-h 是指定從哪個服務器發(fā)布
-t 是指定發(fā)布哪個主題
-m 是消息的內(nèi)容

? ?4.3.3??mosquitto_sub

訂閱消息使用的命令
mosquitto_sub -h 192.168.0.137 -t "house" -v
-h 是指定從哪個服務器訂閱;
-t 是指定訂閱哪個主題;
-v 的意思是收到消息打印出來
嵌入式QT- QT使用MQTT,C++,嵌入式,編程語言,網(wǎng)絡,數(shù)據(jù)庫,服務器

五、軟件測試?

windows 安裝 mqttfx-1.7.1-windows-x64.exe 測試軟件并打開
嵌入式QT- QT使用MQTT,C++,嵌入式,編程語言,網(wǎng)絡,數(shù)據(jù)庫,服務器

嵌入式QT- QT使用MQTT,C++,嵌入式,編程語言,網(wǎng)絡,數(shù)據(jù)庫,服務器?

嵌入式QT- QT使用MQTT,C++,嵌入式,編程語言,網(wǎng)絡,數(shù)據(jù)庫,服務器?

嵌入式QT- QT使用MQTT,C++,嵌入式,編程語言,網(wǎng)絡,數(shù)據(jù)庫,服務器?

測試結(jié)果:

嵌入式QT- QT使用MQTT,C++,嵌入式,編程語言,網(wǎng)絡,數(shù)據(jù)庫,服務器?


六、QT使用MQTT?

? ?6.1 MQTT初始化

? ? 6.1.1 源碼下載

https://github.com/emqx/qmqtt
使用這個庫 Qt 版本必須大于 5.3 ,它有兩個版本 : master release 版本 , 我們在此用 release 版本
嵌入式QT- QT使用MQTT,C++,嵌入式,編程語言,網(wǎng)絡,數(shù)據(jù)庫,服務器

嵌入式QT- QT使用MQTT,C++,嵌入式,編程語言,網(wǎng)絡,數(shù)據(jù)庫,服務器?

? ? 6.2.1 將源碼添加到工程?

嵌入式QT- QT使用MQTT,C++,嵌入式,編程語言,網(wǎng)絡,數(shù)據(jù)庫,服務器

嵌入式QT- QT使用MQTT,C++,嵌入式,編程語言,網(wǎng)絡,數(shù)據(jù)庫,服務器?

添加到network模塊

嵌入式QT- QT使用MQTT,C++,嵌入式,編程語言,網(wǎng)絡,數(shù)據(jù)庫,服務器?

? ?

? ?6.3.1 添加頭文件路徑?

嵌入式QT- QT使用MQTT,C++,嵌入式,編程語言,網(wǎng)絡,數(shù)據(jù)庫,服務器

出錯:解決方法

嵌入式QT- QT使用MQTT,C++,嵌入式,編程語言,網(wǎng)絡,數(shù)據(jù)庫,服務器?

?6.4.1 編譯

?嵌入式QT- QT使用MQTT,C++,嵌入式,編程語言,網(wǎng)絡,數(shù)據(jù)庫,服務器

出錯

解決方法:

嵌入式QT- QT使用MQTT,C++,嵌入式,編程語言,網(wǎng)絡,數(shù)據(jù)庫,服務器?

? 6.5.1 mqtt初始化?

QMQTT::Client *mqttClient ;
QString clientID;
qsrand(QTime(0,0,0).msecsTo(QTime::currentTime()));
clientID = "XYD-CXX"+QString::number(qrand()); //合成 mqtt id
//mqtt 初始化
mqttClient = new QMQTT::Client(ui->lEditServerIP->text(), 1883);
mqttClient->setClientId(clientID); //ClientId 不能重復,不然會覆蓋之前連接的人的
//mqttClient->setUsername("user"); //服務器賬號密碼,不需要則不用
//mqttClient->setPassword("password");
mqttClient->connect();

? 6.6.1mqtt信號與槽

//mqtt 連接成功
connect(mqttClient,SIGNAL(connected()),this,SLOT(doProcessMqttConnected()));
//mqtt 退出成功 
connect(mqttClient,SIGNAL(disconnected()),this,SLOT(doProcessMqttDisconnected()));
//mqtt 訂閱成功 
connect(mqttClient,SIGNAL(subscribed(QString)),this,SLOT(doProcessMqttSubscribe(QSt
ring)));
//mqtt 訂閱到消息 
connect(mqttClient,SIGNAL(received(QMQTT::Message)),this,SLOT(doProcessMqttReceived
(QMQTT::Message)));

? ?6.7.1 MQTT發(fā)布

if(mqttIsConnected)
{
 QMQTT::Message msg;
 msg.setTopic(ui->lEditPub->text()); //發(fā)布的主題
//發(fā)布的內(nèi)容,QString 轉(zhuǎn) QByteArray
 msg.setPayload(ui->lEditPubPayload->text().toLatin1());
mqttClient->publish(msg);
}

? ?訂閱成功的槽函數(shù):一般不用這個

void MqttForm::doProcessMqttSubscribe(QString topic)
{
 //qDebug()<< topic + "is Subscribe";
}

收到信息的槽函數(shù):文章來源地址http://www.zghlxwxcb.cn/news/detail-542136.html

void MqttForm::doProcessMqttReceived(QMQTT::Message msg)
{
qDebug() << "topic:" + msg.topic();
qDebug() << "payload:" + msg.payload();
}

到了這里,關(guān)于嵌入式QT- QT使用MQTT的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 嵌入式培訓機構(gòu)四個月實訓課程筆記(完整版)-C++和QT編程第五天-Qt編程技巧若干解答(物聯(lián)技術(shù)666)

    鏈接:https://pan.baidu.com/s/1-u7GvgM0TLuiy9z7LYQ80Q?pwd=1688 提取碼:1688 ============? QT在Windows下制作圖表 ============ QT是跨平臺的程序設計庫,在windows下的程序往往想要有一個好看的圖標,方法如下: 1.準備個ICO圖標。例如:myappico.ico 2.用寫字版新建個文件,里面就寫一行: IDI_ICON1?

    2024年01月23日
    瀏覽(23)
  • 嵌入式培訓機構(gòu)四個月實訓課程筆記(完整版)-C++和QT編程第五天-Qt基礎(物聯(lián)技術(shù)666)

    嵌入式培訓機構(gòu)四個月實訓課程筆記(完整版)-C++和QT編程第五天-Qt基礎(物聯(lián)技術(shù)666)

    鏈接:https://pan.baidu.com/s/1HENCN2TrrxRvvkAmPxonfg?pwd=1688 提取碼:1688 QT常用快捷鍵 ctrl+f? 高亮查找; ctrl+s? 保存 ctrl+/? 注銷 F1?? ?? 對指定的文件幫助顯示,連續(xù)2下,全屏顯示 ctrl+鼠標左鍵? 跳轉(zhuǎn)到目標內(nèi)容 label:改變前景和背景是window 和windowtext? 背景色必須勾選autofillbackgro

    2024年01月20日
    瀏覽(51)
  • 【嵌入式Qt開發(fā)入門】如何使用Qt進行繪圖——QPainter 繪圖

    【嵌入式Qt開發(fā)入門】如何使用Qt進行繪圖——QPainter 繪圖

    ????????繪圖與圖表在嵌入式里有的比較多,尤其是圖表,我們常在股票里看到的“圖表折線/曲線 圖/餅狀圖等”都可以用 Qt 的圖表來實現(xiàn)。繪圖和圖表的內(nèi)容本章主要介紹繪圖和圖表的基本操作,以簡單的例子呈現(xiàn)繪圖與圖表的用法,目的就是快速入門繪圖與圖表,關(guān)

    2024年02月12日
    瀏覽(34)
  • 【嵌入式Qt開發(fā)入門】如何使用Qt進行繪制實時圖表——QChart 圖表

    【嵌入式Qt開發(fā)入門】如何使用Qt進行繪制實時圖表——QChart 圖表

    ????????要想使用 Qt Charts,我們的 Qt 版本得使用 Qt 5.7 之后的版本。其實 Qt Charts 并不是 Qt 5.7 才有的,是在 Qt 5.7 以前只有商業(yè)版本的 Qt 才有 Qt Charts。我們能免費下載的 Qt 版本都是社區(qū)(開源)版本。 ????????Qt Charts 很方便的繪制我們常見的曲線圖、折線圖、柱狀

    2024年02月12日
    瀏覽(27)
  • 【嵌入式Qt開發(fā)入門】如何使用Qt進行文本讀寫——QFile讀寫文本

    【嵌入式Qt開發(fā)入門】如何使用Qt進行文本讀寫——QFile讀寫文本

    ????????在很多時候我們需要讀寫文本文件進行讀寫,比如寫個 Mp3 音樂播放器需要讀 Mp3 歌詞里的文本,比如修改了一個 txt 文件后保存,就需要對這個文件進行讀寫操作。本文介紹簡單的文本文件讀寫,內(nèi)容精簡,讓大家了解文本讀寫的基本操作。 ????????QFile 類提

    2024年02月12日
    瀏覽(26)
  • 嵌入式學習筆記——使用寄存器編程操作GPIO

    嵌入式學習筆記——使用寄存器編程操作GPIO

    上一篇重點介紹了STM32 GPIO的輸入輸出模式,在整個框圖中我們發(fā)現(xiàn)需要我們使用代碼來控制GPIO的模式,本文的重點就是使用寄存器的編程方式,實現(xiàn)對于GPIO口的操作。 在這里首先需要做一個區(qū)分,我們常見的STM32的開發(fā)方式有兩種,也就是寄存器開發(fā)與庫函數(shù)開發(fā)。寄存器

    2023年04月09日
    瀏覽(44)
  • 物聯(lián)網(wǎng)實戰(zhàn)--入門篇之(七)嵌入式-MQTT

    物聯(lián)網(wǎng)實戰(zhàn)--入門篇之(七)嵌入式-MQTT

    目錄 一、MQTT簡介 二、MQTT使用方法 三、MQTT驅(qū)動設計 四、代碼解析 五、使用過程 六、總結(jié) 一、MQTT簡介 ? ? ? ? MQTT因為其輕量、高效和穩(wěn)定的特點,特別適合作為物聯(lián)網(wǎng)系統(tǒng)的數(shù)據(jù)傳輸協(xié)議,已經(jīng)成為物聯(lián)網(wǎng)事實上的通信標準了。關(guān)于協(xié)議的具體內(nèi)容看看這篇文章和官方文

    2024年04月08日
    瀏覽(25)
  • 嵌入式培訓機構(gòu)四個月實訓課程筆記(完整版)-C++和QT編程第二天-類與對象(物聯(lián)技術(shù)666)

    鏈接:https://pan.baidu.com/s/1Am83Ut449WCbuTiodwJWgg?pwd=1688 提取碼:1688 上午:類和對象?? 下午:類和對象高級應用 教學內(nèi)容: 1 、構(gòu)造函數(shù) 析構(gòu)函數(shù) 拷貝構(gòu)造函數(shù) 構(gòu)造函數(shù): 每一個對象的創(chuàng)建都必須初始化,如果在沒有寫初始化函數(shù)(即構(gòu)造函數(shù)),系統(tǒng)會默認寫構(gòu)造函數(shù),

    2024年02月01日
    瀏覽(24)
  • 【嵌入式-網(wǎng)絡編程】vmware中使用UDP廣播失敗問題

    問題描述: 自己在vmware中搭建了2臺虛擬機,虛擬機A向虛擬機A和虛擬機B發(fā)送廣播信息,接收端在虛擬機A和虛擬機B,這個時候,由于沒配置 sin.sin_addr.s_addr = htonl(INADDR_ANY); ,而是配置的 inet_pton(AF_INET, SERV_IP, sin.sin_addr.s_addr); ,導致虛擬機A的廣播信號發(fā)出去了,但是虛擬機B和

    2024年01月23日
    瀏覽(25)
  • MQTT協(xié)議版本Mosquitto移植到嵌入式arm平臺

    MQTT協(xié)議版本Mosquitto移植到嵌入式arm平臺

    MQTT是一個基于客戶端-服務器的消息發(fā)布/訂閱傳輸協(xié)議。MQTT協(xié)議是輕量、簡單、開放和易于實現(xiàn)的,這些特點使它適用范圍非常廣泛。在很多情況下,包括受限的環(huán)境中,如:機器與機器(M2M)通信和物聯(lián)網(wǎng)(IoT)。其在,通過衛(wèi)星鏈路通信傳感器、偶爾撥號的醫(yī)療設備、智

    2024年02月06日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包