在Windows 10中获取BLE广告包

时间:2016-10-08 13:11:36

标签: windows bluetooth win-universal-app bluetooth-lowenergy windows-mobile

我目前正在尝试从Windows 10中的蓝牙LE获取广告包。

我正在开发通用Windows应用程序,因此我使用的JavaScript包含以下代码:

 // Create and initialize a new watcher instance.
var watcher = new Windows.Devices.Bluetooth.Advertisement.BluetoothLEAdvertisementWatcher();

watcher.signalStrengthFilter.inRangeThresholdInDBm = -126;
watcher.signalStrengthFilter.outOfRangeThresholdInDBm = -126;

watcher.signalStrengthFilter.outOfRangeTimeout = 60000;

watcher.signalStrengthFilter.samplingInterval = 0;
watcher.scanningMode = 1;

watcher.addEventListener("received", onAdvertisementReceived, false);

这些是我获取最多BLE ADV数据包的设置。

在我的场景中,我有一个BLE转发器每秒发送一个ADV数据包,我可以使用WireShark在linux机器上验证。

奇怪的是,我没有使用Windows应用程序获得所有这些ADV数据包。

我会得到15-20个数据包,然后在获得其他数据包之前有30-60秒暂停。

所有设备(windows-machine,linux-machine和ble-transponder)都在1米半径范围内。所以我认为我应该像在Linux机器上那样在Windows机器上获得相同的数据包,但我不这样做。这是为什么?我的设置是错误还是有更好的获取ADV数据包的方法?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

BLE Scan Interval Windows 10查看我的回答。

基本上,Windows指示BLE控制器扫描18.125 ms然后再睡眠100 ms。这就是你没有得到所有数据包的原因。