【问题标题】:Getting BLE advertisement packets in Windows 10在 Windows 10 中获取 BLE 广告数据包
【发布时间】:2017-02-17 08:51:34
【问题描述】:

我目前正在尝试从 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)都在 1m 半径范围内。所以我认为我应该在 windows 机器上得到与 linux 机器上相同的数据包,但我没有。这是为什么?是我的设置错误还是有更好的方法来获取 ADV 数据包?

提前谢谢你。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢埃米尔。你有这些数字的来源吗?
    • 您可以使用desowin.org/usbpcap 查看正在发送到蓝牙控制器的号码。
    • 好的,谢谢。除了在其他帖子中提到的方式之外,您还知道任何绕过方式吗?
    • 我不知道使用 Microsoft 的 BLE 堆栈的其他方法。但是,您可以将 BLE 堆栈更改为其他内容,例如 github.com/sandeepmistry/noble。然后你可以得到更多的控制,因为它是开源的。
    • 好的,谢谢。最后一个问题,因为我不知道如何通过 USBPcap 查看正确的值:真的是 18.125 毫秒还是秒?
    猜你喜欢
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多