这个问题通常由以下问题回答:Windows UWP发现后连接到BLE设备
我目前正在使用Windows 10上的C#.NET WinForm编写自定义服务并进行测试,以连接到低功耗蓝牙(BLE)设备。我正在使用Framework 4.6.1。我们正在使用带有TI CC2650 BLE子卡的TI SmartRF06评估板。另一位开发人员正在处理主板的固件。
当前,我使用的方法类似于上面的参考答案,因此我能够连接到已经绑定的BLE设备。该设备是手动绑定的,Windows确实要求我输入PIN。由于设备没有PIN,只需输入“ 0”就可以连接设备。一旦建立连接,我就可以使用所有GATT服务并做我需要做的事情。因此,我对找到并持有Advertising BLE设备没有任何问题。
问题是如何连接尚未配对的BLE设备?我遍历网络,发现了许多BLE代码示例,但没有具体说明如何完成代码配对。不确定我什至不需要配对,但Windows似乎仅在配对设备上显示我的GATT服务。
当我使用未配对的设备执行此操作时:
private void BleWatcherOnReceived(BluetoothLEAdvertisementWatcher sender, BluetoothLEAdvertisementReceivedEventArgs args)
{
var dev = await BluetoothLEDevice.FromBluetoothAddressAsync(args.BluetoothAddress);
// dev.DeviceInformation.Pairing.CanPair is true
// dpr.Status is Failed
DevicePairingResult dpr = await dev.DeviceInformation.Pairing.PairAsync(DevicePairingProtectionLevel.None);
var service = await GattDeviceService.FromIdAsync(dev.DeviceInformation.Id);
}
Run Code Online (Sandbox Code Playgroud)
当未手动配对设备时,dpr的结果总是失败。导致结果GattDeviceServices为空。但是我能够获得BLE设备的广告和属性。
还有这种类型的连接方法,但我不知道如何使用它:
var prslt = await device.DeviceInformation.Pairing.Custom.PairAsync(DevicePairingKinds.ProvidePin, DevicePairingProtectionLevel.None,IDevicePairingSettings);
Run Code Online (Sandbox Code Playgroud)
IdeviceParingSettings是一个接口。不确定要使用哪个类。我在想这是可以设置我可能需要的“ O”密码的地方?
在Windows中使用BLE设备没有安全性的情况下,是否有人能够与Windows中的BLE设备配对。基本上,它应该是开放的。我觉得我缺少一些简单的东西,或者根本不可能做到这一点(我已经看到一些帖子声称是这种情况。其中大多数已经有很多年了)。
我确实尝试了上述文章中描述的方法,但结果没有任何差异。
任何帮助表示赞赏。如果您需要更多代码,请查看我在顶部提供的链接,因为这是我开始的地方。如果有可能我做错了一个序列,我将很乐意提供我所有的实际代码。