0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用MQTT進(jìn)行數(shù)據(jù)傳輸

麥辣雞腿堡 ? 來(lái)源:古月居 ? 作者:葉夏 ? 2023-11-09 15:37 ? 次閱讀

ros里面,是有專(zhuān)門(mén)的工具幫忙做這一步的,但是ros2里面還沒(méi)有,不過(guò)我看論壇上大家更加推薦使用代碼的形式做數(shù)據(jù)傳輸。

我使用的是python的paho這個(gè)包,首先需要安裝

pip install paho

我這里貼兩個(gè)代碼,分別是publisher和subscriber,也就是發(fā)布者和訂閱者。

1. publisher

import time
import paho.mqtt.client as mqtt




class Publisher:
    def __init__(self, host="127.0.0.1", port=1883, topic="test_channel"):
        self.host = host
        self.port = port
        self.topic = topic
        self.client = mqtt.Client()


        self.client.on_connect = self.on_connect
        self.client.on_publish = self.on_publish


    def on_connect(self, client, userdata, flags, rc):
       print("Connected with result code "+str(rc))


    def on_publish(self, client, userdata, mid):
        print("Message Published ...")


    def start(self, msg="Hello MQTT", times=10, delay=1):
        self.client.connect(self.host, self.port, 60)
        self.client.loop_start()


        for i in range(times):
            time.sleep(delay)
            self.client.publish(self.topic, f"{msg} {i}")




if __name__ == "__main__":
    publisher = Publisher()
    publisher.start()

2. subscriber

import paho.mqtt.client as mqtt




class Subscriber:
    def __init__(self, host="127.0.0.1", port=1883, topic="test_channel"):
        self.host = host
        self.port = port
        self.topic = topic
        self.msg_count = 0
        self.client = mqtt.Client()


        self.client.on_connect = self.on_connect
        self.client.on_message = self.on_message


    def on_connect(self, client, userdata, flags, rc):
        print("Connected with result code "+str(rc))
        self.client.subscribe(self.topic)


    def on_message(self, client, userdata, msg):
        self.msg_count += 1
        print(f"Message {self.msg_count}: {msg.topic} {str(msg.payload)}")


    def start(self):
        self.client.connect(self.host, self.port, 60)
        self.client.loop_forever()




if __name__ == "__main__":
    subscriber = Subscriber()
    subscriber.start()

可以在跟mosquitto所在的同一臺(tái)機(jī)器上運(yùn)行上面兩個(gè)腳本,否則就要修改代碼中的host為mosquitto實(shí)際的IP地址,還要確保網(wǎng)絡(luò)沒(méi)有限制。

測(cè)試的時(shí)候,要先運(yùn)行subscriber,然后再運(yùn)行publisher,否則subscriber很可能接受不到數(shù)據(jù)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)傳輸
    +關(guān)注

    關(guān)注

    9

    文章

    1794

    瀏覽量

    64413
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4768

    瀏覽量

    84378
  • MQTT
    +關(guān)注

    關(guān)注

    5

    文章

    647

    瀏覽量

    22392
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用slavefifosync2bit與FPGA進(jìn)行數(shù)據(jù)傳輸時(shí),服務(wù)間隔是多少?

    您好,請(qǐng)問(wèn)使用slavefifosync2bit與FPGA進(jìn)行數(shù)據(jù)傳輸時(shí),服務(wù)間隔是多少?
    發(fā)表于 07-03 06:21

    怎么用LABVIEW和FPGA控制W5300進(jìn)行數(shù)據(jù)傳輸

    用FPGA 控制W5300(采用的是TCP/IP協(xié)議)進(jìn)行數(shù)據(jù)傳輸,上位機(jī)軟件用LABVIEW做!怎么才能進(jìn)行數(shù)據(jù)傳輸。W5300怎么與LABVIEW進(jìn)行數(shù)據(jù)傳輸?。「魑淮笙赡懿荒芙o指明方向!謝謝
    發(fā)表于 12-30 19:29

    求助各位大神,51單片機(jī)如何通過(guò)藍(lán)牙與fpga進(jìn)行數(shù)據(jù)傳輸

    求助各位大神,51單片機(jī)如何通過(guò)藍(lán)牙與fpga進(jìn)行數(shù)據(jù)傳輸
    發(fā)表于 03-27 15:29

    關(guān)于EDMA PingPong傳輸和并行傳輸,請(qǐng)問(wèn)對(duì)于PingPong模式的數(shù)據(jù)傳輸,是否只是用一個(gè)channel進(jìn)行數(shù)據(jù)傳輸?

    的channel可看做是一個(gè)傳輸事件,用于觸發(fā)一個(gè)EDMA通道進(jìn)行數(shù)據(jù)傳輸。記得Andy在一個(gè)帖子中曾說(shuō)過(guò),“IPR寄存器是用來(lái)記錄產(chǎn)生中斷的EDMA channel源,從低到高每一個(gè)bit依次對(duì)應(yīng)相應(yīng)
    發(fā)表于 06-20 06:05

    用E90-DTU進(jìn)行數(shù)據(jù)傳輸,怎么將數(shù)據(jù)傳到后臺(tái)轉(zhuǎn)化

    用E90-DTU進(jìn)行數(shù)據(jù)傳輸,怎么將數(shù)據(jù)傳到后臺(tái)轉(zhuǎn)化
    發(fā)表于 04-02 16:28

    ZIGBEE cc2530之間通過(guò)spi進(jìn)行數(shù)據(jù)傳輸問(wèn)題的解決辦法?

    ZIGBEEcc2530之間通過(guò)spi進(jìn)行數(shù)據(jù)傳輸。。誰(shuí)有這個(gè)代碼??類(lèi)似的也行兩個(gè)cc2530之間傳輸的時(shí)候總是有問(wèn)題
    發(fā)表于 08-26 03:49

    如何通過(guò)單一數(shù)據(jù)進(jìn)行數(shù)據(jù)傳輸?

    如何通過(guò)單一數(shù)據(jù)進(jìn)行數(shù)據(jù)傳輸
    發(fā)表于 12-02 07:14

    如何通過(guò)SPI與單片機(jī)進(jìn)行數(shù)據(jù)傳輸?

    如何通過(guò)SPI與單片機(jī)進(jìn)行數(shù)據(jù)傳輸
    發(fā)表于 02-17 06:32

    如何去實(shí)現(xiàn)串口開(kāi)啟DMA進(jìn)行數(shù)據(jù)傳輸

    STM32CubeMX筆記-串口開(kāi)啟DMA進(jìn)行數(shù)據(jù)傳輸
    發(fā)表于 02-21 07:25

    DMA進(jìn)行數(shù)據(jù)傳輸和CPU進(jìn)行數(shù)據(jù)傳輸的疑問(wèn)

    求大佬解答,本人正在學(xué)習(xí)STM32單片機(jī)中DMA直接數(shù)據(jù)存儲(chǔ)部分的內(nèi)容 看了DMA簡(jiǎn)介后,也上手過(guò)實(shí)例代碼,但是沒(méi)有實(shí)際的項(xiàng)目經(jīng)驗(yàn),所以有以下疑問(wèn): DMA外設(shè)在進(jìn)行數(shù)據(jù)傳輸的操作,是否也是需要經(jīng)過(guò)
    發(fā)表于 05-25 17:18

    HT56R678使用I2C進(jìn)行數(shù)據(jù)傳輸的方法

    HT56R678使用I2C進(jìn)行數(shù)據(jù)傳輸的方法 HT56R678 內(nèi)建有SIM 功能,其中包括了SPI 和I2C 兩種通信接口,本文以HT56R678 為母體,介紹使用I2C 進(jìn)行數(shù)據(jù)傳輸的方法和注意
    發(fā)表于 03-27 09:25 ?16次下載

    HT56R678使用I2C進(jìn)行數(shù)據(jù)傳輸的方法

    HT56R678使用I2C進(jìn)行數(shù)據(jù)傳輸的方法HT56R678 內(nèi)建有SIM 功能,其中包括了SPI 和I2C 兩種通信接口,本文以HT56R678 為母體,介紹使用I2C 進(jìn)行數(shù)據(jù)傳輸的方法和注意事項(xiàng)。
    發(fā)表于 03-28 22:39 ?7次下載

    嵌入式GPRS數(shù)據(jù)傳輸終端設(shè)計(jì)

    利用嵌入式平臺(tái)的硬件、軟件技術(shù)、開(kāi)發(fā)了基于GPRS網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)傳輸的嵌入式數(shù)據(jù)傳輸終端設(shè)備。通過(guò)設(shè)計(jì)一種應(yīng)用層通信協(xié)議,很好地解決了在不可靠的無(wú)線傳輸鏈路上進(jìn)行數(shù)據(jù)傳輸
    發(fā)表于 09-13 11:02 ?62次下載
    嵌入式GPRS<b class='flag-5'>數(shù)據(jù)傳輸</b>終端設(shè)計(jì)

    STM32CubeMX-串口開(kāi)啟DMA進(jìn)行數(shù)據(jù)傳輸

    STM32CubeMX筆記-串口開(kāi)啟DMA進(jìn)行數(shù)據(jù)傳輸
    發(fā)表于 12-27 18:40 ?7次下載
    STM32CubeMX-串口開(kāi)啟DMA<b class='flag-5'>進(jìn)行數(shù)據(jù)傳輸</b>

    如何實(shí)現(xiàn)MQTT協(xié)議數(shù)據(jù)傳輸?

    如何實(shí)現(xiàn)MQTT協(xié)議數(shù)據(jù)傳輸? 隨著物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,越來(lái)越多的設(shè)備和應(yīng)用需要實(shí)現(xiàn)互聯(lián)互通。而MQTT作為一種輕量級(jí)的發(fā)布/訂閱消息傳輸協(xié)議,在物聯(lián)網(wǎng)領(lǐng)域應(yīng)用廣泛,成為了許多設(shè)備之
    的頭像 發(fā)表于 11-15 17:23 ?1087次閱讀