AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung FMX BLE Problem mit automatischem Reconnect nach Verbindungsunterbrechung
Thema durchsuchen
Ansicht
Themen-Optionen

FMX BLE Problem mit automatischem Reconnect nach Verbindungsunterbrechung

Ein Thema von Rapunzel · begonnen am 28. Jan 2022 · letzter Beitrag vom 5. Feb 2022
Antwort Antwort
Rollo62

Registriert seit: 15. Mär 2007
4.240 Beiträge
 
Delphi 12 Athens
 
#1

AW: FMX BLE Problem mit automatischem Reconnect nach Verbindungsunterbrechung

  Alt 4. Feb 2022, 18:02
Kann es sein dass Du die Daten im OnReadCharacteristics direkt verarbeitest ?
Diese kommen womöglich aus ständig wechselnden Kontexten und Threads, und müssen mit Vorsicht behandelt werden.
Ich lade die im OnReadCharacteristics nur in einen thread-sicheren RingBuffer, möglichst ohne viel Overhead,
und lese diesen dann regelmäßig in einem kontrolliertem Thread zur Verarbeitung der Daten wieder aus.
  Mit Zitat antworten Zitat
Rapunzel

Registriert seit: 1. Mär 2019
48 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: FMX BLE Problem mit automatischem Reconnect nach Verbindungsunterbrechung

  Alt 5. Feb 2022, 13:10
Vielen Danke für Deinen Denkanstoß.

Ich betrachte in CharacteristicRead nur den Pakettyp und prüfe die Checksumme. Dann werden die Pakete je nach Typ in zwei verschiedene Bffer kopiert. Zum Benachrichtigen der App nutze ich den MessageManager. Bisher habe ich dazu z.B. folgenden Code verwendet:

Delphi-Quellcode:
    TThread.Queue(nil,procedure
        begin
          FMsgManager.SendMessage(Self,TBLEConnectionStatus.Create);
        end);
Das hatte beim Firmware Update zur Folge, wenn CharacteristicRead im Kontext des MainThread aufgerufen wurde und es richtig verstanden habe, dass das nächste Datenpaket direkt ohne Umweg aus CharacteristicRead gesendet wurde.

Das habe ich jetzt entkoppelt:
Delphi-Quellcode:
    TThread.ForceQueue(nil,procedure
        begin
          FMsgManager.SendMessage(Self,TBLEConnectionStatus.Create);
        end);
Und siehe da, es sind jetzt schon viele 1000 Datenpakete durch die Luft geflogen und ohne Fehler beantwortet worden.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.240 Beiträge
 
Delphi 12 Athens
 
#3

AW: FMX BLE Problem mit automatischem Reconnect nach Verbindungsunterbrechung

  Alt 5. Feb 2022, 13:55
Ja ForceQueue verleiht Flüüüügel (nicht immer, aber immer öfter)
  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:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz