MQTT 使用 Python 和 paho-mqtt 发布字节数组
MQTT publishing an array of bytes using Python and paho-mqtt
我正在使用 paho-mqtt 在 Python 中创建 MQTT 测试,我需要能够向我的代理发送一个字节数组。订阅者查找不同数据类型的多个主题。基于字符串的有效负载工作正常,但数值必须以字节数组的形式接收,并且数字类型的长度正确(即 32 位整数必须是 4 字节的数组)
例如,要发送一个 32 位整数 (INT32),有效负载将为 00 00 00 00
如果我想发送小数 53,我需要发送 00 00 00 35 (0x35 = 53)
由于此测试是 运行 作为套件的一部分,因此它需要在 Python 中,而 paho-mqtt 是我们选择的 mqtt 包。
如果有人能告诉我如何使用 paho-mqtt 来 t运行发送字节数组,将不胜感激。
使用python结构模块打包二进制数据。例如:
import struct
struct.pack('i', 53)
将产生:
'5\x00\x00\x00'
(注意:使用您的示例,“5”只是 53 的 ASCII 值)。
此外,要明确指定端序(字节顺序),请使用:
struct.pack('>i', 53)
这将产生反转的字节数:
'\x00\x00\x005'
您可以使用重复计数来指定数组。例如,'10i' 表示 10 个 32 位整数的数组,每个 4 个字节,总共 40 个字节。
有关详细信息,请参阅结构模块文档:https://docs.python.org/2.7/library/struct.html
我正在使用 paho-mqtt 在 Python 中创建 MQTT 测试,我需要能够向我的代理发送一个字节数组。订阅者查找不同数据类型的多个主题。基于字符串的有效负载工作正常,但数值必须以字节数组的形式接收,并且数字类型的长度正确(即 32 位整数必须是 4 字节的数组)
例如,要发送一个 32 位整数 (INT32),有效负载将为 00 00 00 00
如果我想发送小数 53,我需要发送 00 00 00 35 (0x35 = 53)
由于此测试是 运行 作为套件的一部分,因此它需要在 Python 中,而 paho-mqtt 是我们选择的 mqtt 包。
如果有人能告诉我如何使用 paho-mqtt 来 t运行发送字节数组,将不胜感激。
使用python结构模块打包二进制数据。例如:
import struct
struct.pack('i', 53)
将产生:
'5\x00\x00\x00'
(注意:使用您的示例,“5”只是 53 的 ASCII 值)。
此外,要明确指定端序(字节顺序),请使用:
struct.pack('>i', 53)
这将产生反转的字节数:
'\x00\x00\x005'
您可以使用重复计数来指定数组。例如,'10i' 表示 10 个 32 位整数的数组,每个 4 个字节,总共 40 个字节。
有关详细信息,请参阅结构模块文档:https://docs.python.org/2.7/library/struct.html