在“+++”上无法得到XBee的好回复

时间:2016-06-10 08:20:36

标签: arduino serial-port radio wireless xbee

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

我能够通过运气一次检测到一个XBee而另一个从未出现过。我甚至更换了我的XBees。我试图找出替代方案,即使用串行控制台来执行操作。在发出+++时,我无法从设备收到OK回复。

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

根据设备的模式,配置消息也会有所不同。如果它处于API模式,则必须以特定格式生成帧(为此,我使用X-CTU帧生成器)。

为什么在发出+++后我无法收到来自XBee的回复?

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

1 个答案:

答案 0 :(得分:1)

您是否认为XBee处于API模式?也许您应该考虑在AT模式下重新启动设备以开始播放它。

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

基本上,API模式下的数据报以~开头,其构建如下:

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

由于ASCII表上的0x7E~,您应该尝试在串行终端会话中输入伪造的数据报,如:

~ <C-d> AAAA

N.B。:<C-d>字符表示在unix。下的Control-d,即EOF字符。

显然这样的消息可能不起作用,您将收到一个回复​​,要求您再次发送该数据报。这是因为EOF字符是ASCII码4,这意味着数据报的长度将是4个字节。那么你发送四个伪字节,校验和将是A,这很可能是正确的,接收器将假设传输已被破坏。因此,将再次询问数据报,这意味着您将收到一个数据报来执行该查询。

虽然我只能建议您考虑仅在API模式下运行它(更可靠,更好的API,但你无法使用它并通过使用逻辑分析仪点击线路来理解它是怎么回事......虽然给了足够的时间,但你会开始阅读API数据报,比如英语☺)。

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

以及来自另一个完全不相关项目的其他建议:

我还写了一个lib(针对beaglebon但你可以调整它以供你使用),用XBees处理API模式2:

但是我打赌通过一些谷歌搜索你可以找到比那些更广泛使用的库,甚至一些旨在在Arduinos上运行(注意:该lib最初是为Arduinos编写的,然后适用于Beaglebone,所以扭转操作不应该很难。