gpt4 book ai didi

Python 从 ZigBee 帧读取零

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

我正在尝试读取发送到插入 USB 的 ZigBee 模块的帧。每个帧都会被 Python xBee 包丢弃,因为分隔符应该是 0x7E 时却是 0x00。实际上看起来每个字节也都是零。

XCTU 完美接收帧。

我使用 OS X、PyCharm、Python 3.4 并从 Internet 借用了此代码:

    # Open serial port
ser = serial.Serial(PORT, BAUD_RATE)

# Create API object
xbee = ZigBee(ser,escaped=True)

# Continuously read and print packets
while True:
try:
response = xbee.wait_read_frame()
sa = hex(response['source_addr_long'][4:])
rf = hex(response['rf_data'])
datalength=len(rf)
# if datalength is compatible with two floats
# then unpack the 4 byte chunks into floats
if datalength==16:
h=struct.unpack('f',response['rf_data'][0:4])[0]
t=struct.unpack('f',response['rf_data'][4:])[0]
print (sa,' ',rf,' t=',t,'h=',h)
# if it is not two floats show me what I received
else:
print (sa,' ',rf)
except KeyboardInterrupt:
ser.close()
break

ser.close()

程序执行 xbee.wait_read_frame() 调用并永远等待,因为没有帧到达。

我跟踪了 xBee 包中对“base.py”的调用:

        while True:
if self._callback and not self._thread_continue:
raise ThreadQuitException

if self.serial.inWaiting() == 0:
time.sleep(.01)
continue

byte = self.serial.read()

if byte != APIFrame.START_BYTE:
continue

对serial.read() 的调用始终返回零。

最佳答案

我在您提供的代码片段中看不出有什么问题。如果您从该串行端口仅读取零(是吗?) - 串行端口设置很可能有问题(例如,您在 115200 处读取数据,而数据在 9600 处传输)。您使用的BAUD_RATE是多少?

如果您可以仅使用哑终端访问设备,也值得测试。

关于Python 从 ZigBee 帧读取零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27196223/

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