3.0 KiB
ToDo 8 — Bekannte Bugs
Ziel
Konkrete, im Code identifizierte Fehler beheben — unabhängig von den Architektur-Refactorings in den anderen ToDo-Dateien.
Bug 1: TelnetSenderGRBL — close-Event verliert this-Kontext
Datei: robot/TelnetSenderGRBL.js, Zeile 54–57
Problem: Das close-Event verwendet eine reguläre function() statt einer Arrow Function. Dadurch zeigt this innerhalb des Handlers auf das EventEmitter-Objekt, nicht auf die TelnetSenderGRBL-Instanz. this.tSocket = null hat keinen Effekt — nach einer Verbindungstrennung bleibt tSocket auf dem alten, ungültigen Objekt.
// Falsch:
this.tSocket.on("close", function () {
this.tSocket = null; // 'this' ist hier NICHT TelnetSenderGRBL
});
// Richtig:
this.tSocket.on("close", () => {
this.tSocket = null;
});
Bug 2: FFirst und FLast sind nicht implementiert
Datei: robot/GCode.js
Problem: ContainsFilesCommand() erkennt FFirst und FLast und leitet sie an receiveFC() weiter. receiveFC() behandelt sie aber nicht — die Befehle werden stillschweigend ignoriert und es wird nur getM114 zurückgegeben.
Erwartetes Verhalten:
FFirst— Cursor auf den ersten Eintrag der Log-Datei setzen und die Position anfahrenFLast— Cursor auf den letzten Eintrag setzen und die Position anfahren
Bug 3: G92/M92-Mismatch
Datei: robot/GCode.js
Problem: containsCommand() erkennt G92, aber receiveGCode() prüft auf g[0] == "M92". Ein eingehender Befehl G92 X10 wird als G-Code erkannt, fällt dann aber durch alle Bedingungen in receiveGCode(), und löst unbeabsichtigt calculateAngles3D() + sendCommand() aus, ohne die Position zu setzen.
Klärungsbedarf: Ist G92 oder M92 der korrekte Eingabe-Befehl? Beides konsistent machen.
Bug 4: logs/-Verzeichnis wird nicht sichergestellt
Datei: server/InputWS.js, Zeilen 66–67 und 77–78
Problem: fs.appendFileSync('./logs/gcode_commands.log', ...) und fs.appendFileSync('./logs/pings.log', ...) crashen beim ersten Aufruf, wenn das logs/-Verzeichnis nicht existiert.
Fix: Beim Start fs.mkdirSync('./logs', { recursive: true }) aufrufen, z. B. in startRobot.js oder am Anfang von initInputWS.
Bug 5: Falscher Finitude-Check in TelnetSenderGRBL.execCommand
Datei: robot/TelnetSenderGRBL.js, Zeile 161
Problem:
if(this.aAxisGrbl == "x" && mNew.xMotorChanged && Number.isFinite(mNew.y)){
Der Check prüft mNew.y statt mNew.x. Wenn mNew.x NaN oder Infinity wäre, würde das trotzdem durchgehen.
Bug 6: containsMCode matcht zu breit
Datei: robot/GCode.js, Zeile 12
Problem: s.indexOf('M1') == 0 trifft auch auf M10, M11, M12 usw. zu.
// Aktuell:
static containsMCode(s){ return s.indexOf('M1') == 0 }
// Präziser:
static containsMCode(s){ return s === 'M1' || s.startsWith('M1 ') }
Hinweis: Diese Methode wird im aktuellen Code nicht aufgerufen — sie hat keine Wirkung, ist aber irreführend.