按规划持续工作
结论:WASM interpreter 已链接 vendored LinuxCNC interp_remap.cc,并通过 SDK C ABI 运行 vendored xyzac/xyzbc switchkins remap demo;Node/host/browser smoke 均通过,未新增 JavaScript M428/M429/M430 或运动学语义。
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { readFileSync } from "node:fs";
|
||||
import { readdirSync, readFileSync } from "node:fs";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { dirname, resolve } from "node:path";
|
||||
import assert from "node:assert/strict";
|
||||
@@ -88,6 +88,41 @@ const interp = await createLinuxCncInterpSdk({
|
||||
},
|
||||
});
|
||||
|
||||
function writeVendorTextFile(sourcePath, wasmPath) {
|
||||
interp.writeTextFile(wasmPath, readFileSync(sourcePath, "utf8"));
|
||||
}
|
||||
|
||||
function writeFiveAxisTrtMachineFiles() {
|
||||
const sourceDir = resolve(
|
||||
rootDir,
|
||||
"vendor/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting",
|
||||
);
|
||||
const wasmDir = "/work/fiveaxis/table-rotary-tilting";
|
||||
|
||||
writeVendorTextFile(resolve(sourceDir, "xyzac-trt.ini"), `${wasmDir}/xyzac-trt.ini`);
|
||||
writeVendorTextFile(resolve(sourceDir, "xyzbc-trt.ini"), `${wasmDir}/xyzbc-trt.ini`);
|
||||
|
||||
for (const filename of readdirSync(resolve(sourceDir, "remap_subs"))) {
|
||||
if (filename.endsWith(".ngc")) {
|
||||
writeVendorTextFile(
|
||||
resolve(sourceDir, "remap_subs", filename),
|
||||
`${wasmDir}/remap_subs/${filename}`,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
writeVendorTextFile(
|
||||
resolve(sourceDir, "demos/xyzac_switchkins.ngc"),
|
||||
`${wasmDir}/demos/xyzac_switchkins.ngc`,
|
||||
);
|
||||
writeVendorTextFile(
|
||||
resolve(sourceDir, "demos/xyzbc_switchkins.ngc"),
|
||||
`${wasmDir}/demos/xyzbc_switchkins.ngc`,
|
||||
);
|
||||
|
||||
return wasmDir;
|
||||
}
|
||||
|
||||
const namedParamIniPath = "/work/namedparams.ini";
|
||||
interp.writeTextFile(
|
||||
namedParamIniPath,
|
||||
@@ -303,6 +338,54 @@ verifyExpectedOutput(
|
||||
).trimEnd(),
|
||||
);
|
||||
|
||||
const fiveAxisTrtDir = writeFiveAxisTrtMachineFiles();
|
||||
verifyExpectedOutput(
|
||||
"fiveaxis_xyzac_switchkins_wasm",
|
||||
interp.runFiveAxisRemapFile(
|
||||
`${fiveAxisTrtDir}/demos/xyzac_switchkins.ngc`,
|
||||
`${fiveAxisTrtDir}/xyzac-trt.ini`,
|
||||
),
|
||||
[
|
||||
"fiveaxis_ini_open=1",
|
||||
"fiveaxis_parse_remap_1=0",
|
||||
"fiveaxis_parse_remap_2=0",
|
||||
"fiveaxis_parse_remap_3=0",
|
||||
"fiveaxis_parsed_remap_count=3",
|
||||
"fiveaxis_remaps_ready=1",
|
||||
"fiveaxis_file_open=0",
|
||||
"fiveaxis_file_read_count=620",
|
||||
"fiveaxis_file_execute_count=620",
|
||||
"fiveaxis_file_finish_count=21",
|
||||
"fiveaxis_file_final_rc=1",
|
||||
"fiveaxis_file_reached_exit=1",
|
||||
"fiveaxis_hal_switchkins: rc=0 found=1 value=0",
|
||||
"fiveaxis_linuxcnc_remap_file_execute=1",
|
||||
].join("\n"),
|
||||
);
|
||||
verifyExpectedOutput(
|
||||
"fiveaxis_xyzbc_switchkins_wasm",
|
||||
interp.runFiveAxisRemapFile(
|
||||
`${fiveAxisTrtDir}/demos/xyzbc_switchkins.ngc`,
|
||||
`${fiveAxisTrtDir}/xyzbc-trt.ini`,
|
||||
),
|
||||
[
|
||||
"fiveaxis_ini_open=1",
|
||||
"fiveaxis_parse_remap_1=0",
|
||||
"fiveaxis_parse_remap_2=0",
|
||||
"fiveaxis_parse_remap_3=0",
|
||||
"fiveaxis_parsed_remap_count=3",
|
||||
"fiveaxis_remaps_ready=1",
|
||||
"fiveaxis_file_open=0",
|
||||
"fiveaxis_file_read_count=620",
|
||||
"fiveaxis_file_execute_count=620",
|
||||
"fiveaxis_file_finish_count=21",
|
||||
"fiveaxis_file_final_rc=1",
|
||||
"fiveaxis_file_reached_exit=1",
|
||||
"fiveaxis_hal_switchkins: rc=0 found=1 value=0",
|
||||
"fiveaxis_linuxcnc_remap_file_execute=1",
|
||||
].join("\n"),
|
||||
);
|
||||
|
||||
const parameterFilePath = "/work/rs274ngc.var";
|
||||
interp.writeTextFile(
|
||||
parameterFilePath,
|
||||
|
||||
Reference in New Issue
Block a user