Android BLE, caractéristiques de lecture et d'écriture
-
20-12-2019 - |
Question
Je développe actuellement Android BLE et rencontre de nombreux problèmes avec les piles Android BLE.
Mon outil de développement est le Samsung Galaxy J avec Android 4.3.
Je veux savoir comment lire une caractéristique du BLE et écrire les caractéristiques (c'est comme si je vérifiais quelles données j'ai reçues, puis j'envoyais d'autres données en utilisant le BLE)
et j’ai de sérieux problèmes pour comprendre comment fonctionnent les callbacks BLE Android, Je ne comprends pas ces 5 fonctions... et le manuel n’est pas clair, quelqu’un de bonne âme peut-il l’expliquer sous une forme simple ???
onCharacteristicWrite
onCharacteristicRead
onCharacteristicChanged
onDescriptorRead
onDescriptorWrite
Ma situation actuelle est la suivante : j'ai réussi à lire les données dans le rappel onCharacteristicChanged(), puis j'ai vérifié la réception des données. J'essaie d'envoyer les données en utilisant
characteristics.setValue(data)
gatt.writeCharacteristic(characteristics)
Mais la pile Android BLE n’appelle pas CharacteristicsWrite() et en fait, Android reste là.
J'essaie de rechercher sur Android BLE sur Google, il n'y a pas beaucoup d'informations et seulement un tas de plaintes sur l'instabilité des piles BLE......
La solution
Chacun du rappel de l'Android Ble a ses fonctions;
OnDescriptorread et OndescriptorWrite
Ceci est utilisé pour écrire / lire les paramètres de configuration du périphérique BLE, certaines manufactures peuvent nécessiter d'envoyer des données au périphérique BLE et de l'acquitter en la lecture, avant de pouvoir vous connecter au périphérique BLE
ONCHARACTERISTICWRITE
Ceci est utilisé pour envoyer des données au périphérique BLE, généralement en mode de données pour le périphérique BLE. Ce rappel est appelé lorsque vous tapez
gatt.writeCharacteristic(characteristics);
ONCHARACTERISTIMRead
Ceci est utilisé pour lire les données du périphérique BLE Le rappel est appelé lorsque vous écrivez ce code
gatt.readCharacteristic(characteristics);
ONCHARACTERISTICCHANGED
Ce rappel est appelé lorsque vous essayez d'envoyer des données à l'aide de WritCharacteristic (caractéristiques) et que le périphérique BLE répond avec une certaine valeur.
Habituellement, un périphérique BLE comporte peu de caractéristiques, pour le rendre simple, je nomme quelques caractéristiques
-
écrire - Caractéristiques de l'écriture - lire - CARACTÉRISTIQUES DE LIRE
Pour préciser, lorsque vous envoyez des données, vous devrez utiliser des caractéristiques
Un point très important à noter est Android Ble Stack vous permet d'écrire des caractéristiques une à la fois seulement !!
Exemple: Si vous essayez d'appeler des caractéristiques d'écriture deux fois à la fois
gatt.writeCharacteristic(characteristics);
gatt.writeCharacteristic(characteristics);
La pile Android Ble n'émettra pas de 2e caractéristiques d'écriture!
Autres conseils
Avant setValue:characteristics.setValue(data)
Tu devrais utiliser gatt.setCharacteristicNotification(Char,true)
à setNotification
.