【发布时间】:2020-05-23 01:01:04
【问题描述】:
我正在使用python-xbee 和 Python 3.7 将 API 命令从连接到 Beaglebone Black 上的 UART1 的 XBee 发送到远程 XBee。两者都是第 1 版 Pro 型号。
我的远程 XBee(我正在向其发送命令的那个)具有以下地址:
SH=0013A200
SL=40DD7DCD
当我使用 64 位地址的低位部分提交命令时
xbee.remote_at(dest_addr='\x40\xDD\x7D\xCD', command='0x17', parameter=D0_LOW, frame_id='A')
我收到错误:
UnicodeEncodeError: 'ascii' codec can't encode character '\xdd' in position 1: ordinal not in range(128)
我的代码如下:
from xbee import XBee from serial import Serial
PORT = '/dev/ttyO1'
BAUD = 9600
# Send 0x17 AT command with parameter 04 for low (off), 05 for high (on)
# D0=4 Low
# D0=5 High
D0_LOW = 4
D0_HIGH = 5
ser = Serial(PORT, BAUD)
xbee = XBee(ser)
xbee.remote_at(dest_addr='\x40\xDD\x7D\xCD', command='0x17', parameter=D0_LOW, frame_id='A')
# Wait for and get the response
print(xbee.wait_read_frame())
ser.close()
我的问题是——当知道高字节和低字节并且没有使用控制器(仅点对点)时,dest_addr 的正确格式是什么?
如果我将地址更改为使用十六进制(例如 \0x40\0xDD\0x7D\0xCD),则错误消息是
The data provided for 'dest_addr' was not 2 bytes long
我需要将地址格式化为 ASCII 2 字节吗?
【问题讨论】: