Fehler #130
geschlossenPulsmesser verliert während des Trainings die Verbindung: Verlust wird nicht erkannt, Puls friert ein
0%
Beschreibung
Verliert ein Pulsmesser während des Trainings die Verbindung, wird das nicht erkannt und nicht gemeldet. Folgeticket zu #129 (Ergometer).
Befund (Code gelesen, nicht an Hardware geprüft)¶
- BLE-Pulsmesser (
BlePulsmesser): Die Klasse kenntIsAlive(maxAge)und erkennt damit auch einen Pulsmesser, der einfach aufhört zu senden. Das Training wertet das aber nicht aus. Meldet Windows die Verbindung formal als getrennt, setztCloseConnectionden Puls auf null; dann gilt stillschweigend der Puls des Ergometers (sourcePulse is nullinDataSender_SendingData), ohne Hinweis. Das Log zeigt vor dem Training ein Retry im Sekundentakt; ob ein Verlust mitten im Training neu verbunden wird, ist ungeprüft. - ANT+-Pulsmesser (HRM):
antHrmPulsewird bei jeder Telemetrie überschrieben, es gibt keinen Zeitstempel. Bleibt der Gurt weg, bleibt der letzte Wert stehen (eingefrorener Puls) - derselbe Fehlertyp wie bei BLE-Ergometer und ANT+ FE-C vor #129.
Auswirkung¶
Ein stehender oder stillschweigend ersetzter Puls fließt in Pulsanzeige, Pulsprofil-Regelung (die Leistung wird dann nach einem falschen Puls geregelt), Erholungspuls und die aufgezeichneten Trainingspunkte ein.
Lösungsansatz (noch nicht umgesetzt)¶
- Der Puls bekommt ein Alter (analog
IErgometer.DataAgeaus #129): Ist der letzte Wert älter als einige Sekunden, gilt der Pulsmesser als verloren. - Im Verlustfall den Pulsmesser neu verbinden (BLE im Hintergrund wie
ErgometerReconnector; ANT+ pairt der AntInterface-Prozess selbst). - Anzeige: Pulskachel bei Verlust deutlich hervorgehoben (z.B. wie bei der Leistung roter Hintergrund, weiße Zahl und Einheit, Überschrift unverändert).
- Festlegen, was währenddessen aufgezeichnet wird (kein Puls bzw. 0 statt eingefrorenem Wert, kein stiller Rückfall auf den Ergometer-Puls ohne Hinweis) und wie sich die Pulsprofil-Regelung ohne Pulsmesser verhält (z.B. Leistung halten statt nachregeln).
Erholungspulsmessung¶
Auch die Erholungspulsmessung (Fitnessnote) muss prüfen, ob noch Werte ankommen. Heute liest der Dialog (RecoveryPulseWindowViewModel) bei jedem Tick data.Pulse; fällt die Pulsquelle weg, sieht er einen stehenden bzw. auf den Ergometer-Puls (meist 0) zurückgefallenen Wert und misst weiter, ohne dass es auffällt. Beobachtet an einem 30-Minuten-Training mit BLE-Pulsmesser (Garmin Instinct 2X Solar): Der Dialog erschien, zeigte aber offenbar keinen Puls, die Messung wurde nach etwa 43 s abgebrochen, es wurde kein Erholungspuls gespeichert. Die Ursache ist nicht belegt (der Puls kam bis zum letzten Trainingspunkt an, das Log enthält nichts dazu).
- Bleiben während der Messung die Pulswerte aus (gleiche Erkennung wie im Training: Alter des letzten Werts), wird der Pulswert im Dialog rot markiert (rote Fläche, weiße Schrift, Überschrift unverändert).
- Die Messuhr (60 s) stoppt, solange kein Puls ankommt, und läuft erst bei wiederkehrenden Werten weiter, damit keine Messung mit fehlenden bzw. falschen Werten abgeschlossen wird.
- Kein automatischer Abbruch, auch nicht bei sehr langem Ausfall: Der Dialog bleibt rot und die Uhr steht, bis wieder Werte kommen; abgebrochen wird nur über den Abbrechen-Button.
- Zur Klärung künftiger Fälle: Das Log protokolliert jeden Wechsel der Pulsquelle (BLE-/ANT+-Pulsmesser zu Ergometer-Puls und zurück) mit Zeitpunkt.
Umsetzung¶
- Gilt nur für einen beim Start tatsächlich verbundenen externen Pulsmesser (BLE oder ANT+). Kommt der Puls vom Ergometer, gibt es weder Verlusterkennung noch Neuverbinden: die Verbindung zum Ergometer besteht ja.
- Verlust: keine Werte seit mehr als 5 s (BLE:
BlePulsmesser.DataAge, ANT+: Zeitstempel des letzten Pulses). Dann istErgometerData.PulseLostgesetzt und der Puls 0, kein eingefrorener Wert und kein stiller Rückfall auf den Ergometer-Puls. Die Trainingspunkte erhalten Puls 0. - BLE-Pulsmesser wird im Hintergrund neu verbunden (
EstablishConnectionWithRetryAsync), frühestens alle 10 s erneut; der Versuch läuft auch während der Erholungspulsmessung, da er beim Training liegt. ANT+ pairt der AntInterface-Prozess selbst. Beim Schließen wird ein laufender Versuch abgebrochen. - Pulsprofil: Bei verlorenem Puls wird nicht nachgeregelt, die zuletzt gesendete Leistung bleibt (auch im Simulator).
- Anzeige: Zahl und Einheit des Pulses mit rotem Hintergrund und weißer Schrift, Überschrift und Sollpuls unverändert.
- Erholungspulsmessung: Pulswert rot, die Messuhr (60 s) steht, solange keine Werte kommen, es wird nichts aufgezeichnet, kein automatischer Abbruch (nur per Button); bei wiederkehrenden Werten läuft sie weiter.
- Log: jeder Wechsel „Pulsmesser liefert keine Werte mehr“ und „liefert wieder Werte“ mit Zeitpunkt.
Offen¶
- Test nur mit echter Hardware sinnvoll (Brustgurt/Uhr abnehmen bzw. Bluetooth abschalten).
- Verhalten der Uhr-Broadcasts (Garmin Instinct), die nach einiger Zeit einschlafen, berücksichtigen (siehe Kommentar in
BlePulsmesser.IsAlive).
JH Von Julius Haman vor 9 Tagen aktualisiert
- Beschreibung aktualisiert (Vergleich)
Ergänzt: Erholungspulsmessung (Pulsausfall erkennen, rot markieren, Messuhr stoppen) und Logging der Pulsquelle.
JH Von Julius Haman vor 9 Tagen aktualisiert
- Beschreibung aktualisiert (Vergleich)
Festgelegt: Erholungspulsmessung bricht bei Pulsausfall nicht automatisch ab, nur per Button.
JH Von Julius Haman vor 9 Tagen aktualisiert
- Beschreibung aktualisiert (Vergleich)
Umsetzung ergänzt (Verlusterkennung, Neuverbinden BLE, Pulsprofil hält Leistung, Anzeige, Erholungspulsmessung, Log).
JH Von Julius Haman vor 9 Tagen aktualisiert
- Status wurde von Neu zu Erledigt geändert