C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

iBeacon byte配列→UUID変換について

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■89406 / inTopicNo.1)  iBeacon byte配列→UUID変換について
  
□投稿者/ のりっち (1回)-(2018/11/27(Tue) 09:20:51)

分類:[.NET 全般] 

いつもお世話になっております。
android studio(java)にて、iBeaconよりBLEを受信・表示するシステムを開発しています。
プログラムにて、iBeaconのBLEを受信するところまでできたのですが、
格納されている情報がbyte配列となっています。

iBeacon-plusで確認したところ、16新表記となっています。
下記サイトにて3バイト目からUUID情報となっているとありますが、
変換方法がよくわかりませんでした。

どのように変換すればよろしいでしょうか

https://recruit.gmo.jp/engineer/jisedai/blog/android5-scan-ble/


【格納例】
byte[0]:2,byte[1]:21,byte[2]:-34,byte[3]:-84

16進
E2C56D…




引用返信 編集キー/
■89408 / inTopicNo.2)  Re[1]: iBeacon byte配列→UUID変換について
□投稿者/ kiku (64回)-(2018/11/27(Tue) 10:54:58)
No89406 (のりっち さん) に返信
> 下記サイトにて3バイト目からUUID情報となっているとありますが、
> 変換方法がよくわかりませんでした。
> https://recruit.gmo.jp/engineer/jisedai/blog/android5-scan-ble/

3バイト目からと記述されていますが、
上記のURLの記事には、10バイト目から25バイト目まで(16バイト分)が
UUIDとの記述になっています。
認識が間違っていないでしょうか?

上記のURLの記事の参考のところの記事に具体的な
UUIDの取得するためのソースが記載されています。
http://www.gaprot.jp/pickup/ibeacon/abeacon


当方、JavaもiBeaconも知識がありませんので
突っ込んだ返信にはこたえられないかもしれません。
ご了承ください。


引用返信 編集キー/
■89409 / inTopicNo.3)  Re[2]: iBeacon byte配列→UUID変換について
□投稿者/ のりっち (2回)-(2018/11/27(Tue) 11:13:06)
> 3バイト目からと記述されていますが、
> 上記のURLの記事には、10バイト目から25バイト目まで(16バイト分)が
> UUIDとの記述になっています。
> 認識が間違っていないでしょうか?
>
> 上記のURLの記事の参考のところの記事に具体的な
> UUIDの取得するためのソースが記載されています。
> http://www.gaprot.jp/pickup/ibeacon/abeacon

下記サイトにて、旧実装方法は10バイトから25バイトまでUUIDと書いてありますが、
今回は新実装方法で実装しているため、3バイトからUUIDではないかと認識しています。
https://recruit.gmo.jp/engineer/jisedai/blog/android5-scan-ble/

引用返信 編集キー/
■89411 / inTopicNo.4)  Re[3]: iBeacon byte配列→UUID変換について
□投稿者/ kiku (65回)-(2018/11/27(Tue) 11:29:54)
> 下記サイトにて、旧実装方法は10バイトから25バイトまでUUIDと書いてありますが、
> 今回は新実装方法で実装しているため、3バイトからUUIDではないかと認識しています。
> https://recruit.gmo.jp/engineer/jisedai/blog/android5-scan-ble/

新実装方式のほうだったんですね。
だとすると、msg_bytesに情報が格納されているので
3バイト目から16バイト分取得するのであるならば下記のようになります。
先ほど、回答したリンク先のソースを、改造してみました。
テストなどはしていません。
また、効率的ではないソースとは思いますので
別の命令を使って短くすることもできるかもしれませんが、
まずは動作させることを優先と考えてそのままです。

           String uuid = IntToHex2(msg_bytes[2] & 0xff) 
                        + IntToHex2(msg_bytes[03] & 0xff)
                        + IntToHex2(msg_bytes[04] & 0xff)
                        + IntToHex2(msg_bytes[05] & 0xff)
                        + "-"
                        + IntToHex2(msg_bytes[06] & 0xff)
                        + IntToHex2(msg_bytes[07] & 0xff)
                        + "-"
                        + IntToHex2(msg_bytes[08] & 0xff)
                        + IntToHex2(msg_bytes[09] & 0xff)
                        + "-"
                        + IntToHex2(msg_bytes[10] & 0xff)
                        + IntToHex2(msg_bytes[11] & 0xff)
                        + "-"
                        + IntToHex2(msg_bytes[12] & 0xff)
                        + IntToHex2(msg_bytes[13] & 0xff)
                        + IntToHex2(msg_bytes[14] & 0xff)
                        + IntToHex2(msg_bytes[15] & 0xff)
                        + IntToHex2(msg_bytes[16] & 0xff)
                        + IntToHex2(msg_bytes[17] & 0xff);

//intデータを 2桁16進数に変換するメソッド
public String IntToHex2(int i) {
    char hex_2[] = {Character.forDigit((i>>4) & 0x0f,16),Character.forDigit(i&0x0f, 16)};
    String hex_2_str = new String(hex_2);
    return hex_2_str.toUpperCase();
}


引用返信 編集キー/
■89413 / inTopicNo.5)  Re[4]: iBeacon byte配列→UUID変換について
□投稿者/ のりっち (4回)-(2018/11/27(Tue) 12:05:13)
無事、UUID変換できました。
BLE Scannerで確認したところ、一致していることを確認しました。
BeaconSET+では、なぜか一致しませんでしたが、
BLE Scannerで一致が確認できましたので、解決とします。

ご丁寧な回答ありがとうございました。

引用返信 編集キー/
■89415 / inTopicNo.6)  Re[5]: iBeacon byte配列→UUID変換について
□投稿者/ kiku (66回)-(2018/11/27(Tue) 14:04:47)
解決済みをつけておきます
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ