使用安德鲁·拉普的的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+。