Python xbee 库没有输入帧的输出

Python xbee library no output for incoming frames

我正在使用 2 个 XBee pro S1,我想读取协调器在我的 PC 上接收到的数据包,它已启用 API_2 并且所有其他连接都已正确完成,我可以看到带有 XCTU 的数据包,我正在使用 python xbee 库,但它没有输出:

代码:

import serial.tools.list_ports
from xbee import XBee
import serial

ports = list(serial.tools.list_ports.comports())

for p in ports:  #print the list of ports
    print p

def toHex(s):
    lst = []
    for ch in s:
        hv = hex(ord(ch)).replace('0x', '')
        if len(hv) == 1:
            hv = '0'+hv
        hv = '0x' + hv
        lst.append(hv)

def decodeReceivedFrame(data):
        source_addr_long = toHex(data['source_addr_long'])
        source_addr = toHex(data['source_addr'])
        id = data['id']
        samples = data['samples']
        options = toHex(data['options'])
        return [source_addr_long, source_addr, id, samples]

PORT = '/dev/ttyUSB0'
BAUD_RATE = 9600

ser = serial.Serial(PORT, BAUD_RATE)
print "Serial ports initialised...."

xbee = XBee(ser,escaped=True)

print "XBee object created"

while True:
  try:
    response = xbee.wait_read_frame()
    sleep(0.5)
    decodedData = decodeReceivedFrame(response)
    print decodedData
    print "data decoded"
  except KeyboardInterrupt:
    break

ser.close()

端口号和波特率是连接的,每次我把协调器重新插到我的电脑上时,我都会把它改成合适的端口号。 我的输出看起来像:

Serial ports initialised....
XBee object created

即使我看到 RX 指示灯闪烁,它仍然保持这种状态并且没有输出。 以下是仅使用 pyserial 编写的代码:

import serial
from time import sleep

port = '/dev/ttyUSB0'
baud = 9600

ser = serial.Serial(port, baud) 

data = ""

while True:
 try:
   while ser.in_waiting:
    sleep(1)
    data = ser.read()
    print data

except KeyboardInterrupt:
    break

ser.close()

它给出了以下输出。

有好心人帮忙吗

您确定串口和波特率正确吗? xbee 包是否支持 API 模式 2?它可能只适用于 API 模式 1。

该包是否有访问原始字节流而不是尝试读取帧的方法?您可以将其配置为在解析错误时抛出异常吗?

我将从打印 response 开始,直到您看到您正在接收数据。为什么要在该循环中包含 sleep() 调用?

我不确定您要在 toHex() 中完成什么,但您可能想查看 Python 方法 struct.unpack() 或替换您所做的所有工作hv'0x%02X' % ord(ch).