按规划持续工作

结论:浏览器 interpreter smoke 和 INI panel UI 已接入 vendored LinuxCNC 五轴 switchkins remap 执行路径,只复制 LinuxCNC sample machine 文件到 WASM FS 并调用 SDK C ABI;host 聚合 smoke 通过,未新增 JavaScript M428/M429/M430 或运动学语义。
This commit is contained in:
2026-06-08 18:12:27 +08:00
parent 149095274c
commit 7cdfc458f9
8 changed files with 211 additions and 13 deletions

View File

@@ -93,6 +93,50 @@
}
}
async function writeFetchedTextFile(interp, sourcePath, wasmPath) {
interp.writeTextFile(wasmPath, await fetchText(sourcePath));
}
async function writeFiveAxisTrtMachineFiles(interp) {
const sourceDir =
"../../vendor/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting";
const wasmDir = "/work/browser-fiveaxis/table-rotary-tilting";
const remapFiles = [
"428remap.ngc",
"429remap.ngc",
"430remap.ngc",
"centering.ngc",
"helix_ac.ngc",
"helix_bc.ngc",
"xyzac_switchkins_sub.ngc",
"xyzbc_switchkins_sub.ngc",
];
await writeFetchedTextFile(interp, `${sourceDir}/xyzac-trt.ini`, `${wasmDir}/xyzac-trt.ini`);
await writeFetchedTextFile(interp, `${sourceDir}/xyzbc-trt.ini`, `${wasmDir}/xyzbc-trt.ini`);
for (const filename of remapFiles) {
await writeFetchedTextFile(
interp,
`${sourceDir}/remap_subs/${filename}`,
`${wasmDir}/remap_subs/${filename}`,
);
}
await writeFetchedTextFile(
interp,
`${sourceDir}/demos/xyzac_switchkins.ngc`,
`${wasmDir}/demos/xyzac_switchkins.ngc`,
);
await writeFetchedTextFile(
interp,
`${sourceDir}/demos/xyzbc_switchkins.ngc`,
`${wasmDir}/demos/xyzbc_switchkins.ngc`,
);
return wasmDir;
}
async function verifyRejects(fixtureName, operation, expectedPattern) {
try {
await operation();
@@ -310,6 +354,48 @@
baselineIniExpectedText,
);
const fiveAxisTrtDir = await writeFiveAxisTrtMachineFiles(interp);
verifyExpectedOutput(
"browser_fiveaxis_xyzac_switchkins",
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_file_open=0",
"fiveaxis_file_read_count=620",
"fiveaxis_file_execute_count=620",
"fiveaxis_file_finish_count=21",
"fiveaxis_file_reached_exit=1",
"fiveaxis_hal_switchkins: rc=0 found=1 value=0",
"fiveaxis_linuxcnc_remap_file_execute=1",
].join("\n"),
);
verifyExpectedOutput(
"browser_fiveaxis_xyzbc_switchkins",
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_file_open=0",
"fiveaxis_file_read_count=620",
"fiveaxis_file_execute_count=620",
"fiveaxis_file_finish_count=21",
"fiveaxis_file_reached_exit=1",
"fiveaxis_hal_switchkins: rc=0 found=1 value=0",
"fiveaxis_linuxcnc_remap_file_execute=1",
].join("\n"),
);
verifyExpectedOutput(
"restore_parameters_missing_file",
interp.restoreParameters("/work/browser-missing.var"),