2017-05-23 27 views
1

RSSIを使用した屋内ジオフェンシングにiBeaconsを使用しているWindows 10 UWPアプリケーションがあります。Windows 10 UWP BTLE RSSIを使用したビーコンジオフェンシング

これまでのところ、カルマンフィルタを使用して平滑化し、距離をメートルで計算するRSSIを取得しています。これはかなりうまくいっています。それで、今私がしなければならないことは、メートルで閾値を作成し、計算された距離がそれ以下であれば、私はその領域の内側にあり、それ以上ならば、私は外にいると言うことができます。さて、私はそれを行うことができ、私はそれがうまくいくと確信しています。

しかし、私は名前のMSDNドキュメントで、このクラスに気づいた:それはサンプリング周期と一緒に、私はそのような内側と外側のしきい値としてやりたいように見えるいくつかの素晴らしい特性を有している

Bluetooth​Signal​Strength​Filter 

とタイムアウトしかし、これを私が上で説明したアプローチの代替手段として使用したいと思ったら、このフィルターの使い方がわかりません。

私は、フィルタをインスタンス化することができます

private BluetoothSignalStrengthFilter signalFilter = new BluetoothSignalStrengthFilter(); 

その後、私は(テスト中に今の定数として)私の値を作成することができます。

private const int BeaconInRangeThresh = -75; //The minimum RSSI value in dBm on which RSSI events will be propagated or considered in range. 
private const int BeaconOutRangeThresh = -76; //The minimum RSSI value in dBm on which RSSI events will be considered out of range. 
private const int SamplingInterval = 5; //The interval at which received signal strength indicator (RSSI) events are sampled. 
private const int SamplingTimeout = 5; //Timeout in seconds 

そして最後に、私はインスタンス化にこれらのプロパティを設定することができます

signalFilter.InRangeThresholdInDBm = BeaconInRangeThresh; 

その他のプロパティの場合も同様です。

問題は、これらの4つのプロパティがこのクラスで使用できる唯一のものであり、メソッドやイベントなどがないことです。だから、私はこのクラスをどのように使うのですか?新しいBluetooth広告を受け取るたびにイベントが発生しますが、これをここに入れますか?私はすべてのプロパティを設定しても何を?

ありがとうございます!

+0

このクラスは、Bluetooth LE Advertisement Watcherで動作するように設計されているようです。https://docs.microsoft.com/en-us/uwp/api/windows.devices.bluetooth.advertisement.bluetoothleadvertisementwatcher – Furmek

答えて

2

@Furmekが指摘するように、BluetoothLEAdvertisementWatcherを使用すると、Bluetooth広告を受信できます。範囲内で使用する場合にのみイベントを伝播するように信号強度フィルタを設定できますBluetooth​LE​Advertisement​Watcher.SignalStrengthFilter。あなたはReceivedイベントを登録することができます。新しいBluetooth広告を受信するたびにイベントが発生します

 // Create and initialize a new watcher instance. 
     watcher = new BluetoothLEAdvertisementWatcher(); 

     ... 

     //Configure the signal strength filter. 
     watcher.SignalStrengthFilter.InRangeThresholdInDBm = -70; 
     watcher.SignalStrengthFilter.OutOfRangeThresholdInDBm = -75; 

     ... 

     // Attach a handler to process the received advertisement. 
     watcher.Received += OnAdvertisementReceived; 

詳細については、Bluetooth advertisement sampleを参照してください。

関連する問題