我遇到了重新连接到我的BLE设备的问题。
Senario有效 - BLE设备未配对 - Pi启动并启动我的应用程序,找到BLE设备,配对并连接,接收数据 - 启动Pi并启动我的应用程序,它不会配对已经配对,它连接正常并接收数据。
Senario不起作用 - BLE设备不是配对或配对,无关紧要 - 如果我的BLE设备因断电或超出范围而断开连接并上电或返回范围,Pi将重新连接并抛出: ' System.Exception的'在mscorlib.ni.dll中 指定的登录会话没有用户会话密钥。 (HRESULT异常:0x80070572)
如果我尝试重新启动Pi,当我尝试执行时会抛出相同的消息:await _readCharacteristic.WriteClientCharacteristicConfigurationDescriptorAsync(GattClientCharacteristicConfigurationDescriptorValue.Notify);
唯一有效的方法是每次断开连接时取消配对设备。
也许这里有人见过同样的问题并解决了它?
由于
答案 0 :(得分:10)
您收到此特定错误的原因几乎可以肯定是BLE设备本身不存储在配对过程中协商的绑定信息。对于要重新使用的现有BLE配对,设备必须保持与其伙伴的绑定以用于将来的通信会话。
开发人员有时可以通过PC或移动应用程序删除以前与已保留设备的配对来解决其(非Windows)PC或电话应用程序中的此设备缺点,并在每次看到蓝牙时协商新的配对设备。这是可能的,因为许多蓝牙设备具有静态PIN,不需要交互配对,并保持开放配对模式。因此,应用程序会在每次通信时创建一个新设备配对。 Mac BLE API也不需要用户交互配对和解除配对。
但是这种解决方案在Windows BLE API下是行不通的,因为与常规蓝牙不同,蓝牙低功耗API需要用户在配对和不配对“仪式”期间进行交互。用户必须同意每个配对,并且必须同意每个配对。从Windows上的UX角度来看,这使得此解决方案解决方案成为非首发解决方案。我的猜测是BLE设备制造商没有存储粘接。
我们遇到这样的情况,我们自己开发自己的BLE驱动程序,与我们自己的BLE板对话;我们不得不重新运行运行我们的BLE设备的固件,因为虽然它可以在Mac OS和Android上使用上述方法工作,但Microsoft UWP上提供的BLE API需要在配对仪式期间进行用户交互。无论如何,这似乎是做事的正确方法。
答案 1 :(得分:0)
在Microsoft中都不是一件容易的事。要读取蓝牙设备,您需要执行许多操作。抽象级别将翻转。他们为工作而工作。周到的架构,没有异味。开发领域正在慢慢转向Linux。每年越来越多。 MS很快就会失去用户。