Aktionen
Fehler #129
geschlossen
JH
Ergometer während des Trainings abgezogen: App stürzt ab, keine automatische Wiederverbindung
Fehler #129:
Ergometer während des Trainings abgezogen: App stürzt ab, keine automatische Wiederverbindung
Beginn:
Abgabedatum:
% erledigt:
0%
Geschätzter Aufwand:
Gefunden in Version:
Beschreibung
Wird das Ergometer während eines Trainings abgezogen, stürzt die App ab.
Befund (Protokoll ErControl3-20261004.log, Kettler seriell)¶
- Der Poll-Tick (
HandlePollTick) ruftErgometer.SendAndReceive/Receiveauf dem UI-Thread auf. Nach dem Abziehen meldet der serielle Port „The port is closed“,KettlerErgometer.ReadLinewirftReceiveDataException. - Niemand fängt die Ausnahme: Sie läuft aus dem Dispatcher-Callback und wird als „Unbehandelte Ausnahme im UI-Thread“ (FTL) protokolliert, die App beendet sich. Eine Aufzeichnung wird nicht sauber abgeschlossen.
- Vermutlich kein neues Verhalten durch #127 (die Ausnahme entstand vorher genauso), aber erst durch den Test aufgefallen.
Gewünschtes Verhalten¶
- Ein Fehler beim Abfragen des Ergometers beendet die App nicht. Der Tick fängt ihn ab und protokolliert ihn (ohne Log-Flut bei jedem Tick).
- Solange keine Verbindung besteht, versucht die App in regelmäßigen Abständen (z.B. alle paar Sekunden) die Verbindung neu aufzubauen, ohne UI-Thread zu blockieren, und setzt das Training fort, sobald das Gerät wieder antwortet.
- Anzeige im Verbindungsverlust: statt eingefrorener Werte ein deutlich erkennbarer Hinweis, z.B. ein Momentanwert (etwa die Leistung) mit rotem Hintergrund und weißer Schrift.
- Währenddessen zählt die Trainingszeit nicht als Fahrzeit weiter bzw. es werden keine Trainingspunkte mit veralteten Werten aufgezeichnet (genaues Verhalten festlegen: Uhr pausieren wie im Stillstand).
BLE und ANT+¶
Ein Kabel gibt es dort nicht, der Verbindungsverlust (Gerät aus, außer Reichweite, Dongle abgezogen) tritt aber genauso auf, nur ohne Absturz: Beide liefern die Daten per Push, Receive()/SendAndReceive() geben nach dem Abbruch still weiter den zuletzt empfangenen Wert zurück. Die Uhr liefe weiter, und es würden Trainingspunkte mit eingefrorenen Werten aufgezeichnet. Erkennung deshalb über die Zeit seit dem letzten empfangenen Wert (mehr als 5 s Stille gilt als Verlust).
Umsetzung¶
IErgometer.DataAge(Standard null): Zeit seit dem letzten empfangenen Wert. BLE (Indoor-Bike-Data-Notification) und ANT+ (FE-C-Telemetrie) setzen den Zeitstempel; das serielle Gerät braucht ihn nicht, dort meldet der Verlust eineReceiveDataException.KettlerErgometerbleibt unverändert.- Poll-Tick fängt
ReceiveDataExceptionab (kein Absturz) und wertetDataAgeaus; beides setzt den Zustand „Verbindung verloren“ (ErgometerConnectionLost). ErgometerReconnectorversucht im Hintergrund wiederholt (alle 2 s), die Verbindung aufzubauen, über die vorhandenen Schnittstellen: seriellEstablishConnection(Port des aktiven Geräts, 57600/9600 Baud), BLEEstablishConnectionAsync(bekannte Adresse bzw. Suche). ANT+ braucht keinen eigenen Aufbau, der AntInterface-Prozess pairt den Kanal selbst; der Wiederbezug zeigt sich an frischen Daten. Während des Wiederverbindens wird das Gerät nicht abgefragt.- Solange die Verbindung fehlt, steht die Trainingsuhr, es wird nichts aufgezeichnet; die Ausfallzeit zählt weder als Fahrzeit noch für die Distanz (Uhr-Basis wird beim Wiederkehren neu gesetzt). Das Training läuft danach ohne Zeitsprung weiter.
- Anzeige: Die Leistungskachel (Momentanwert) erscheint mit rotem Hintergrund und weißer Schrift.
- Beim Schließen des Trainingsfensters wird ein laufendes Wiederverbinden zuerst abgebrochen.
Offen¶
- Test nur mit echter Hardware sinnvoll: Kabel im Training ziehen und wieder anstecken (seriell), BLE-Gerät aus-/einschalten, ANT+-Dongle abziehen.
- Nicht geprüft: ob ein abgezogener ANT+-Dongle vom AntInterface-Prozess selbstständig wieder aufgenommen wird. Der Prozess wird nicht neu gestartet; bleibt er tot, bleibt die Anzeige rot, bis das Training beendet wird.
- Die serielle Verbindungslogik in
KettlerErgometerist seit Jahren an echter Hardware eingestellt und bleibt unverändert.
JH Von Julius Haman vor 9 Tagen aktualisiert
- Zielversion wurde auf ErControl 3.1.4 gesetzt
JH Von Julius Haman vor 9 Tagen aktualisiert
- Beschreibung aktualisiert (Vergleich)
Ergänzt: BLE-/ANT+-Fälle (Erkennung über die Zeit seit dem letzten Wert) und Umsetzung (Wiederverbinden im Hintergrund, rote Leistungskachel, Uhr pausiert).
JH Von Julius Haman vor 9 Tagen aktualisiert
- Status wurde von Neu zu Erledigt geändert
Aktionen