Fileservice

This commit is contained in:
chk
2026-06-14 11:18:46 +02:00
parent 319fae944a
commit a807732b58
16 changed files with 822 additions and 678 deletions

View File

@@ -1,6 +1,7 @@
// server/InputWS.js
const fs = require('fs');
const WebSocket = require('ws');
const FCodeClient = require('../robot/FCodeClient');
const LOG_DIR = './logs';
@@ -70,18 +71,24 @@ function initInputWS(server, robot, GCode, sharedState) {
return;
}
/* ---------- File commands → broadcast result ----------
* Behaviour kept as-is on purpose: file/log management (and finer-grained
* targeting, e.g. FShow as a requester-only reply) is owned by ToDo 4. */
if (GCode.ContainsFilesCommand(message)) {
/* ---------- FCode (Datei-Befehle) → weiterleiten an appRobotFileservice ----------
* Der Driver ist Gateway: die Steuerungen kennen nur ihn.
* Stepping-Befehle (FPlus/FMinus/…) liefern eine driver-native GCode-Zeile
* (Radian) zurück, die der Driver direkt ausführt und dann broadcastet. */
if (FCodeClient.isFCode(message)) {
logCommand(sharedState, clientIP, message);
let result;
try {
result = GCode.receiveFC(robot, message);
} catch (err) {
return sendError(ws, 'FILE_ERROR', err.message, message);
}
if (result !== undefined) broadcast(wss, result);
FCodeClient.handle(robot, message)
.then(result => {
if (result.type === 'step' && result.line) {
try { GCode.receiveGCode(robot, result.line); } catch (err) {
return sendError(ws, 'GCODE_ERROR', err.message, result.line);
}
broadcast(wss, GCode.getM114(robot));
} else if (result.data) {
broadcast(wss, result.data);
}
})
.catch(err => sendError(ws, 'FILE_ERROR', err.message, message));
return;
}