Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Digi Xbee java api进行Xbee通信_Java_Api_Embedded_Xbee_Zigbee - Fatal编程技术网

使用Digi Xbee java api进行Xbee通信

使用Digi Xbee java api进行Xbee通信,java,api,embedded,xbee,zigbee,Java,Api,Embedded,Xbee,Zigbee,我已经将一个xbee pro配置为协调器(API模式),另一个配置为路由器(API模式)。我试图使用xbee java api将数据从协调器发送到路由器,但在路由器代码中,我不断得到空值,我是否做错了什么。 以下是发送数据的代码(协调器): } 路由器端的代码 public class RecvApp { private static final String PORT = "/dev/ttyUSB1"; private static final int BAUDRATE = 9600; pu

我已经将一个xbee pro配置为协调器(API模式),另一个配置为路由器(API模式)。我试图使用xbee java api将数据从协调器发送到路由器,但在路由器代码中,我不断得到空值,我是否做错了什么。 以下是发送数据的代码(协调器):

}

路由器端的代码

public class RecvApp {
private static final String PORT = "/dev/ttyUSB1";
private static final int BAUDRATE = 9600;

public static void main(String[] args)
{
    XBeeDevice myrouter = new XBeeDevice(PORT, BAUDRATE);

        try {
            myrouter.open();
            System.out.println("router port opened\n");
            //mac of coordinator
            RemoteXBeeDevice remotecord = new RemoteXBeeDevice(myrouter, new XBee64BitAddress("0013A20040D96FE5"));
            XBeeMessage msg = myrouter.readDataFrom(remotecord);
            System.out.print(msg);

        } catch (XBeeException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            myrouter.close();
            System.exit(1);
        }
      }
   }

在路由器上,您需要有一个循环来检查消息并将其打印出来。API应该有一个方法,您可以在调用
readDataFrom()
之前调用它来检查消息(或者您可以忽略空响应)。在每次检查之间睡眠几毫秒。现在,在节目结束之前,你的信息没有多少机会传达出去

当调试类似的东西时,从隔离问题开始。哪一方出现故障,协调器还是路由器?您确定XBee模块已相互连接并且位于同一网络上吗


一个测试是在连接到路由器的串行端口上运行一个简单的终端模拟器,您是否看到任何帧通过?若您查看字节的十六进制转储,是否看到“Helloww”消息?如果没有,您需要在调试路由器之前先让协调器工作。

在路由器上,您需要有一个循环来检查消息并将其打印出来。API应该有一个方法,您可以在调用
readDataFrom()
之前调用它来检查消息(或者您可以忽略空响应)。在每次检查之间睡眠几毫秒。现在,在节目结束之前,你的信息没有多少机会传达出去

当调试类似的东西时,从隔离问题开始。哪一方出现故障,协调器还是路由器?您确定XBee模块已相互连接并且位于同一网络上吗


一个测试是在连接到路由器的串行端口上运行一个简单的终端模拟器,您是否看到任何帧通过?若您查看字节的十六进制转储,是否看到“Helloww”消息?如果没有,您需要先让协调器工作,然后再调试路由器。

发现问题,我没有将收到的消息转换为正确的格式。添加以下行

String content = HexUtils.prettyHexString(HexUtils.byteArrayToHexString(xbeeMessage.getData()));
    System.out.println("Hex data" + "" + content + "\n");
    String value = new String(xbeeMessage.getData());
    System.out.print("Actual msg" + " " + value + "\n");

立即工作:)

发现问题,我没有将收到的消息转换为正确的格式。添加以下行

String content = HexUtils.prettyHexString(HexUtils.byteArrayToHexString(xbeeMessage.getData()));
    System.out.println("Hex data" + "" + content + "\n");
    String value = new String(xbeeMessage.getData());
    System.out.print("Actual msg" + " " + value + "\n");
现在工作:)