AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi BluetoothLE-Subscription über App-Neustart hinaus aktiv halten
Thema durchsuchen
Ansicht
Themen-Optionen

BluetoothLE-Subscription über App-Neustart hinaus aktiv halten

Ein Thema von knaeuel · begonnen am 30. Jan 2018 · letzter Beitrag vom 2. Feb 2018
Antwort Antwort
knaeuel

Registriert seit: 2. Jul 2007
110 Beiträge
 
Delphi 10.3 Rio
 
#1

BluetoothLE-Subscription über App-Neustart hinaus aktiv halten

  Alt 30. Jan 2018, 15:38
Hallo zusammen,

ich bin mir nicht sicher, ob es sich nur um ein Verständnisproblem handelt oder ob es wirklich ein (programmier-)technisches Problem ist.

Ich habe eine App programmiert, die BluetoothLE-Geräte sucht, Services und Characteristics abruft sowie zugehörige Descriptors und Properties. Anschließend werden Werte gesendet und empfangen bzw. Subscriptions für bestimmte Characteristics eingetragen.

Zum Problem:
Ich habe hier ein Blutdruckmessgerät. Die App liest die Informationen über die angebotenen Dienste ein, schreibt ein Konfigurationsbyte und empfängt anschließend Blutdruckmesswerte sowie ein paar zusätzliche Daten wie mögliche Messfehler oder andere Unregelmäßigkeiten während der Messung.

Das Messgerät schaltet sein Bluetooth erst nach der Messung an, macht etwa 10 Sekunden irgendetwas geheimnisvolles oder auch gar nichts (ich weiß es nicht) und überträgt dann die Messergebnisse. Weitere 10 Sekunden später schaltet sich das Gerät bereits ab.

Die App empfängt durch die Subscription die Messergebnisse und "dekodiert" sie.

Für eine weitere Messung wird das Messgerät wieder neu eingeschaltet. Die App dagegen läuft einfach weiter. Der Datentransfer funktioniert, ohne dass ich erneut eine Verbindung aufbauen, Services etc. abrufen oder die Subscription neu eintragen müsste.

Starte ich aber die App neu, dann komme ich nicht darum herum, innerhalb der kurzen Zeitspanne, in der das Messgerät über BluetoothLE erreichbar ist, das Gerät zu discovern, alle Dienste etc. neu einzulesen und eine erneute Subscription zu hinterlegen. Einzig das Schreiben des Konfigurationsbytes kann ich mir sparen.

Da das Messgerät in der Lage ist, die Subscription zu speichern, müsste ich doch auch in der App vergleichbares schaffen können...

Wo liegt der (Denk-)Fehler? Ich bin dankbar für jede Hilfe!
Danke schon vorab fürs Lesen!
Wolfgang

Geändert von knaeuel (30. Jan 2018 um 16:09 Uhr) Grund: Konkretisierung
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#2

AW: BluetoothLE-Subscription über App-Neustart hinaus aktiv halten

  Alt 30. Jan 2018, 17:51
..."Wo liegt der (Denk-)Fehler?"...
-> in der Annahme, man könnte eine BLE Verbindung über PowerOn/Off eines der Teilnehmer "halten"... dafür gibt es "bonden" für die Einrichtung einer quasi permanenten Verbindung, aber das macht für diesen Anwendungsfall NULL Sinn.

Saubere Lösung als StateMaschiene("Sleep"-"RasterScan"-"Connect&DiscoverServices&NotifyEnable"-WaitForData(max 15sec)-"NotifyDisable&Disconnect"-"Sleep"):
- scannen bis Messgerät zu finden... in der APP nicht 1x 10sec oder gar endlos, besser 3sec-Scan, 1sec-Pause, 3sec-Scan,1sec-Pause... der BLE-Stack wird es dir Danken und Android/IOS können die APP in Pausen sauber in den Hintergrund schicken wenn es sein soll
- wenn Messgerät gefunden, dann Connect&DiscoverServices
- wenn verbunden "NotifyEnable" auf das was interessiert
- bis jetzt was kommt, kann es 10sec dauern, weil das ist die Zeit die das Messgerät der APP für obige 2 Schritte gibt
- wenn alle Daten da oder ~15sec TimeOut, dann "NotifyDisable" aus alles war angefordert wurde und dann vollen "Disconnect"
- !!! alles was mit den Scanresults und Connect/Services zu tun hat verwerfen !!!
- noch 1sec-Pause und dann die Statemaschiene der APP auf Anfang zurücksetzen... jetzt kann APP sich beenden, schlafen und/oder neu starten
- denn der Ablauf beginnt nun deterministisch wie immer wieder mit "RasterScan"...
  Mit Zitat antworten Zitat
knaeuel

Registriert seit: 2. Jul 2007
110 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: BluetoothLE-Subscription über App-Neustart hinaus aktiv halten

  Alt 31. Jan 2018, 10:17
hallo mensch72,

danke für die Antwort! ich habe gehofft, dass du antwortest und möchte dich nun ganz inoffiziell zum Bluetooth-Gott erklären!

einmal muss ich noch nachhaken:
wenn die App einfach durchläuft und das Messgerät während dieser Zeit zweimal gestartet wird (also aus Sicht des Messgeräts Start-Messung-Datentransfer-Abschalten und nochmal Start-Messung-...), dann empfängt die App ohne neuen Verbindungsaufbau beide Datentransfers.

Ist das eine echte Funktionalität oder doch eher Zufall? Oder anders gefragt, wenn es eine echte Funktionalität ist, warum würdest du dich darauf trotzdem nicht verlassen wollen?
Weil deine Empfehlung war ja, nach jedem gelungenen Transfer einen vollständigen Disconnect durchzuführen und wieder zum Scan-State zurückzufallen.

Danke nochmal!!
Wolfgang
  Mit Zitat antworten Zitat
knaeuel

Registriert seit: 2. Jul 2007
110 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: BluetoothLE-Subscription über App-Neustart hinaus aktiv halten

  Alt 1. Feb 2018, 13:32
möglicherweise hat sich das erledigt.
seit heute teste ich mit einem iPad und siehe da, ich muss auch nach jedem Neustart des Messgeräts neu verbinden, das Konfigurationsbyte schreiben und den Dienst neu abonnieren, sonst passiert da einfach gar nischt

nichtsdestotrotz: danke nochmal!
Wolfgang
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#5

AW: BluetoothLE-Subscription über App-Neustart hinaus aktiv halten

  Alt 2. Feb 2018, 21:51
mach so das IOS (auch)geht, dann is alles gut


ps:
du musst nicht "hoffen" das ich etwas zufällig lese und gerade ne Minute Zeit habe was zu tippen... es gibt auch PN, da kannst jederzeit direkt schreiben und fragen was du willst... auch wenn ich mal nicht (gleich/direkt)antworte beiße ich nicht, WorstCase bekommste aber auch mal nur emotionslos nen kommerzielles von Angebot von mir
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz