在 Windows 10 中获取 BLE 广告包

Getting BLE advertisement packets in Windows 10

我目前正在尝试从 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 数据包,我可以在 linux-机器上用 WireShark 验证它。

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

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

所有设备(windows-机器、linux-机器和蓝牙转发器)都在 1 米半径内。所以我认为我应该在 windows-机器上获得与在 linux-机器上相同的数据包,但我没有。这是为什么?是我的设置错误还是有更好的获取 ADV 数据包的方法?

提前致谢。

查看我的回答。

基本上,Windows 指示 BLE 控制器扫描 18.125 毫秒,然后休眠 100 毫秒。这就是为什么你没有得到所有数据包的原因。