接入 LinuxCNC TP 运行反馈

This commit is contained in:
2026-06-21 23:29:56 +08:00
parent 626bcfe8e3
commit 3771b9eafe
44 changed files with 7881 additions and 326 deletions

View File

@@ -0,0 +1,57 @@
import assert from "node:assert/strict";
import { readFile } from "node:fs/promises";
import {
applyIniConfigToProfile,
parseLinuxCncIni,
} from "../../app/src/runtime/linuxcnc-ini-runtime.js";
import { xyzacTrtProfile } from "../../app/src/profiles/xyzac-trt.js";
import { xyzbcTrtProfile } from "../../app/src/profiles/xyzbc-trt.js";
const xyzacIniText = await readFile(
new URL("../../../wasm-port/vendor/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini", import.meta.url),
"utf8",
);
const xyzbcIniText = await readFile(
new URL("../../../wasm-port/vendor/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini", import.meta.url),
"utf8",
);
const xyzacIni = parseLinuxCncIni(xyzacIniText, {
path: xyzacTrtProfile.iniPath,
profileId: xyzacTrtProfile.id,
});
assert.equal(xyzacIni.apiName, "web-rtcp-5axis-linuxcnc-ini-config");
assert.equal(xyzacIni.validation.ready, true);
assert.equal(xyzacIni.machineName, "sim-xyzac-trt-kins (switchkins)");
assert.equal(xyzacIni.kinematics.name, "xyzac-trt-kins");
assert.equal(xyzacIni.kinematicsParameters.sparm, "identityfirst");
assert.equal(xyzacIni.kinematicsParameters.joints, 5);
assert.equal(xyzacIni.traj.coordinates, "XYZAC");
assert.equal(xyzacIni.axisLimits.A.max, 50);
assert.equal(xyzacIni.jointConfig[3].axis, "A");
assert.equal(xyzacIni.jointConfig[4].max, 36000);
assert.deepEqual(xyzacIni.halui.mdiCommands, ["M429", "M428", "M430"]);
assert.equal(xyzacIni.rs274ngc.remaps.map((remap) => remap.code).join(","), "M428,M429,M430");
assert.equal(xyzacIni.hal.initialSets.some((set) => set.pin === "y-offset" && set.value === 20), true);
const derivedXyzac = applyIniConfigToProfile(xyzacTrtProfile, xyzacIni);
assert.equal(derivedXyzac.machineName, xyzacIni.machineName);
assert.equal(derivedXyzac.traj.coordinates, "XYZAC");
assert.equal(derivedXyzac.axisLimits.X.min, -200);
assert.equal(derivedXyzac.jointConfig.length, 5);
assert.equal(derivedXyzac.linuxCncIniConfig.path.endsWith("xyzac-trt.ini"), true);
const xyzbcIni = parseLinuxCncIni(xyzbcIniText, {
path: xyzbcTrtProfile.iniPath,
profileId: xyzbcTrtProfile.id,
});
assert.equal(xyzbcIni.validation.ready, true);
assert.equal(xyzbcIni.kinematics.name, "xyzbc-trt-kins");
assert.equal(xyzbcIni.kinematicsModuleId, "xyzbc-trt");
assert.equal(xyzbcIni.traj.coordinates, "XYZBC");
assert.equal(xyzbcIni.axisLimits.B.max, 36000);
assert.equal(xyzbcIni.jointConfig[3].axis, "B");
assert.equal(xyzbcIni.kinematicsParameters.switchkinsTypes[1].webKinsType, "tcp-xyzbc");
console.log("linuxcnc_ini_runtime_smoke=ok");