from digi.xbee.devices import XBeeDevice, RemoteXBeeDevice, XBee64BitAddress
import serial
import logging
local_device = XBeeDevice("COM7", 9600)
data_send = ("\x33\x03\x75\x30\x00\x24\x5b\xc0")
try:
local_device.open()
remote_device = RemoteXBeeDevice(local_device, XBee64BitAddress.from_hex_string("0013A20041513885"))
local_device.flush_queues()
print("Sending data asynchronously to %s >> %s " % (remote_device.get_64bit_addr(),data_send))#printing MAC add.
local_device.send_data_async(remote_device, data_send)
print("Success")
print("Waiting for data...\n")
xbee_message = local_device.read_data()
if xbee_message is not None:
print("From %s >> %s" % (xbee_message.remote_device.get_64bit_addr(),
xbee_message.data.decode()))
finally:
if local_device is not None and local_device.is_open():
local_device.close()
我正在尝试通过python为zigbee模块发送modbus十六进制命令(33 04 75 30 00 24 5b c0)
。但是,改为以十六进制关闭发送命令,以ascii形式发送。任何人都可以解决这个问题。我在使用pyserial进行串行comm的python中使用digi-xbee模块。这是我尝试发送的代码。 data_send = ("\x33\x03\x75\x30\x00\x24\x5b\xc0")
答案 0 :(得分:0)
使用Latin-1编码。 如果您使用的是UTF-8编码,则每次可能都不正确。 因此,最好使用Latin-1编码。
例如:
data_send = ("\x00\x01\x01\x01\x01\x00\x03\x08\x00\x00\x00\x14\x04\x00\x00\x00\x44\xf2\xfc").encode('Latin-1')