[英]Bug in windows bluetooth le GetGattServicesAsync method
有时,无法从GetGattServicesAsync
方法GetGattServicesAsync
带有参数BluetoothCacheMode.Cached
或BluetoothCacheMode.Uncached
响应。 只有Windows重新启动才能帮助重新连接文件设备并从文件设备获取服务。
我们将Windows.Devices.Bluetooth.dll
与.Net Framework 4.6.1一起使用来构建类库。 Windows PC将连接蓝牙文件设备。
问题重现的步骤:
FromBluetoothAddressAsync
将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
,解除BluetoothLEDevice
并尝试重新连接该设备。 重新连接失败,只有重新启动Windows才能帮助建立与文件设备的连接。
PC:
戴尔Precision 5530
蓝牙适配器高通QCA6174A
Windows 10企业版(1803)
版本10.0.17134内部版本17134.590
LE设备:
题:
是否可以避免GetGattServicesAsync的问题?
取消GetGattServicesAsync后,如果没有重新启动Windows,也许存在一些编程黑客来重新连接文件设备?
我发现一些系统服务与此问题有关。
您可以尝试在TaskManager中重新启动Bluetooth Support Service
。
如果要从TaskManager识别进程,则此服务的命令行为
C:\\ WINDOWS \\ system32 \\ svchost.exe -k LocalService -p -s bthserv
此解决方法并不完美,但比重新启动计算机要好一些。
但是,请记住致电BluetoothLEDevice.Dispose
如果要关闭与BluetoothLE设备的连接,请处置。 否则,您可能会在一个过程中遇到其他问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.