gpt4 book ai didi

java - XBee 系列 2 尝试接收数据包时挂起并超时

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

我有两个 XBee Series 2 设置为模式 API 2。一个设置为 Controller ,另一个设置为终端节点。终端节点连接到 arduino,目前只是获取模拟传感器的值并将其发送出去。

到目前为止,当我通过 X-ctu 运行 XBees 时,一切正常。在新版本中,我添加了 Controller 模块(在 USB 资源管理器上)。然后,我单击设备上的中间按钮来搜索其他网络设备。然后我单击控制台模式。单击连接按钮后,我立即开始接收“接收数据包”。查看框架详细信息后,一切都井然有序。

当我尝试使用 xbee-api java 库或 python-xbee 库时,我就开始遇到问题。我使用的代码完全是从示例中复制粘贴的(它们看起来完全合理)。下面是 python 代码的示例(Windows 上是 COM3 和/dev/ttyUSB1。两个操作系统都有同样的问题。)

from xbee import XBee
import serial
s = serial.Serial('COM3', 9600)
xbee = XBee(s)
while True:
try:
response = xbee.wait_read_frame()
print(response)
except KeyboardInterrupt:
break
s.close()

应用程序卡在 xbee.wait_read_frame() 上。当我调用 Xbee.open() 时,当代码最终到达“sendAtCommand(new AtCommand("AP"));”行时,java 代码的工作方式相同。 (或使用 sendSynchronous 替代方案)。该方法超时并抛出异常。

此时,我不知道下一步该去哪里。在 XCTU 内部工作,但不适用于任何 API。在 wait_read_frame 将两者链接在一起之前我还需要做些什么吗? (我认为不是因为它们具有相同的 pan id。事实上,除了固件之外的所有设置都是相同的)

感谢您的帮助!

最佳答案

请注意,XBee 模块有两种不同的 API 模式。 ATAP=1 是标准模式,ATAP=2 是转义模式。

您需要确保您使用的代码库配置为与您在 XBee 模块上编程的模式匹配。

对于 python-xbee,您需要将 escaped=True 添加到构造函数中。 Java 库可能有类似的东西。

但是,在我看来,使用转义 API 模式没有任何好处。我建议仅在模块上设置 ATAP=1,而不是尝试将库配置为转义模式。

关于java - XBee 系列 2 尝试接收数据包时挂起并超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23576621/

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