質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Bluetooth

Bluetoothとは短距離の間でデータを交換するための無線通信規格である。固定・モバイル両方のデバイスから、短波の電波送信を行うことで、高いセキュリティをもつパーソナルエリアネットワーク(PAN)を構築する。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

解決済

2回答

5686閲覧

VisualStudio xamain BLEアドバタイズ受信 ManufactureDataの取り出し

退会済みユーザー

退会済みユーザー

総合スコア0

Bluetooth

Bluetoothとは短距離の間でデータを交換するための無線通信規格である。固定・モバイル両方のデバイスから、短波の電波送信を行うことで、高いセキュリティをもつパーソナルエリアネットワーク(PAN)を構築する。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

0クリップ

投稿2017/04/13 10:48

編集2017/04/13 11:21

###前提・実現したいこと
VisualStudio,xamarin,C#を初めて扱い、わからないことだらけです。
ご協力をお願いいたします。

VisualStudio2017 xamarinでBLEセンサからのアドバタイズデータを
Android,iOSアプリで読み出したいと考えております。

下記サイトを参考にし、
デバイス名やUUIDを取り出すところまではできました。
http://blog.okazuki.jp/?page=1485663181
インストール済み:Acr.BLE v2.0.0

実現したいことは、アドバタイズデータ内のManufacture領域のデータを読み出したいです。
0xFF Manufacture Specific Data
中に4Byteのデータが格納されています。

理想はDebug.WriteLineで下記のように表示したいです。
output:00000000-0000-0000-0000-b4994c6430c4:-59
data:01-23-45-67

どのような記述をすればDevice名やUUIDのように読み出せるのでしょうか。

よろしくお願いいたします。

###該当のソースコード
MainPagexaml.cs

c#

1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5using System.Threading.Tasks; 6using System.Diagnostics; 7using System.Reactive.Linq; 8using Xamarin.Forms; 9using Plugin.BluetoothLE; 10 11 12namespace App6 13{ 14 public partial class MainPage : ContentPage 15 { 16 public MainPage() 17 { 18 InitializeComponent(); 19 20 CrossBleAdapter.Current.Scan().Subscribe(result => 21 { 22 if($"{result.Device.Name}" == "output") 23 { 24 Debug.WriteLine($"{result.Device.Name}:{result.Device.Uuid}:{result.Rssi}"); 25//Device名やUUIDと同じように、ManufactureDataの読み出しを行いたいです。 26 } 27 }); 28 } 29 } 30} 31

###試したこと
Debug.WriteLine($"{result.AdvertisementData.ManufacturerData.XXXX}");
上記のようなもので読み出せると考えたのですが、XXXに当てはまりそうなものを設定しても読み出すことができませんでした。

###補足情報(言語/FW/ツール等のバージョンなど)
言語 C#
環境 VisualStudio2017 xamarin
Acr.BLE v2.0.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tak1wa

2017/04/13 10:55

BLEセンサーがiBeaconかどうかで変わりますが、非iBeaconなBLE送信機ですか?
退会済みユーザー

退会済みユーザー

2017/04/13 11:06

ありがとうございます。非iBeaconの送信機です。
退会済みユーザー

退会済みユーザー

2017/04/13 11:17

申し訳ありません。確認不足でした。質問に修正を加えます。
guest

回答2

0

ベストアンサー

Debug.WriteLine($"{result.AdvertisementData.ManufacturerData.XXXX}");
上記のようなもので読み出せると考えたのですが、XXXに当てはまりそうなものを設定しても読み出すことができませんでした。

"Manufacture Specific Data" は、その名の通り BLE 発信機の製造メーカーによって決められた仕様のデータが格納されているので、 XXX のようなプロパティはありません。

Acr.BLE のサンプルに含まれる以下のコードのあたりが参考になると思います。

https://github.com/aritchie/bluetoothle/blob/master/Samples/Samples/ViewModels/Le/ScanResultViewModel.cs#L54

IAdvertisementData.ManufacturerData はみたところ byte の配列型なので、配列から「n番目〜長さm」のデータを取り出す、という C# の一般的なプログラミングが必要かと思います。

投稿2017/04/13 11:41

amay077

総合スコア1075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/04/13 12:59

ご回答ありがとうございます。 Acr.BLEでADストラクチャから定義済みの0xFF単体で読み出せるわけではないんですね。 一括したデータから任意の場所だけ取り出せるように組み替えてみます。 C#の理解が乏しかったです。 もうすこし調べてみます。
guest

0

こんにちは。

どのような記述をすればDevice名やUUIDのように読み出せるのでしょうか。

AdvertisementData.ManufacturerDataはただのbyte配列ですから、拡張メソッドを作成するなり、ご自身で分解や文字列化などを行ってください。


このあたり参考にADタイプ判定してからADデータを解析するのが良さそうですかね。

http://qiita.com/TakahikoKawasaki/items/a2062147b5fa82abc0b3#14-%E8%A3%BD%E9%80%A0%E8%80%85%E5%9B%BA%E6%9C%89%E3%83%87%E3%83%BC%E3%82%BF

投稿2017/04/13 11:29

編集2017/04/13 11:39
Tak1wa

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/04/13 12:51

ご回答ありがとうございます。 URL参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問