重新连接到我的BLE设备时出现问题.
Senario工作 - BLE设备没有配对 - Pi启动我的应用程序,找到BLE设备,配对和连接,接收数据 - 启动Pi并启动我的应用程序,它不会配对已经配对,它连接正常和接收数据.
Senario无效 - BLE设备不是配对或无配对,无关紧要 - 如果我的BLE设备因断电或超出范围而断开连接并上电或返回范围,Pi将重新连接并抛出:'System.Exception 'in mscorlib.ni.dll指定的登录会话没有用户会话密钥.(HRESULT异常:0x80070572)
如果我尝试重新启动Pi,当我尝试执行时会抛出相同的消息:await _readCharacteristic.WriteClientCharacteristicConfigurationDescriptorAsync(GattClientCharacteristicConfigurationDescriptorValue.Notify);
唯一有效的方法是每次断开连接时取消配对设备.
这个问题与这个人有同样的问题:https://social.msdn.microsoft.com/Forums/sqlserver/en-US/b98d77f2-bf5e-45fc-9495-1c444b54450e/uwpreconnecting-to-a-ble-csac-设备原因的异常?论坛= wpdevelop
也许这里有人见过同样的问题并解决了吗?
谢谢
您收到此特定错误的原因几乎可以肯定是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需要在配对仪式期间进行用户交互.无论如何,这似乎是做事的正确方法.