Android BLE, Lese- und Schreibeigenschaften
-
20-12-2019 - |
Frage
Ich entwickle derzeit Android BLE und stoße auf viele Probleme mit den Android BLE-Stacks..
Mein Entwicklungstool ist Samsung Galaxy J mit Android 4.3.
Ich möchte wissen, wie ich ein Merkmal aus der BLE lesen und die Merkmale schreiben kann (als würde ich überprüfen, welche Daten ich erhalten habe, und dann sende ich weitere Daten mit der BLE)
und ich habe ernsthafte Probleme zu verstehen, wie die Android BLE-Rückrufe funktionieren, Ich verstehe diese 5 Funktionen nicht...und das Handbuch ist nicht klar, kann jemand gute Seele in einfacher Form erklären???
onCharacteristicWrite
onCharacteristicRead
onCharacteristicChanged
onDescriptorRead
onDescriptorWrite
Meine aktuelle Situation ist, dass ich es geschafft habe, die Daten im onCharacteristicChanged () -Rückruf zu lesen und dann die empfangenen Daten überprüft habe, mit denen ich versuche, die Daten zu senden
characteristics.setValue(data)
gatt.writeCharacteristic(characteristics)
Aber der Android-BLE-Stack ruft onCharacteristicsWrite () nicht auf und tatsächlich hängt Android einfach dort..
Ich versuche über Android BLE zu googeln, es gibt nicht viele Informationen und nur eine Menge Beschwerden darüber, wie instabil die BLE-Stacks sind......
Lösung
Jeder der Rückruf von dem Android BLE hat seine Funktionen;
OndescriptorRead und OnDescriptorwrite
Hiermit wird verwendet, um die Konfigurationseinstellungen für das BLE-Gerät zu schreiben / zu lesen, einige Hersteller müssen möglicherweise möglicherweise Daten an das BLE-Gerät senden und an das Lesen anerkennen, bevor Sie sich mit dem BLE-Gerät anschließen
Oncharakteristikwrite
Dies wird verwendet, um Daten an das BLE-Gerät zu senden, normalerweise im Datenmodus für das BLE-Gerät. Dieser Rückruf wird aufgerufen, wenn Sie eingeben
generasacodicetagpre.oncharacteristicRead
Hiermit wird Daten aus dem BLE-Gerät gelesen Der Rückruf wird aufgerufen, wenn Sie diesen Code schreiben
generasacodicetagpre.oncharacteristicchanged
Dieser Rückruf wird aufgerufen, wenn Sie versuchen, Daten mithilfe von Writecharacteristic (Merkmale) zu senden, und das BLE-Gerät reagiert mit einem bestimmten Wert.
In der Regel hat ein BLE-Gerät nur wenige Eigenschaften, um es einfach zu machen, ich nenne ein paar Eigenschaften
-
schreiben - Schreibmerkmale - lesen - Lesemerkmale
Um es zu löschen, wenn Sie Daten senden, müssen Sie
Ein sehr wichtiger Punkt auf Note ist Android BLE-Stapel ermöglicht es Ihnen, Eigenschaften einzeln zu schreiben !!
Beispiel: Wenn Sie versuchen, die Schreibeigenschaften zweimal gleichzeitig anzurufen
generasacodicetagpre.Der Android BLE-Stack gibt nicht die 2. Schreibeigenschaften aus!
Andere Tipps
Vor setValue:characteristics.setValue(data)
sie sollten verwenden gatt.setCharacteristicNotification(Char,true)
zu setNotification
.