Windows 10 Bluetooth Low Energy Connexion c#
Pour un projet j'ai besoin d'obtenir des données à partir d'un périphérique Bluetooth sur windows 10 à l'aide de C#. Je ne suis pas trop familier avec le Bluetooth de l'API et ne peut pas comprendre pourquoi la suivante ne fonctionne pas:
À l'aide de la BluetoothLEAdvertisementWatcher
je recherche pour des annonces, qui fonctionne très bien. Je n'ai reçu l'annonce de l'appareil (nom local), ainsi que c'est ServiceUuids
. Ensuite, j'ai essayer de connecter le périphérique à l'aide de la BluetoothAddress
de la réception de l'annonce:
private async void OnAdvertisementReceived(BluetoothLEAdvertisementWatcher watcher,
BluetoothLEAdvertisementReceivedEventArgs eventArgs)
{
ulong blAdress = eventArgs.BluetoothAddress;
BluetoothLEDevice blDevice = await
Windows.Devices.Bluetooth.BluetoothLEDevice.FromBluetoothAddressAsync(blAdress);
}
Cependant, cela conduit à une exception:
Élément introuvable. (Exception de HRESULT: 0x80070490).
Est-ce la bonne façon de lire les données à partir de l'appareil? Sont d'autres options pour lire les données à partir des services? Jumeler manuellement le périphérique dans windows n'est pas vraiment une option, et semble aussi à l'échec.
/Edit 1: je vérifie pour le nom local de l'appareil pour vérifier que je ne essayer de se connecter à la bonne. Donc je suppose qu'il y a un problème avec la connexion à cet appareil, je n'ai encore aucune idée de la façon de travailler autour de cela. Le service de données a été réussi à lire sur iOS, il devrait donc être possible.
OriginalL'auteur Stoffel | 2015-10-01
Vous devez vous connecter pour publier un commentaire.
Jusqu'à ce que MS résout ce problème, la seule solution fiable pour ce que j'ai trouvé pour vous connecter à un BLE de l'appareil est de demander le registre d'une liste de paires de BLE périphériques et de comparer l'adresse bluetooth dans l'annonce avec avec de registre liste de paires de dispositifs capables. Mon expérience est que lorsque FromBluetoothAddressAsync est appelé sur un appareil non couplé Windows déclenche une exception et tue le guetteur fil. J'ai peu de code C++ que je suis heureux de partager ce que lit le registre et crée une liste de paires de BLE appareils.
Espérons que MS va prendre le temps de soutenir pleinement BLE de la même manière, Apple ne.
OriginalL'auteur oregonduckman
Ici est une référence à partir de MS (https://social.msdn.microsoft.com/Forums/vstudio/en-US/e321cb3c-462a-4b16-b7e4-febdb3d0c7d6/windows-10-pairing-a-ble-device-from-code?forum=wdk). Il semble que pour utiliser cette BluetoothLEDevice.FromBluetoothAddressAsync nous avons à gérer l'exception lorsque l'appareil est de la publicité et n'est pas encore relié.
OriginalL'auteur oregonduckman
J'ai eu le même problème quand j'en utilisant le BluetoothLEAdvertisementWatcher directement.
Puis je l'ai testé les différentes adresses répertoriées par l'observateur. J'ai trouvé qu'elle est liée à la périphériques Bluetooth.
Après l'ajout du filtre suivant, je peux me connecter au GATT de périphérique (TI Capteur Tag) avec succès.
OriginalL'auteur Jeffrey Chen
Juste une supposition, mais peut-être vous avez besoin de ceci:
et dans le OnAdvertisementReceived événement
OriginalL'auteur LanderV
Cette Question est de plus de 3 ans, mais parce qu'il a plus de 13000 points de vue, je vais répondre.
La raison pour laquelle l'Élément est introuvable, c'est que Windows.Les appareils n'est pas au courant de la publicité Ble appareils jusqu'à ce qu'ils sont couplés.
Au lieu de cela, dans le OnAdvertisementReceived suffit d'utiliser:
J'ai aussi un très simple uwp exemple sur github, il n'a pas de contrôles de le garder aussi simple que possible. Tous les résultats sont affichés dans la fenêtre de sortie de débogage.
Le plus utile de l'info est en de la page d'accueil.xaml.cs
check it out: https://github.com/GrooverFromHolland/SimpleBleExample_by_Devicename
OriginalL'auteur GrooverFromHolland