无法在python中为xbee发送十六进制格式的命令

时间:2018-09-17 17:39:43

标签: python xbee zigbee

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")

enter image description here

1 个答案:

答案 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')