Files
appRobotControlScara/test/helpers/TestFluidNCClient.js
2026-04-22 13:47:51 +02:00

69 lines
1.4 KiB
JavaScript

const WebSocket = require("ws");
const EventEmitter = require("events");
class TestFluidNCClient extends EventEmitter {
constructor(cfg) {
super();
this.host = cfg.host;
this.port = cfg.port || 81;
this.ws = null;
this.connect();
}
connect() {
const url = `ws://${this.host}:${this.port}`;
this.ws = new WebSocket(url);
this.ws.on("open", () => {
console.log("[TestFluidNC] Connected (WS)");
});
this.ws.on("message", (msg) => {
this.emit("message", msg.toString());
});
this.ws.on("close", () => {
console.log("[TestFluidNC] Disconnected");
});
this.ws.on("error", (err) => {
console.log("[TestFluidNC] WS Error:", err.message);
});
}
sendLine(cmd) {
if (this.ws && this.ws.readyState === WebSocket.OPEN) {
this.ws.send(cmd + "\n");
}
}
requestStatus() {
this.sendLine("?");
}
jog(relative, axis, value) {
const cmd = relative? `$J=G91 G1 ${axis}${value} F2000\r\n`: `$J=G90 G1 ${axis}${value} F2000\r\n`;
this.sendLine(cmd);
}
sendGcode(cmd) {
this.sendLine(cmd);
}
onMessage(fn) {
this.on("message", fn);
}
close() {
if (this.ws) {
this.ws.close();
this.ws = null;
}
}
}
module.exports = TestFluidNCClient;