我有一个 Windows 10 UWP 应用程序,它能够以编程方式与蓝牙 LE 设备配对。配对成功后,也会建立与设备的连接。
如果在某个时刻,设备断开连接,我将无法从 LE 设备读取任何 GattCharacteristics。我可以检查连接是否存在,但无法重新建立连接。
DeviceInformation deviceInfo = await DeviceInformation.CreateFromIdAsync("deviceId", "additionalProperties", "DeviceInformationKind");
if(deviceInfo.ConnectionStatus != BluetoothConnectionStatus.Connected) { // re-establish the connection }
谢谢。
最佳答案
问题
Bluetooth LE 设备不存储在配对过程中创建的绑定(bind)信息。绑定(bind)信息允许两个先前配对的设备在断开连接时启动新连接。
Windows 10 解决方案
使用 in-app pairing APIs ,您可以通过编程方式告诉系统与蓝牙 LE 设备配对(听起来您已经在这样做了)。要解决上述绑定(bind)问题,必须将 DevicePairingProtectionLevel
设置为 None
。因此,您的应用内配对代码可能如下所示:
var result = await someDevice.Pairing.PairAsync(DevicePairingProtectionLevel.None);
将 DevicePairingProtectionLevel
设置为 None
告诉系统忽略绑定(bind)信息,只寻找匹配的设备。
外围解决方案
或者,如果您有权访问外围设备的固件,则可以将其设置为记住绑定(bind)信息。那么您当前在 Windows 10 上的配对调用应该可以正常工作。
关于c# - 在 Windows 10 UWP 中连接丢失后如何以编程方式连接到配对的蓝牙设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37921885/