Windows 蓝牙 GetGattServicesAsync 方法中的错误

Windows 蓝牙 GetGattServicesAsync 方法中的错误

问题描述: 有时无法从GetGattServicesAsync带有参数BluetoothCacheMode.Cached或的方法获得某些响应BluetoothCacheMode.Uncached。只有 Windows 重启才有助于重新连接 le 设备并从 le 设备获取服务。

我们使用Windows.Devices.Bluetooth.dll.Net Framework 4.6.1来构建类库。Windows PC将连接蓝牙文件设备。

问题重现步骤:

  1. 发现具有确定服务的设备
  2. 使用 LE 设备的蓝牙地址调用方法 FromBluetoothAddressAsync
  3. 已找到 BluetoothLEDevice
  4. 将 LE 设备与桌面配对:

    DeviceInformationPairing loPairingInf = poDevice.DeviceInformation.Pairing;
    if (!loPairingInf.IsPaired)
    {
        DevicePairingKinds loConfirm = DevicePairingKinds.ConfirmOnly;
        DevicePairingProtectionLevel loProtectionLevel = DevicePairingProtectionLevel.Default;
        DeviceInformationCustomPairing loCustomPairing = loPairingInf.Custom;
    
  5. 检查连接状态。如果状态已连接,则调用方法GetGattServicesAsync(BluetoothCacheMode.Cached)

  6. 有时无法从 获得响应GetGattServicesAsync。30 秒后,我们取消任务,处理 BluetoothLEDevice,取消配对并尝试重新连接 le 设备。重新连接失败,只有 Windows 重启才能帮助建立与 le 设备的连接。

个人电脑:

  • 戴尔 Precision 5530
  • 蓝牙适配器高通QCA6174A
  • Windows 10 企业版(1803)
  • 版本 10.0.17134 内部版本 17134.590

LE 设备:

  • 蓝牙 4.2

相关内容