![Windows 蓝牙 GetGattServicesAsync 方法中的错误](https://linux22.com/image/1587756/Windows%20%E8%93%9D%E7%89%99%20GetGattServicesAsync%20%E6%96%B9%E6%B3%95%E4%B8%AD%E7%9A%84%E9%94%99%E8%AF%AF.png)
问题描述:
有时无法从GetGattServicesAsync
带有参数BluetoothCacheMode.Cached
或的方法获得某些响应BluetoothCacheMode.Uncached
。只有 Windows 重启才有助于重新连接 le 设备并从 le 设备获取服务。
我们使用Windows.Devices.Bluetooth.dll
.Net Framework 4.6.1来构建类库。Windows PC将连接蓝牙文件设备。
问题重现步骤:
- 发现具有确定服务的设备
- 使用 LE 设备的蓝牙地址调用方法 FromBluetoothAddressAsync
- 已找到 BluetoothLEDevice
将 LE 设备与桌面配对:
DeviceInformationPairing loPairingInf = poDevice.DeviceInformation.Pairing; if (!loPairingInf.IsPaired) { DevicePairingKinds loConfirm = DevicePairingKinds.ConfirmOnly; DevicePairingProtectionLevel loProtectionLevel = DevicePairingProtectionLevel.Default; DeviceInformationCustomPairing loCustomPairing = loPairingInf.Custom;
检查连接状态。如果状态已连接,则调用方法
GetGattServicesAsync(BluetoothCacheMode.Cached)
- 有时无法从 获得响应
GetGattServicesAsync
。30 秒后,我们取消任务,处理 BluetoothLEDevice,取消配对并尝试重新连接 le 设备。重新连接失败,只有 Windows 重启才能帮助建立与 le 设备的连接。
个人电脑:
- 戴尔 Precision 5530
- 蓝牙适配器高通QCA6174A
- Windows 10 企业版(1803)
- 版本 10.0.17134 内部版本 17134.590
LE 设备:
- 蓝牙 4.2