Aktionen
Fehler #176
geschlossen
JH
Serielles Ergometer: unlesbare Antworten werden still verworfen
Fehler #176:
Serielles Ergometer: unlesbare Antworten werden still verworfen
Beginn:
24.10.2026
Abgabedatum:
% erledigt:
100%
Geschätzter Aufwand:
Gefunden in Version:
Beschreibung
Anlass¶
Forum: Kettler Racer 9 über COM-Port, die Schaltung am Racer "friert" nach etwa drei Schaltvorgängen ein (in ErControl 2.5 funktionierte sie).
Ursachen (Vermutungen, noch ohne Log des Benutzers)¶
- Liefert das Ergometer eine Zeile mit anderer Spaltenzahl, ergibt
KettlerErgometer.ConvertReceiveStringnullund der Poll-Tick endet ohne Meldung (HandlePollTickAsync). 2.5 hätte dabei eine Exception geworfen. EinFormatException/OverflowExceptionbei Nicht-Zahlen wurde gar nicht abgefangen. - In 3 führt schon ein einzelner Lese-Timeout (
ReceiveDataException) zu "Verbindung verloren" und damit zu Reconnect (Port schließen, öffnen,CM, Baudraten durchprobieren; währenddessen werden alle Ticks übersprungen). 2.5 hat den Tick nur abgebrochen; der nächste Tick hatte dann einen Jitter > 1000 ms und wurde als "x Timer Events verpasst" ausgeglichen (TrainingControl.M_cTimer_Elapsed), ohne Port-Neustart und ohneCM. Ein Rechner/Trainer, der mit dem 1-s-Takt gelegentlich oder regelmäßig Probleme hat, landet in 3 in einer Reconnect-Schleife. Wie das Racer auf das erneuteCMreagiert, ist unbekannt.
Hinweis: Die Antwortzeit "300-400 ms" im Code-Kommentar (HandlePollTickAsync) stammt von einem anderen Gerät; für das Racer 9 gibt es keine Messwerte.
Änderung¶
- Unlesbare Antwort bei bestehender Verbindung: Warnung mit gesendetem Befehl und kompletter Rohantwort (höchstens alle 30 s, mit Zähler der unterdrückten Meldungen).
FormatException/OverflowExceptionführen dann ebenfalls zunull(Tick wird übersprungen) statt zu einer unbehandelten Exception. Beim Verbindungsaufbau (Erkennung ST/DB) bleibt es unverändert. - Dauer jedes seriellen Austauschs ins Debug-Log (Erweiterte Protokollierung für serielle Schnittstelle); ein Timeout bei bestehender Verbindung wird mit der Wartezeit als Warnung geloggt.
- Einzelne Lese-Timeouts zählen wie in 2.5 als verpasster Tick: Warnung im Log, neuer Versuch im nächsten Takt. Zum Reconnect kommt es erst, wenn seit 5 s (wie
DataStaleAfterbei BLE/ANT+) keine gültigen Daten mehr kamen. #129 (Kabel gezogen, Gerät aus) bleibt damit erhalten.
Offen¶
Ursache des Einfrierens selbst; hängt vom Log des Benutzers ab. Ob 5 s die richtige Schwelle sind, zeigen die Antwortzeiten aus dessen Log.
JH Von Julius Haman vor 8 Tagen aktualisiert
- Beschreibung aktualisiert (Vergleich)
JH Von Julius Haman vor 8 Tagen aktualisiert
Überlegungen zum Takt (noch nicht umgesetzt)¶
- Der Poll ist bereits halb adaptiv: Der nächste Tick startet erst nach Ende des vorigen, Mindestabstand 500 ms (
MinPollDelayMs); die Zeit läuft über die Wanduhr. 2.5 regelte den Takt nur zwischen 900 und 1100 ms. - Mögliche Stufen, falls die Messwerte es nötig machen: (1) adaptiver Lese-Timeout (z. B. 1 s → 2 s nach wiederholten Timeouts), (2) größere
MinPollDelayMs, (3) erst zuletzt ein echtes größeres Intervall. Jeweils mit Logzeile beim Umschalten. - Ein größeres Intervall betrifft Pulsregelung, Gangautomatik, Geschwindigkeitsträgheit und Gangleistungs-Rampe (auf ca. 1 s ausgelegt) sowie die Auflösung der Trainingspunkte; vorher prüfen.
- Entscheidung erst nach den Antwortzeiten aus dem Debug-Log des Benutzers.
JH Von Julius Haman vor 8 Tagen aktualisiert
- Status wurde von Neu zu In Bearbeitung geändert
- Zugewiesen an wurde auf Julius Haman gesetzt
- Zielversion wurde auf ErControl 3.1.11 gesetzt
JH Von Julius Haman vor 8 Tagen aktualisiert
- % erledigt wurde von 0 zu 70 geändert
JH Von Julius Haman vor 7 Tagen aktualisiert
- Status wurde von In Bearbeitung zu Erledigt geändert
- Zugewiesen an
Julius Hamanwurde gelöscht - % erledigt wurde von 70 zu 100 geändert
Aktionen