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.