按规划继续工作

结论:OPFS 参数文件已通过桥接进入 LinuxCNC-backed WASM restore/save 路径,native 与 host/WASM/browser 验证全部通过。
This commit is contained in:
2026-06-08 07:42:50 +08:00
parent 16585690ca
commit 5ea07606d7
6 changed files with 211 additions and 12 deletions

View File

@@ -8,6 +8,14 @@
<pre id="status">running</pre>
<script type="module">
import { createLinuxCncInterpSdk } from "../../runtime/sdk/src/index.js";
import {
restoreMachineParametersFromOpfs,
saveMachineParametersToOpfs,
} from "../../runtime/opfs/linuxcnc-parameter-bridge.js";
import {
loadMachineTextFiles,
saveMachineTextFiles,
} from "../../runtime/opfs/machine-file-store.js";
import {
INTERP_BROWSER_FILE_FIXTURES,
INTERP_BROWSER_MDI_FIXTURES,
@@ -108,6 +116,71 @@
(await fetchText(`../fixtures/canon/${INTERP_INI_FIXTURE}.events`)).trimEnd(),
);
await saveMachineTextFiles("browser-interp", {
ini: "[EMC]\nMACHINE = browser-interp\n",
toolTable: "T0 P0 ; no tool\n",
parameters: [
"5161 10.5",
"5162 20.25",
"5220 1",
"5221 2.25",
"5399 44",
"<_named_param> 123",
"",
].join("\n"),
});
const restoredParameters = await restoreMachineParametersFromOpfs(
interp,
"browser-interp",
{ wasmPath: "/work/browser-linuxcnc.var" },
);
verifyExpectedOutput(
"opfs_restore_parameters",
restoredParameters.result,
[
"restore_parameters=0",
"parameter_5161=10.5",
"parameter_5162=20.25",
"parameter_5221=2.25",
"parameter_5399=44",
].join("\n"),
);
const savedParameters = await saveMachineParametersToOpfs(
interp,
"browser-interp",
{
5161: 12.34,
5162: 56.78,
5220: 1.0,
5221: 9.87,
5399: 66.6,
},
{ wasmPath: "/work/browser-linuxcnc.var" },
);
verifyExpectedOutput(
"opfs_save_parameters",
savedParameters.result,
[
"save_parameters=0",
"parameter_5161=12.34",
"parameter_5162=56.78",
"parameter_5221=9.87",
"parameter_5399=66.6",
].join("\n"),
);
const machineFiles = await loadMachineTextFiles("browser-interp");
verifyExpectedOutput(
"opfs_saved_parameter_text",
machineFiles.parameters,
[
"5161\t12.340000",
"5162\t56.780000",
"5221\t9.870000",
"5399\t66.600000",
"absent=<_named_param>",
].join("\n"),
);
status.textContent = "browser_interp_smoke=ok";
} catch (error) {
status.textContent = `browser_interp_smoke=fail ${error.stack || error.message}`;