Projekt

Allgemein

Profil

Aktionen

Fehler #176

geschlossen
JH

Serielles Ergometer: unlesbare Antworten werden still verworfen

Fehler #176: Serielles Ergometer: unlesbare Antworten werden still verworfen

Von Julius Haman vor 8 Tagen hinzugefügt. Vor 7 Tagen aktualisiert.

Status:
Erledigt
Priorität:
Normal
Zugewiesen an:
-
Zielversion:
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)

  1. Liefert das Ergometer eine Zeile mit anderer Spaltenzahl, ergibt KettlerErgometer.ConvertReceiveString null und der Poll-Tick endet ohne Meldung (HandlePollTickAsync). 2.5 hätte dabei eine Exception geworfen. Ein FormatException/OverflowException bei Nicht-Zahlen wurde gar nicht abgefangen.
  2. 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 ohne CM. 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 erneute CM reagiert, 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/OverflowException führen dann ebenfalls zu null (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 DataStaleAfter bei 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.

Aktionen

Auch abrufbar als: PDF Atom