Windows 10 IoT Bluetooth LE
windows-10-iot-core (1)
La razón de este error particular que está recibiendo es casi seguro que el dispositivo BLE en sí no está almacenando la información de enlace que se negocia durante el proceso de emparejamiento. Para que un emparejamiento BLE existente sea reutilizado, el dispositivo debe retener la vinculación con su compañero para futuras sesiones de comunicación.
Los desarrolladores a veces pueden evitar la falla de este dispositivo en su PC o aplicación de teléfono haciendo que la PC o la aplicación móvil eliminen cualquier vinculación previa con el dispositivo ya retenido y negocien un nuevo emparejamiento cada vez que vean el dispositivo Bluetooth. Esto es posible porque muchos dispositivos Bluetooth tienen un PIN estático, no requieren interacción para el emparejamiento y permanecen en modo de emparejamiento abierto. Entonces, la aplicación crea un nuevo emparejamiento de dispositivo en cada comunicación. La Mac BLE API no requiere interacción del usuario para el emparejamiento y el desemparejamiento.
Pero esta solución no es viable bajo Windows BLE API, porque a diferencia de Bluetooth normal, la API Bluetooth Low Energy requiere la interacción del usuario durante el emparejamiento y las "ceremonias" sin emparejamiento. El usuario debe aceptar cada emparejamiento y debe aceptar cada combinación. Esto hace que esta solución provisional no sea un iniciador desde el punto de vista de UX en Windows. Mi suposición es que el fabricante del dispositivo BLE no está almacenando la unión.
Nos encontramos con una situación como esa al desarrollar nuestro propio controlador BLE para hablar con nuestra propia placa BLE; tuvimos que volver a hacer el firmware ejecutando nuestro dispositivo BLE porque si bien funcionaría bajo Mac OS y Android con el método descrito anteriormente, la API BLE disponible en el UWP de Microsoft requiere la interacción del usuario durante la ceremonia de emparejamiento. Esta parece ser la manera correcta de hacer las cosas, de todos modos.
Tengo un problema con la reconexión a mi dispositivo BLE.
Senario que funciona - El dispositivo BLE no está sincronizado - Pi inicia y arranca mi aplicación, busca el dispositivo BLE, se empareja y se conecta, recibe datos - Arranca Pi e inicia mi aplicación, no se empareja porque ya está emparejado, se conecta bien y recibe datos.
Senario que no funciona - El dispositivo BLE no es par o par, no importa - Si mi dispositivo BLE se desconecta debido a una pérdida de potencia o fuera de alcance y se enciende o vuelve a estar dentro del rango, el Pi se volverá a conectar y lanzará: ''System.Exception ''en mscorlib.ni.dll No hay una clave de sesión de usuario para la sesión de inicio de sesión especificada. (Excepción de HRESULT: 0x80070572)
Si intento reiniciar el Pi, se lanza el mismo mensaje cuando intento ejecutar: await _readCharacteristic.WriteClientCharacteristicConfigurationDescriptorAsync (GattClientCharacteristicConfigurationDescriptorValue.Notify);
Lo único que funciona es si desinstalo el dispositivo cada vez que se desconecta.
Este es el mismo problema que tiene este tipo: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/b98d77f2-bf5e-45fc-9495-1c444b54450e/uwpreconnecting-to-a-ble-csac- device-causes-exception? forum = wpdevelop
Tal vez haya alguien aquí que haya visto el mismo problema y lo haya resuelto.
Gracias