Fehler #162
geschlossenLeistung am ANT+ Trainer wird nicht gesteuert
90%
Beschreibung
Problem¶
Bei einem ANT+ FE-C-Trainer wird die Leistung nicht geregelt. Die Soll-Leistung steht in der Anzeige (z. B. 210 W), die Ist-Leistung folgt ihr nicht (46 W bei 54 rpm). Rückmeldung eines Testers (Wox, ErControl 3.1.7), Screenshots und Logs liegen vor.
Ursache¶
Die Befehle an die AntInterface kommen dort nie an. Im AntInterface-Log steht keine einzige Zeile "Ziel-Leistung ... gesendet", obwohl der Modus über Minuten "Zielleistung wird vorgegeben" war. Telemetrie und Puls kommen dagegen an, weil sie über eine zweite, getrennte Pipe laufen.
Die Steuer-Pipe zwischen ErControl und AntInterface wird synchron geöffnet. Der ReadLoop-Thread hängt dauerhaft im Lesen dieser Pipe, und Windows blockiert währenddessen jeden Schreibzugriff auf demselben synchronen Handle. Die Nachrichten (Ziel-Leistung, Power-Broadcast-Werte) bleiben liegen. Der Rückstau wurde in einer früheren Änderung nur auf 8 wartende Nachrichten begrenzt, danach werden sie verworfen. Das Problem betrifft damit auch die Weitergabe der Leistung per ANT+-Broadcast.
Nicht betroffen: Bluetooth (FTMS und Tacx FE-C over BLE) und der serielle Kettler, sie laufen nicht über diese Pipe.
Lösung¶
Der Client der Steuer-Pipe wird asynchron (overlapped) geöffnet, damit Lesen und Schreiben gleichzeitig möglich sind. Dazu ein Test, der das Blockieren mit einem synchronen Client reproduziert.
Prüfen¶
- Im AntInterface-Log erscheinen Zeilen wie "Kanal 1 (FE-C): Ziel-Leistung 210 W gesendet -> Pass".
- Die Ist-Leistung folgt der Soll-Leistung (Gangschaltung an bzw. Leistungsprofil).
- Der Power-Broadcast an eine Uhr oder einen Radcomputer liefert Werte.