AW: Android - BlueTooth LE Advertise Broadcast Bytes empfangen
2. Mai 2017, 19:56
Hallo Rollo,
auch danke für diese Info.
Inzwischen habe ich das recht brauchbar hinbekommen.
Nach recht langen Versuchen, dann auch ähnliche Sequenz wie von Dir.
Ja, scheint das DiscoverServices macht nen connect, wenn erforderlich.
Allerdings verhält sich DiscoverServices (bei mir) unterschiedlich stabil,
jenachdem wieviel Chars ich eingerichtet habe. Habe nun nach langen Versuchsreichen
beschlossen, immer Connect konkret zu verwensen, und dann erst nach Erfolg DiscoverServices.
DiscoverDevices selbst klappt sehr rasch.
Connect dagegen eben nur gelegentlich, das hab ich in eine Loop gepackt.
Muss man halt leider warten bis es verbindet.
Leider gibt Connect immer True zurück, auch wenn es nicht geklappt hat.
Ich verwende dann bei jedem Versuch IsConnected (statt die RSSI abzufragen), um zu
sehen ob die Verbinung tatsächlich geklappt hat. Das funktioniert zuverlässig.
Auch in meinem RN4871 Modul kommt dann gleichzeitig das Connect,
sobald es geklappt hat.
Ich habe 1 Private Service mit 2 Private Characteristics eingerichtet,
diese kann ich dann problemlos abfragen. Ich filtere die Suche dabei
"manuell" nach 128bit UUID.
Jedoch gibt es Probleme, wenn ich z.B. 4 oder mehr Characteristics einrichte.
Bei 4 klappt es gelegentlich nicht, und die Sucher dauert deutlich länger, bei 6 garnicht mehr.
Bei 2 jedoch immer, bisher absolut zuverlässig, und auch ohne merkliche Suchzeit.
Also mache ich nur mit 2 Chars, mit je 20 Octets Daten.
Das passt eh gut. Eine nehme ich zum Senden an das RN4871, das andere
habe ich als Notification eingerichtet und darüber sendet das RN an meine App.
Somit habe ich bidirektionale Schnittstelle. Ist ja fast wie eine RS232/UART jetzt bei mir.
Wenn was nicht mehr klappt (connection verloren, IsConnect false),
gehe ich zurück, dann fängt es wieder an zu connecten usw.
und holt das nach, was nicht erledigt wurde.
Das gibt dann zwar eine Pause, aber irgendwann werden die Daten dann übertragen.
Und dann halt noch ein Timeout (zähler) insgesamt, wenn es halt wirklich nicht mehr geht.
Somit, denke ich ists zumindest ne Komplett-Lösung.
Nun muss ich mich noch mit Threads und so beschäftigen, damit das auch
nicht nur "so" bei mir zuhause klappt, sondern wirklich zuverlässig. Da werde ich sicher
noch andere Fragen posten hier... Aber so prinzipiell habe ich es hinbekommen.
Vielen Dank
|