在ros里面,是有专门的工具帮忙做这一步的,但是ros2里面还没有,不过我看论坛上大家更加推荐使用代码的形式做数据传输。
我使用的是python的paho这个包,首先需要安装
pip install paho
我这里贴两个代码,分别是publisher和subscriber,也就是发布者和订阅者。
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所在的同一台机器上运行上面两个脚本,否则就要修改代码中的host为mosquitto实际的IP地址,还要确保网络没有限制。
测试的时候,要先运行subscriber,然后再运行publisher,否则subscriber很可能接受不到数据。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
数据传输
+关注
关注
9文章
1526浏览量
63563 -
python
+关注
关注
51文章
4675浏览量
83467 -
MQTT
+关注
关注
5文章
538浏览量
21976
发布评论请先 登录
相关推荐
求救!如何用PIC单片机实现GPRS模块进行数据传输
如何用PIC单片机实现GPRS模块进行数据传输,从网上了解到要通过AT指令,没用过啊,请大侠指点,最好给个例子,谢谢!
发表于 12-14 13:59
关于FPGA并行数据传输,PROM配置的问题
FPGA选用的是XC3S1600E,使用XCF08PFSG48C进行配置,选用并行数据传输时,XCF08PFSG48C的片选信号CE一直处于低电平,不跳高,但其他都正常,是怎么回事?
发表于 09-04 13:33
怎么用LABVIEW和FPGA控制W5300进行数据传输
用FPGA 控制W5300(采用的是TCP/IP协议)进行数据传输,上位机软件用LABVIEW做!怎么才能进行数据传输。W5300怎么与LABVIEW进行数据传输!!各位大仙能不能给指明方向!谢谢
发表于 12-30 19:29
TCP通信,完成了使用WiFi模块,进行数据传输。功能:包括接收数据,发送数据,发送文件。
完成了使用WiFi模块,进行数据传输。功能:包括接收数据,发送数据,发送文件。
发表于 01-21 20:16
关于EDMA PingPong传输和并行传输,请问对于PingPong模式的数据传输,是否只是用一个channel进行数据传输?
的channel可看做是一个传输事件,用于触发一个EDMA通道进行数据传输。记得Andy在一个帖子中曾说过,“IPR寄存器是用来记录产生中断的EDMA channel源,从低到高每一个bit依次对应相应
发表于 06-20 06:05
ZIGBEE cc2530之间通过spi进行数据传输问题的解决办法?
ZIGBEEcc2530之间通过spi进行数据传输。。谁有这个代码??类似的也行两个cc2530之间传输的时候总是有问题
发表于 08-26 03:49
51单片机实现控制网卡芯片进行数据传输的设计 精选资料分享
在网络技术应用日益广泛的今天,网络传输是最经济有效的数据传输方式。如何利用廉价的51单片机来控制网卡芯片进行数据传输,加载TCP/IP协议连接到互联网,实现网络通信成了众多设计者的目标。但由于指令
发表于 07-21 07:31
DMA进行数据传输和CPU进行数据传输的疑问
求大佬解答,本人正在学习STM32单片机中DMA直接数据存储部分的内容
看了DMA简介后,也上手过实例代码,但是没有实际的项目经验,所以有以下疑问:
DMA外设在进行数据传输的操作,是否也是需要经过
发表于 05-25 17:18
如何实现MQTT协议数据传输?
如何实现MQTT协议数据传输? 随着物联网技术的不断发展,越来越多的设备和应用需要实现互联互通。而MQTT作为一种轻量级的发布/订阅消息传输协议,在物联网领域应用广泛,成为了许多设备之
评论