在“+++”时无法从 XBee 获得 OK 响应

问题描述 投票:0回答:1

从过去三天以来,我一直在尝试设置两个 XBees 进行通信。 X-CTU 似乎是这样做的完美选择,但是,当涉及到在串行端口上发现 XBees 时,它是一个真正的威胁。

我只能幸运地检测到一个 XBee,而另一个却从未出现。我什至更换了我的两个 XBees。我正在尝试找出替代方案,即使用串行控制台来执行操作。在发出

+++
后,我无法从设备收到 OK 响应。

由于我之前没有使用 PC 与 ESP8266 设备进行通信的良好经验,因此我尝试找到一种解决方法,即使用 Arduino 的第二个串行端口发送此类配置消息,并通过将其打印出来来读取响应默认串行控制台。

配置消息似乎也可能因设备模式而异。如果是 API 模式,则必须以特定格式生成帧(我使用 X-CTU 帧生成器来实现此目的)。

为什么我在发出

+++
后无法收到 XBee 的响应?

这些设备是系列 1 XBees,确切的部件号是 XB24-AWI-001。非常感谢任何帮助。

arduino serial-port xbee
1个回答
1
投票

您是否考虑过 XBee 处于 API 模式?也许您应该考虑在 AT 模式下重新刷新设备以开始使用它。

测试是否处于API模式,可以参考指南第9章API模式结构:

基本上,API 模式下的数据报以

~
开头,其构建如下:

[0x7E|length(2B)|Command(1B)|Payload(length-1B)|Checksum(1B)]

由于

0x7E
在 ASCII 表中是
~
,因此您应该尝试在串行终端会话中键入虚假数据报,例如:

~ <C-d> AAAA

注意:

<C-d>
字符在unix下表示
Control-d
,即EOF字符。

显然这样的消息不太可能起作用,您将收到回复,要求您再次发送该数据报。这是因为

EOF
字符是 ASCII 代码 4,这意味着数据报的长度将为 4 个字节。因此,您发送了四个虚假字节,校验和将为
A
,这很可能是正确的,并且接收方将假设传输已损坏。因此,将再次询问数据报,这意味着您将收到一个数据报来执行该查询。

虽然我只能建议您考虑仅在 API 模式下运行它(更可靠和更好的 API,但您无法使用它并通过用逻辑分析仪点击线路来了解发生了什么......尽管给予足够的时间,您将开始像阅读英语一样阅读 API 数据报 ☺)。

我写了一个包含一些资源的页面来检查如何刷新 XBees:

这是另一个完全不相关的项目的其他建议:

我还编写了一个使用 XBees 处理 API 模式 2 的库(针对 beaglebones,但您可以对其进行调整以供您使用):

但我敢打赌,通过一点谷歌搜索,你可以找到比这些库更广泛使用的库,甚至有些库旨在在 Arduino 上运行(注意:该库最初是为 Arduino 编写的,然后经过调整以运行在 Beaglebone 上,所以反过来操作应该不难)。

© www.soinside.com 2019 - 2024. All rights reserved.