gpt4 book ai didi

python - 没有得到 wait_read_frame() 的响应

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

我无法让 python-xbee 库接收来自远程路由器的响应。他们是相连的。本地Xbee是Coordinator API,远程是Router AT。

这似乎不是连接问题,因为我可以使用 XCTU 毫无问题地发送和接收远程数据包。我正在使用 Series 2 Xbees。

我添加了一个类来帮助解析串行响应。对于本地“at”命令,它打印得很好,但所有“remote_at”命令都挂起,没有打印任何响应。我可以发出remote_at命令(无需等待响应),远程XBee会正确处理该命令。发出远程命令在 wait_read_frame() 处挂起。我尝试等待几分钟,但卡住了。

我正在尝试查询 D1 输入引脚并获取其状态(高 \x05、低 \x04 或关闭 \x00 >)

这是我用来调试的代码。我做错了什么?

from xbee import XBee
import time
from serial import Serial

PORT = '/dev/ttyAMA0'
myRouter = 'a big long hex string...'

def message_received(data):
print data

class TappedSerial(Serial):
def __init__(self, *args, **kwargs):
super(TappedSerial, self).__init__(*args, **kwargs)

def read(self, *args, **kwargs):
data = super(Serial, self).read(*args, **kwargs)
print ("read: ", repr(data))
return data

def write(self, data, **kwargs):
print("wrote: ", repr(data))
return super(Serial, self).write(data, **kwargs)

def main():

tapped_ser = TappedSerial(port=PORT, baudrate=9600)
xbee = XBee(tapped_ser) #, callback=message_received)

try:

xbee.remote_at(dest_addr_long=myRouter, command='D1', options='\x00')
response = xbee.wait_read_frame()
print(response)

except KeyboardInterrupt:
pass

finally:
tapped_ser.close()
print("exiting program")

if __name__ == '__main__':
main()

最佳答案

我在设置库时注意到两件事:

  1. 在我 checkout 的版本中,在base.py第74行中,如果设置了回调则启动后台线程的代码被注释掉了。既然您收到了阅读请求,我认为这不是您的问题,但请保留,以防其他人遇到类似问题。您可以手动调用xbee.start()来使线程运行。

  2. 我发现在本例中启用 python 日志记录比 tappedSerial 更有用 - 我通过在顶部添加以下内容来启用日志记录:

    logger = logging.getLogger()
    logger.setLevel(logging.DEBUG)
    ch = logging.StreamHandler()
    ch.setLevel(logging.DEBUG)
    logger.addHandler(ch)

这表明我在 ND 响应中添加了 4 个字节,因为我没有将 NO 设置为 3 而不是 0。我将发送一个拉取请求,将 DD 值附加到参数(如果已定义)(由长度确定)减少了 4 点。

关于python - 没有得到 wait_read_frame() 的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21845028/

25 4 0
文章推荐: HTML/CSS
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com