XbeeApi
Dependents: XbeeAPI Hybrid_main_FirstEdtion
Revision 2:30220fb0e20e, committed 2017-03-13
- Comitter:
- ark777
- Date:
- Mon Mar 13 06:31:22 2017 +0000
- Parent:
- 1:34007fc9235e
- Commit message:
- ????????????
Changed in this revision
XbeeApiLib.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/XbeeApiLib.cpp Fri Mar 10 06:08:40 2017 +0000 +++ b/XbeeApiLib.cpp Mon Mar 13 06:31:22 2017 +0000 @@ -229,10 +229,22 @@ int DataLength = PacketLength - 12; //データ本体の長さは パケットの長さ - 12 ここでいう「パケットの長さ」に、最初の3バイトとチェックサムは含まない OnPacketReceived(DataLength, &RxBuf[15]); //パケットタイプ0x90は地上局から送信されたデータが16バイト目 すなわち RxBuf[15] から格納されている //OnPacketReceived(DataLength + 16, RxBuf); //デバッグ用 パケットすべてを渡す場合 - if(DataLength == 2 && RxBuf[15] == 0x59 && RxBuf[16] == 0x4D){ - address[0].ADR16bit[0] = RxBuf[12]; - address[0].ADR16bit[1] = RxBuf[13]; - address[0].IsAvailable = true; + if(DataLength == 2 && RxBuf[15] == 0x59 && RxBuf[16] == 0x4D){ //0x594Dが送られて来たら、送信元の64bitアドレスをチェックする + for(int i = 0; i < 4; i++){ + bool IsMatchAddr = true; + for(int j = 0; j < 8; j++){ + if(address[i].ADR[j] != RxBuf[j + 4]){ + IsMatchAddr = false; //16bitアドレスを調べる 1つでも一致しなければ終了するし + break; + } + } + if(IsMatchAddr == true){ //0x594Dを送信してきた地上局の64bitアドレスがaddress[i]と一致した場合 + address[i].ADR16bit[0] = RxBuf[12]; //address[i]の16bitアドレスを地上局側に合わせる + address[i].ADR16bit[1] = RxBuf[13]; + address[i].IsAvailable = true; + break; + } + } } } }