(Dis) Conexión de dispositivos bluetooth con Windows.Devices.Bluetooth.Rfcomm (WP8.1)

82

La conexión y desconexión de dispositivos Bluetooth ha dado varios resultados en Windows Phone / Desktop 8.1. He estado usando el Windows.Devices.Bluetooth.Rfcommespacio de nombres y he intentado conectar varios dispositivos con diferentes versiones / clases de Bluetooth.

  • Versión 1.2 (Clase 1 y 2)
  • Versión 2.0 (Clase 1 y 2)
  • Versión 2.1 (Clase 1 y 2)
  • Probado en Nokia Lumia 625 y Lumia 635, Dell Latitude E6500 y Dell Precision M6400.

Siempre que intento conectarme a cualquiera de los dispositivos 2.0 o 2.1, surgen problemas. La primera vez que intento conectarme a cada uno de los dispositivos, todo irá bien y la conexión se abrirá. Cuando posteriormente cierro la conexión y vuelvo a conectar el dispositivo, comienza el problema. Durante la reconexión, la conexión nunca se abrirá y el depurador lanzará una System.Exception:

> Message: No further data is available.

Además, cuando la conexión falla, los dispositivos con Windows 8.1 seguirán intentando (sin éxito) conectarse a los dispositivos Bluetooth por sí mismos, incluso cuando mi propia aplicación haya finalizado. A veces, el dispositivo Windows 8.1 también mostrará el dispositivo Bluetooth como conectado, mientras que el dispositivo muestra visualmente que ya no está conectado. La única forma de volver a conectar el dispositivo Bluetooth es desemparejarlo y apagar / reiniciar Bluetooth en el dispositivo Windows.

Siempre que intento hacer una nueva llamada DeviceInformationdespués de una conexión fallida, se negará a devolver el dispositivo que intenté conectar anteriormente.

> Message: The service cannot be found in the specified name space.

Curioso resultado, los dispositivos 1.2 funcionan perfectamente.

Archivo de manifiesto:

<m2:DeviceCapability Name="bluetooth.rfcomm">
  <m2:Device Id="any">
    <m2:Function Type="serviceId:00001101-0000-1000-8000-00805F9B34FB"/>
  </m2:Device>
</m2:DeviceCapability>

Selección de dispositivo:

Guid RfcommChatServiceUuid = Guid.Parse("00001101-0000-1000-8000-00805F9B34FB");
await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.FromUuid(RfcommChatServiceUuid)));

Conectando: (id = chatserviceid)

StreamSocket _socket;    
RfcommDeviceService service = await RfcommDeviceService.FromIdAsync(deviceInformation1._id);
await _socket.ConnectAsync(service.ConnectionHostName, service.ConnectionServiceName);

Desconectando:

this._socket.Dispose();
this._socket = null;

He investigado MSDN, ejemplos de código, demostraciones, videos del canal 9 y StackOverflow, ningún recurso puede decirme si hay problemas con Windows.Devices.Bluetooth.Rfcomm.

¿Hay alguien que reconozca estos extraños resultados? ¿Estoy haciendo algo mal?

ACTUALIZACIÓN: Trabajar con Windows Phone 8.1 GDR2 es una posible solución.

NOTA: Para mí y para varias otras personas, esta actualización aún presenta los mismos problemas.

ggg
fuente
2
Hola gl77 - Estoy trabajando en este problema en su cuenta de MSDN. Actualicé el hilo y los actualizaré cuando sepa más.
Matt Small
¿Ha encontrado una solución para esto? Tengo un problema similar en el que funciona en un dispositivo pero no en otro. Una nota es que el dispositivo que funciona ejecuta el controlador Bluetooth de Intel: 17.0.1401.422 mientras que el que no funciona ejecuta el controlador Bluetooth de Intel: 17.0.1405.460.
Jon H
Todavía no he encontrado una solución, el equipo de Matt todavía está trabajando en el problema. Esperemos una solución en un futuro próximo.
ggg
2
El fabricante del hardware me ayudó a eliminar la versión 17.0.1405.460 de los controladores Intel Bluetooth y la instalación de la versión anterior 17.0.1401.422. Una vez que hicimos eso, mi aplicación comenzó a funcionar nuevamente. Entonces, el problema, para mí, fueron los controladores más nuevos.
Jon H
1
¿Podría adjuntar un enlace a la publicación de MSDN?
SILENT

Respuestas:

1

Probaría CoolTerm y vería si funciona para usted. Tenía un problema similar al conectar un altavoz con un chip Sigma DSP en el interior a través de una conexión USB, por lo que si tiene problemas para ver dispositivos externos, es posible que el dispositivo no sea compatible con su computadora. Descargue CoolTerm y vaya a opciones y en Puerto serie debe cambiar su puerto a la conexión deseada (bluetooth, usb, etc.) Luego edite las opciones según sea necesario y vaya a la ventana principal y presione conectar y vea si funciona para usted.

JohnColtraneisJC
fuente