簡體   English   中英

使用Digi xbee-java api進行Xbee通信

[英]Xbee communication using Digi xbee-java api

我已將一個xbee pro配置為協調器(API模式),將另一個配置為路由器(API模式)。 我試圖使用xbee java api將數據從協調器發送到路由器,但是在路由器代碼中我一直為空,這是在做錯什么。 以下是發送數據的代碼(協調器):

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

public static void main(String[] args)
{
    String data = "Helloww";

    XBeeDevice mycord = new XBeeDevice(PORT, BAUDRATE);     

    try {
        mycord.open();
        System.out.println("Port is opened\n");
        System.out.println("remote device connection\n");
        //mac of my router
        RemoteXBeeDevice router = new RemoteXBeeDevice(mycord,
                new XBee64BitAddress("0013A20040DD9BDD"));
        System.out.println("Sending data\n");
        mycord.sendData(router, data.getBytes());

    } catch (XBeeException e) {
        e.printStackTrace();
        mycord.close();
        System.exit(1);
    }
}

}

路由器端的代碼

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()之前調用該方法來檢查消息(或者您可能只是忽略null響應)。 每次檢查之間睡眠幾毫秒。 目前,在程序退出之前,您沒有太多機會傳達您的信息。

當調試類似的東西時,首先要隔離問題。 哪一方發生故障,協調器還是路由器? 您確定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");

現在可以工作:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM