我有一个Windows 10 UWP应用程序,可以通过编程方式与蓝牙LE设备配对。配对成功后,还建立了与设备的连接。
如果在某个时候,该设备被断开,我将无法从LE设备中读取任何gattcharacterics。我可以检查连接是否存在,但是我无法重新建立连接。
DeviceInformation deviceInfo = await DeviceInformation.CreateFromIdAsync("deviceId", "additionalProperties", "DeviceInformationKind");
if(deviceInfo.ConnectionStatus != BluetoothConnectionStatus.Connected) { // re-establish the connection }
谢谢。
问题
蓝牙LE设备没有存储配对过程中创建的键合信息。粘结信息允许两个先前配对的设备在断开连接的情况下启动新连接。
Windows 10解决方案
使用应用内配对API,您可以通过编程方式告诉系统与蓝牙LE设备配对(听起来您已经在执行此操作)。要解决上述键合问题,必须将DevicePairingProtectionLevel
设置为None
。因此,您的应用内配对代码看起来像:
var result = await someDevice.Pairing.PairAsync(DevicePairingProtectionLevel.None);
将DevicePairingProtectionLevel
设置为None
告诉系统以忽略键合信息并寻找匹配的设备。
外围解决方案
另外,如果您可以访问外围的固件,则可以将其设置为记住键合信息。然后,您当前在Windows 10上的配对电话应该起作用。