在ros里面,是有專門的工具幫忙做這一步的,但是ros2里面還沒有,不過我看論壇上大家更加推薦使用代碼的形式做數(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所在的同一臺機(jī)器上運(yùn)行上面兩個(gè)腳本,否則就要修改代碼中的host為mosquitto實(shí)際的IP地址,還要確保網(wǎng)絡(luò)沒有限制。
測試的時(shí)候,要先運(yùn)行subscriber,然后再運(yùn)行publisher,否則subscriber很可能接受不到數(shù)據(jù)。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報(bào)投訴
-
數(shù)據(jù)傳輸
+關(guān)注
關(guān)注
9文章
2201瀏覽量
67595 -
python
+關(guān)注
關(guān)注
57文章
4877瀏覽量
90078 -
MQTT
+關(guān)注
關(guān)注
5文章
734瀏覽量
25110
發(fā)布評論請先 登錄
相關(guān)推薦
熱點(diǎn)推薦
使用slavefifosync2bit與FPGA進(jìn)行數(shù)據(jù)傳輸時(shí),服務(wù)間隔是多少?
您好,請問使用slavefifosync2bit與FPGA進(jìn)行數(shù)據(jù)傳輸時(shí),服務(wù)間隔是多少?
發(fā)表于 07-03 06:21
ADS1299與STM32f407通過SPI進(jìn)行數(shù)據(jù)傳輸的時(shí)候,可以直接使用HAL庫中的HAL_SPI_Receive函數(shù)進(jìn)行數(shù)據(jù)傳輸嗎?
在與STM32f407通過SPI進(jìn)行數(shù)據(jù)傳輸的時(shí)候,可以在使能SPI之后,直接使用HAL庫中的HAL_SPI_Receive函數(shù)進(jìn)行數(shù)據(jù)傳輸嗎?還是需要判斷DRDY,在DRDY置低之后再使用HAL_SPI_Receive函數(shù)?
發(fā)表于 11-13 08:29
請問ldc1000在與主機(jī)進(jìn)行數(shù)據(jù)傳輸的過程中,數(shù)據(jù)傳輸速率設(shè)置為多大合適?
你好,請問ldc1000在與主機(jī)進(jìn)行數(shù)據(jù)傳輸的過程中,數(shù)據(jù)傳輸速率設(shè)置為多大合適(我的差不多1M),但數(shù)據(jù)一直不對····
發(fā)表于 01-17 06:37
怎么用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ù)傳輸??!各位大仙能不能給指明方向!謝謝
發(fā)表于 12-30 19:29
求助各位大神,51單片機(jī)如何通過藍(lán)牙與fpga進(jìn)行數(shù)據(jù)傳輸
求助各位大神,51單片機(jī)如何通過藍(lán)牙與fpga進(jìn)行數(shù)據(jù)傳輸
發(fā)表于 03-27 15:29
關(guān)于EDMA PingPong傳輸和并行傳輸,請問對于PingPong模式的數(shù)據(jù)傳輸,是否只是用一個(gè)channel進(jìn)行數(shù)據(jù)傳輸?
的channel可看做是一個(gè)傳輸事件,用于觸發(fā)一個(gè)EDMA通道進(jìn)行數(shù)據(jù)傳輸。記得Andy在一個(gè)帖子中曾說過,“IPR寄存器是用來記錄產(chǎn)生中斷的EDMA channel源,從低到高每一個(gè)bit依次對應(yīng)相應(yīng)
發(fā)表于 06-20 06:05
用E90-DTU進(jìn)行數(shù)據(jù)傳輸,怎么將數(shù)據(jù)傳到后臺轉(zhuǎn)化
用E90-DTU進(jìn)行數(shù)據(jù)傳輸,怎么將數(shù)據(jù)傳到后臺轉(zhuǎn)化
發(fā)表于 04-02 16:28
如何去實(shí)現(xiàn)串口開啟DMA進(jìn)行數(shù)據(jù)傳輸
STM32CubeMX筆記-串口開啟DMA進(jìn)行數(shù)據(jù)傳輸
發(fā)表于 02-21 07:25
DMA進(jìn)行數(shù)據(jù)傳輸和CPU進(jìn)行數(shù)據(jù)傳輸的疑問
求大佬解答,本人正在學(xué)習(xí)STM32單片機(jī)中DMA直接數(shù)據(jù)存儲部分的內(nèi)容
看了DMA簡介后,也上手過實(shí)例代碼,但是沒有實(shí)際的項(xiàng)目經(jīng)驗(yàn),所以有以下疑問:
DMA外設(shè)在進(jìn)行數(shù)據(jù)傳輸的操作,是否也是需要經(jīng)過
發(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次下載
STM32CubeMX-串口開啟DMA進(jìn)行數(shù)據(jù)傳輸
STM32CubeMX筆記-串口開啟DMA進(jìn)行數(shù)據(jù)傳輸
發(fā)表于 12-27 18:40
?7次下載
如何實(shí)現(xiàn)MQTT協(xié)議數(shù)據(jù)傳輸?
如何實(shí)現(xiàn)MQTT協(xié)議數(shù)據(jù)傳輸? 隨著物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,越來越多的設(shè)備和應(yīng)用需要實(shí)現(xiàn)互聯(lián)互通。而MQTT作為一種輕量級的發(fā)布/訂閱消息傳輸協(xié)議,在物聯(lián)網(wǎng)領(lǐng)域應(yīng)用廣泛,成為了許多設(shè)備之
如何使用MQTT進(jìn)行數(shù)據(jù)傳輸
評論