c# .net bluetooth arduino bluetooth-lowenergy

c# - Las llamadas a BluetoothLEDevice.FromIdAsync no funcionan después de la actualización de los creadores de Windows 10



.net arduino (2)

En mi caso, se estaba lanzando una excepción que hacía parecer que esta llamada estaba fallando, pero en realidad era una API BTLE diferente.

¿Su objeto bleDevice almacenado en caché desde algún lugar? Teníamos la creencia de que las cadenas ASQ ya no funcionaban y teníamos que comunicar todos los dispositivos a la máquina y filtrarlos de una manera más general.

Espero que ayude.

Escribí un código para conectarme a mi dispositivo bluetoothLE. Funcionaba bien antes de que los creadores de Windows 10 crearan la actualización. Después de la actualización, cuando el programa llegue a la siguiente línea de código:

bluetoothLeDevice = await BluetoothLEDevice.FromIdAsync(bleDevice.Id);

Permanece en esa línea para siempre. He visto algunas soluciones para estos problemas, pero solo para proyectos de UWP. ¿Alguna idea de cómo podría resolver este problema?


Después de leer este hilo , descubrí una solución. Si bien Microsoft no repara la API rota, la forma más fácil de hacer que el código funcione es agregar un AppID en el registro de Windows. Aquí los pasos para resolver el problema:

  1. Abra regedit (escriba regedit.exe en la barra de búsqueda);
  2. En Computer / HKEY_LOCAL_MACHINE / SOFTWARE / Classes / AppId agregue una nueva clave (haga clic con el botón derecho en "new> key") con el nombre del ejecutable para su proceso de cliente (por ejemplo, "YourClient.exe");
  3. Haga clic derecho en la derecha de la ventana regedit, luego "nuevo"> "valor de cadena". Después de eso, edite la propiedad "Nombre" para que sea "AppID". Luego, cambie el valor de "Datos" a su Id del programa;
  4. Agregue una nueva clave en el registro, de manera similar al paso 2, pero con el Id de su ejecutable;
  5. Haga clic derecho en la derecha de la ventana regedit, luego "nuevo"> "valor DWORD". Cambia la propiedad "Nombre" a "AuthenticationLevel". Luego cambie el valor de "Datos" a 1.