C# 使用RSSI的Windows 10 UWP BTLE信标地理围栏

C# 使用RSSI的Windows 10 UWP BTLE信标地理围栏,c#,.net,win-universal-app,bluetooth-lowenergy,ibeacon,C#,.net,Win Universal App,Bluetooth Lowenergy,Ibeacon,我有一个Windows 10 UWP应用程序,我正在使用iBeacons使用RSSI进行室内地理围栏 到目前为止,我正在得到RSSI,使用卡尔曼滤波器平滑它,然后计算距离(以米为单位)。这很有效。有了这个,我们可以说,现在我所要做的就是创建一个以米为单位的阈值,如果我计算的距离小于,我在区域内,如果大于,我在区域外。嗯,我能做到,而且我很有信心它会奏效 但是,我在MSDN文档中注意到这个类,名为: Bluetooth​Signal​Strength​Filter 它有一些很好的属性,似乎可以实

我有一个Windows 10 UWP应用程序,我正在使用iBeacons使用RSSI进行室内地理围栏

到目前为止,我正在得到RSSI,使用卡尔曼滤波器平滑它,然后计算距离(以米为单位)。这很有效。有了这个,我们可以说,现在我所要做的就是创建一个以米为单位的阈值,如果我计算的距离小于,我在区域内,如果大于,我在区域外。嗯,我能做到,而且我很有信心它会奏效

但是,我在MSDN文档中注意到这个类,名为:

Bluetooth​Signal​Strength​Filter
它有一些很好的属性,似乎可以实现我希望它实现的功能,比如阈值内外以及采样周期和超时。然而,如果我想用它来替代我上面解释的方法,我不知道如何使用这个过滤器

我可以实例化过滤器:

private BluetoothSignalStrengthFilter signalFilter = new BluetoothSignalStrengthFilter();   
然后我可以创建我的值(目前在测试期间作为常量):

最后,我可以将这些属性设置为实例化类,如下所示:

signalFilter.InRangeThresholdInDBm = BeaconInRangeThresh;
其他属性也是如此

问题是,这四个属性是这个类唯一可用的东西,没有方法、事件或任何东西。那么,我如何使用这个类呢?每次我收到一个新的蓝牙广告时,我都会收到一个活动,我会把这个放在那里吗?即使我设置了所有属性,那又怎样


谢谢

正如@Furmek所指出的,您可以使用
BluetoothLEAdvertisementWatcher
接收蓝牙广告。您可以使用蓝牙将信号强度过滤器配置为仅在范围内传播事件​乐​广告​Watcher.SignalStrengthFilter。您可以注册
Received
事件,以便在每次我收到新的蓝牙广告时引发一个事件


有关更多信息,您可以参考。

本课程似乎是为配合蓝牙而设计的​乐​广告​观察者
signalFilter.InRangeThresholdInDBm = BeaconInRangeThresh;
        // 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;