Senario有效
– BLE设备未配对
– Pi启动并启动我的App,找到BLE设备,配对和连接,接收数据
– 启动Pi并启动我的应用程序,它不会配对已经配对,它连接正常和接收数据.
Senario不起作用
– BLE设备不是配对或配对,无关紧要
– 如果我的BLE设备因断电或超出范围而断开连接并上电或返回范围,Pi将重新连接并抛出:
mscorlib.ni.dll中的“System.Exception”
指定的登录会话没有用户会话密钥. (HRESULT异常:0x80070572)
如果我尝试重启Pi,当我尝试执行时会抛出相同的消息:await _readCharacteristic.WriteClientCharacteristicConfigurationDescriptorAsync(GattClientCharacteristicConfigurationDescriptorValue.Notify);
唯一有效的方法是每次断开连接时取消配对设备.
也许这里有人见过同样的问题并解决了吗?
谢谢
开发人员有时可以通过PC或移动应用程序删除以前与已保留设备配对的设备,在其(非Windows)PC或电话应用程序中解决此设备的缺点,并在每次看到蓝牙设备时协商新的配对.这是可能的,因为许多蓝牙设备具有静态PIN,不需要交互配对,并且保持开放配对模式.因此,应用程序会在每次通信时创建一个新设备. Mac BLE API也不需要用户交互来进行配对和解除配对.
但是这种解决方案在Windows BLE API下是行不通的,因为与常规蓝牙不同,蓝牙低功耗API需要用户在配对和不配对“仪式”期间进行交互.用户必须同意每个配对,并且必须同意每个配对.从Windows上的UX角度来看,这使得此解决方案解决方案成为非首发解决方案.我的猜测是BLE设备制造商没有存储粘接.
我们自己开发自己的BLE驱动程序,与我们自己的BLE板对话;我们不得不重新运行运行我们的BLE设备的固件,因为虽然它可以在Mac OS和Android上使用上述方法工作,但Microsoft UWP上提供的BLE API需要在配对仪式期间进行用户交互.无论如何,这似乎是做事的正确方法.