2009-11-04 3 views
1

Actuellement, j'utilise des API Bluetooth conçues pour la pile Bluetooth de Microsoft. J'ai développé une application PC bluetooth en C++ qui découvre le périphérique bluetooth distant et authentifie le périphérique via une API. Le problème est lorsque j'éteins la radio bluetooth de l'appareil distant, puis que je lance une nouvelle recherche de l'appareil via l'application PC, l'API détecte toujours l'appareil distant même si la radio de l'appareil distant est éteinte.API Bluetooth pour détecter la radio sur un périphérique distant

Je suspecte que le cache de périphérique qui fait partie du système d'exploitation n'est pas mis à jour. L'API renvoie donc le même nom de périphérique.

Toute aide pour trouver pourquoi le périphérique n'est pas mis à jour et également les pointeurs vers l'API bluetooth serait appréciée.

Répondre

1

Quelle API utilisez-vous? Il y a les drapeaux 'inconnu', 'souvenir' et 'authentifié'. Lesquels avec WSALookupService ... sont affichés dans le champ dwOutputFlags par exemple, voir Bluetooth and WSAQUERYSET for Device Inquiry (Windows)

Malheureusement, cela signifie qu'il n'y a aucun moyen d'obtenir des "devices (en mode discoverable) dans la gamme". :-(Voir plus d'infos à la rubrique "Appareils à découvrir uniquement" dans mon document Bluetooth in Windows 7, en particulier dans la note de bas de page

1

Si vous avez besoin d'idées sur la façon de gérer ce problème, vous devriez regarder dans la bibliothèque bluetooth main (la source avaible) pour comprendre comment ils le font. http://32feet.net/ J'utilise cette bibliothèque et je peux obtenir une liste des périphériques distants (prevoiusly paires) dans la gamme.

0

le dispositif est ajouté dans la liste des périphériques authentifiés après l'authentification. Vous devez d'abord retirer votre appareil de cette liste.

avant de rechercher à nouveau l'appareil, vous pouvez utiliser BluetoothFindFirstDevice et BluetoothFindNexttDevice pour faire défiler la liste des appareils authentifiés.Filtrez votre appareil sur la base de la classe ou du nom convivial et supprimez-le en appelant BluetoothRemoveDevice.

La prochaine fois que vous appelez API d'authentification lorsque le périphérique est éteint, il échouera en donnant une erreur de délai d'attente. Maintenant, vous savez que l'appareil est éteint !!

Questions connexes