c# - 在 Windows 10 UWP 中连接丢失后如何以编程方式连接到配对的蓝牙设备

标签 c# bluetooth-lowenergy windows-10-universal

我有一个 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/

相关文章:

c# - 运行从 C# 应用程序最小化的 Metro 应用程序

c# - 管理对 FileUpload 控件的编辑

c# - 为什么内置异常消息往往没有具体细节? (例如字典中的键)

c# - 如何对运行时已知的类型执行方法重载解析?

c# - 为什么在 C# 中 sizeof(int*) = 8 而在 C++ 中 sizeof(int*) = 4

bluetooth - bluegiga 低能耗 USB 加密狗上的邻近配置文件

UWP 页面生命周期

c# - 即使我将焦点设置到控件,Windows 10 uwp 也会隐藏软键盘

ios - 是否可以从后台运行的应用程序唤醒 BLE?

android - 解码 BLE GattServices 数据