web-dev-qa-db-fra.com

(Dés) Connexion de périphériques Bluetooth avec Windows.Devices.Bluetooth.Rfcomm (WP8.1)

La connexion et la déconnexion aux appareils Bluetooth ont donné divers résultats sur Windows Phone/Desktop 8.1. J'utilise le Windows.Devices.Bluetooth.Rfcomm namespace et j'ai essayé de connecter plusieurs appareils avec différentes versions/classes Bluetooth.

  • Version 1.2 (classe 1 et 2)
  • Version 2.0 (classe 1 et 2)
  • Version 2.1 (classe 1 et 2)
  • Testé sur Nokia Lumia 625 et Lumia 635, Dell Latitude E6500 et Dell Precision M6400.

Chaque fois que j'essaie de me connecter à l'un des appareils 2.0 ou 2.1, il y a des problèmes. La première fois que j'essaie de me connecter à chacun des appareils, tout se passera bien et la connexion s'ouvrira. Lorsque je ferme ensuite la connexion et reconnecte l'appareil, le problème commence. Pendant la reconnexion, la connexion ne s'ouvrira jamais et le débogueur lancera un System.Exception:

> Message: No further data is available.

En outre, lorsque la connexion échoue, les appareils Windows 8.1 continueront d'essayer (sans succès) de se connecter eux-mêmes aux appareils Bluetooth, même lorsque ma propre application est fermée. Parfois, le périphérique Windows 8.1 affiche également le périphérique Bluetooth comme connecté, tandis que le périphérique montre visuellement qu'il n'est plus connecté. La seule façon de reconnecter le périphérique Bluetooth consiste à le dissocier et à arrêter/redémarrer Bluetooth sur le périphérique Windows.

Chaque fois que j'essaie de faire un nouvel appel à DeviceInformation après une connexion échouée, il refusera de renvoyer le périphérique que j'ai précédemment essayé de connecter.

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

Résultat étrange, les appareils 1.2 fonctionnent parfaitement.

Fichier manifeste:

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

Sélection du périphérique:

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

Connexion: (id = chatserviceid)

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

Déconnexion:

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

J'ai fait des recherches sur le MSDN, les échantillons de code, les démos, les vidéos du canal 9 et StackOverflow, aucune ressource ne peut me dire s'il y a des problèmes avec Windows.Devices.Bluetooth.Rfcomm.

Y a-t-il quelqu'un qui reconnaît ces résultats étranges? Est-ce que je fais quelque chose de mal?

MISE À JOUR: Travailler avec Windows Phone 8.1 GDR2 est une solution possible.

REMARQUE: pour moi-même et plusieurs autres personnes, cette mise à jour pose toujours les mêmes problèmes.

82
ggg

Je voudrais essayer CoolTerm et voir si cela fonctionne pour vous. J'avais un problème similaire en connectant un haut-parleur avec une puce Sigma DSP à l'intérieur via une connexion USB, donc si vous avez du mal à voir les périphériques externes, il se peut que le périphérique soit incompatible avec votre ordinateur. Téléchargez CoolTerm et allez dans les options et sous Port série, vous devez changer votre port pour la connexion souhaitée (bluetooth, usb, etc.) Ensuite, modifiez les options si nécessaire et allez dans la fenêtre principale et appuyez sur se connecter et voyez si cela fonctionne pour vous.

1
JohnColtraneisJC