按规划持续工作
结论:浏览器 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:
@@ -360,6 +360,26 @@ TOOL_TABLE = browser-tool.tbl
|
||||
"UI canonical event count",
|
||||
);
|
||||
|
||||
uiDocument.getElementById("run-fiveaxis-remap").click();
|
||||
await waitFor(
|
||||
() => uiDocument.getElementById("log")?.textContent.includes("Ran LinuxCNC 5-axis"),
|
||||
"5-axis remap run",
|
||||
);
|
||||
assertEqual(
|
||||
uiDocument.getElementById("field-fiveaxis-remap").textContent,
|
||||
"ok",
|
||||
"UI 5-axis remap status",
|
||||
);
|
||||
const remapLog = uiDocument.getElementById("log").textContent;
|
||||
if (
|
||||
!remapLog.includes("fiveaxis_ini_open=1") ||
|
||||
!remapLog.includes("fiveaxis_file_read_count=620") ||
|
||||
!remapLog.includes("fiveaxis_hal_switchkins: rc=0 found=1 value=0") ||
|
||||
!remapLog.includes("fiveaxis_linuxcnc_remap_file_execute=1")
|
||||
) {
|
||||
throw new Error(`UI 5-axis remap run missing LinuxCNC result: ${remapLog}`);
|
||||
}
|
||||
|
||||
status.textContent = "browser_ini_opfs_smoke=ok";
|
||||
} catch (error) {
|
||||
status.textContent = `browser_ini_opfs_smoke=fail ${error.stack || error.message}`;
|
||||
|
||||
@@ -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"),
|
||||
|
||||
Reference in New Issue
Block a user