【Java】【xbee】xbeeAPIひたすら受信し続けるプログラム
常にデータを受信し続け,送信元のアドレスとテキストデータを
コンソールに表示するだけのプログラム
大まかな流れは
XBeeクラスのインスタンス化
↓
通信ポート,速度の設定
↓
responseクラスで何か反応があるか検出
↓
responseが何であるかをAPI_IDと比較
↓
ByteutilsクラスのtoStringやtoBaseで目的の内容に変換
あとは色々なところでExceptionが起きるので適宜処理が必要。
Receive Packets
Class | Description | Series | API ID Enum |
ZNetRxResponse | Received on the remote radio after a ZNetTxRequest packet is sent | Series 2 | ApiId.ZNET_RX_RESPONSE |
************************************************************************
//まずはXBeeクラスのインスタンス化
try{
xbee = new XBee();//次にcomポートと通信速度(PC-xbee)の設定
xbee.open("COM6", 9600);//ポートが開いてなかったりするとXBeeExceptionが発生するのでcatchする。
}catch(XBeeException e_init){
System.out.println("初期化失敗");
}while(true){
//xbeeに何かしらの反応があればresponseクラスをインスタンス化。
//なければエラーを返す、、、と思う
//タイムアウト=100mstry{
XBeeResponse response = xbee.getResponse(100);//responseがデータ受信であるか?
if(response.getApiId() == ApiId.ZNET_RX_RESPONSE){//responseクラスを受信用のZNetRxResponseにキャストしてインスタンス化
ZNetRxResponse rx = (ZNetRxResponse) response;//受信したデータの送信元アドレスを表示
//ByteUtils.toBase16で受信したint[]を16進数Stringに変換
System.out.println(ByteUtils.toBase16(rx.getRemoteAddress64().getAddress()));//受信したデータを表示
//ByteUtils.toBase16で受信したint[]をStringに変換
System.out.println(ByteUtils.toString(rx.getData()));
}//XBeeResponseにデータがない場合のException
}catch(XBeeTimeoutException e_timeout){
System.out.println("データなし");//XBee全体のException
}catch(XBeeException e){
xbee.close();
System.out.println(e.toString());
break;
//その他一般のException
}catch(Exception e2){
break;
}
}
}
}