-->

的XBee - 的XBee-API和多个端点(XBee - XBee-API and multip

2019-10-17 19:38发布

使用安德鲁·拉普的的XBee-API ,我该怎么样I / O通过从以上两个端点协调的数据?

我有17个系列1个XBees。 我已编程的一个是一个协调器(API模式= 2),其余的是端点。 使用的XBee-API我送一个强制I / O样品( “IS”)远程AT命令,单播到每个端点。 这工作得很好,当有多达两个端点,但只要三分之一的加入,三一始终成为不响应(超时与XBeeTimeoutException)。 这并不总是停止响应相同的物理单元,但它始终是第三个(例如,如果我发力I / O样品Device1的,设备2和设备3,设备3将超时,如果我改变以设备3,Device1的,设备2,设备2将超时。

如果我设置了三个多XBees,约1开出3将超时 - 但不是每个第三个。

我验证过XBees本身是很好。 我已经搜查尤其是互联网和堆栈溢出无济于事。 我用一个简单的ZNetRemoteAtRequest尝试。 我试着开了所有三款器件一旦关闭的XBee协调串行连接,每个设备一次,和每个程序运行一次。 我已经试过各种协调和端点(永不分离超过五英尺)之间的距离。 我已经尝试了不同的协调配置参数(从价格Digi文档)。 我试着改变了的XBee的协调。

这是我使用发送强制I / O的示例请求每个端点和读取响应的代码:

xbee = new XBee(); // Coordinator
xbee.open("/dev/ttyUSB0, 115200)); // Happens before any of the endpoints are contacted

... // Loop through known endpoint addresses

XBeeRequest request = new ZBForceSampleRequest(new XBeeAddress64(endpointAddress));
ZNetRemoteAtResponse response = null;
response = (ZNetRemoteAtResponse) xbee.sendSynchronous(request, remoteXBeeTimeout);
if (response.isOk()) {
     // Process response payload
}

... // End loop and finally close coordinator connection

有什么可以帮助轮询I / O样本超过两个端点?

编辑 :我发现安德鲁·拉普公司的XBee-API库假货多线程的行为,这将导致在这个问题上所描述的同步问题。 我写了一个替代库,实际上多线程的,并正确地从多个端点的XBee映射回应: https://github.com/steveperkins/xbee-api-for-java-1-4 。 当我写的Java 1.4中是必要的在BeagleBone,插头和索泰单板电脑使用,但它是一个很容易转换为1.7+。

Answer 1:

您正在使用的串口上硬件流控制? 有没有可能是你发送请求,出来的时候,当地的XBee已经无效CTS(例如,要求你停止发送)? 我假设你在115200上运行,所以的XBee串行端口可以与网络数据传输速率跟不上。

您可以打开调试信息,或者连接某些端口监视硬件/软件显示的数据要通过串行端口到当地的XBee?



文章来源: XBee - XBee-API and multiple endpoints
标签: rxtx xbee