gpt4 book ai didi

python - 如何在 Python 中构建 XBee 十六进制长地址

转载 作者:太空宇宙 更新时间:2023-11-04 06:43:03 25 4
gpt4 key购买 nike

我正在尝试构建一个 XBee dest_addr_long(XBee 的十六进制地址)但我不断收到错误

ValueError: The data provided for 'dest_addr_long' was not 8 bytes long

我试过这个例子:

device={
"CO3":'\x00\x13\xa2\x00\x40\x52\x8d\x8a'
}

这可行,但我不知道地址,直到设备出现在我的 PAN 上,然后我获取地址并将其存储在数据库中并更改节点 ID。

这是我的代码以及我如何尝试生成 XBee 地址

xbee_source_addr_long = xbee_packet['source_addr_long']
source_addr_long= ''.join(x.encode('hex') for x in xbee_source_addr_long)
xbee_source_addr_long_hex = (r"\x" + str(source_addr_long [0:2]) +
r"\x" + str(source_addr_long [2:4]) +
r"\x" + str(source_addr_long [4:6]) +
r"\x" + str(source_addr_long [6:8]) +
r"\x" + str(source_addr_long [8:10]) +
r"\x" + str(source_addr_long [10:12]) +
r"\x" + str(source_addr_long [12:14]) +
r"\x" + str(source_addr_long [14:16]))

这给了我一个格式正确的字符串,但 len 是 32。

问题:如何获取 source_addr_long 并生成一个 len 为 8 且看起来像这样的可读字符串 \x00\x13\xa2\x00\x40\x52\x8d\x8a

最佳答案

看看 Python 的 struct.pack()功能。它可以将您的值数组转换为打包的字节结构。

如果您要使用来自 Python 的 XBee 模块,您可能想尝试开源 python-xbee图书馆。

类似于:

struct.pack( "BBBBBBBB",
xbee_source_addr_long[0],
xbee_source_addr_long[1],
xbee_source_addr_long[2],
xbee_source_addr_long[3],
xbee_source_addr_long[4],
xbee_source_addr_long[5],
xbee_source_addr_long[6],
xbee_source_addr_long[7]);

请注意,我不是 Python 程序员,因此可能有更简单的方法来完成它。

关于python - 如何在 Python 中构建 XBee 十六进制长地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18577890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com