继续推进:浏览器批量验证LinuxCNC配置入口
结论:浏览器 WASM smoke 已读取 LinuxCNC 生成的 64 个 switchkins 配置用例,覆盖 config/MACHINE/KINEMATICS/HALFILE 入口;native 与 source-link 验证通过。
This commit is contained in:
66
web/public/linuxcnc_switchkins_remap_config_cases.json
Normal file
66
web/public/linuxcnc_switchkins_remap_config_cases.json
Normal file
@@ -0,0 +1,66 @@
|
||||
[
|
||||
{"field":"config","value":"configs/sim/axis/vismach/5axis/bridgemill/5axis.ini","m428":0,"m429":1,"m430":2},
|
||||
{"field":"machine","value":"Sim-5Axis Bridge Mill (xyzbcw)","m428":0,"m429":1,"m430":2},
|
||||
{"field":"kinematics","value":"5axiskins coordinates=xyzbcwy","m428":0,"m429":1,"m430":2},
|
||||
{"field":"halfile","value":"5axisgui.hal","m428":0,"m429":1,"m430":2},
|
||||
{"field":"halfile","value":"5axisgui","m428":0,"m429":1,"m430":2},
|
||||
{"field":"hal_file","value":"5axisgui.hal","m428":0,"m429":1,"m430":2},
|
||||
{"field":"hal_file","value":"5axisgui","m428":0,"m429":1,"m430":2},
|
||||
{"field":"config","value":"configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini","m428":1,"m429":0,"m430":-1},
|
||||
{"field":"machine","value":"sim-xyzab-tdr-kins (switchkins)","m428":1,"m429":0,"m430":-1},
|
||||
{"field":"kinematics","value":"xyzab_tdr_kins","m428":1,"m429":0,"m430":-1},
|
||||
{"field":"config","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini","m428":1,"m429":0,"m430":2},
|
||||
{"field":"machine","value":"sim-xyzac-trt-kins (switchkins)","m428":1,"m429":0,"m430":2},
|
||||
{"field":"kinematics","value":"xyzac-trt-kins sparm=identityfirst","m428":1,"m429":0,"m430":2},
|
||||
{"field":"config","value":"configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini","m428":1,"m429":0,"m430":2},
|
||||
{"field":"machine","value":"sim-xyzbc-trt-kins (switchkins)","m428":1,"m429":0,"m430":2},
|
||||
{"field":"kinematics","value":"xyzbc-trt-kins sparm=identityfirst","m428":1,"m429":0,"m430":2},
|
||||
{"field":"config","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzacb-trsrn_twp/xyzacb-trsrn.ini","m428":0,"m429":1,"m430":2},
|
||||
{"field":"machine","value":"xyzacb-trsrn (switchkins)","m428":0,"m429":1,"m430":2},
|
||||
{"field":"kinematics","value":"xyzacb_trsrn","m428":0,"m429":1,"m430":2},
|
||||
{"field":"config","value":"configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/xyzbca-trsrn_twp/xyzbca-trsrn.ini","m428":0,"m429":1,"m430":2},
|
||||
{"field":"machine","value":"xyzbca-trsrn (switchkins)","m428":0,"m429":1,"m430":2},
|
||||
{"field":"kinematics","value":"xyzbca_trsrn","m428":0,"m429":1,"m430":2},
|
||||
{"field":"config","value":"configs/sim/axis/vismach/hexapod-sim/hexapod.ini","m428":0,"m429":1,"m430":2},
|
||||
{"field":"machine","value":"hexapod (switchkins)","m428":0,"m429":1,"m430":2},
|
||||
{"field":"kinematics","value":"genhexkins","m428":0,"m429":1,"m430":2},
|
||||
{"field":"halfile","value":"kinematics.hal","m428":0,"m429":1,"m430":2},
|
||||
{"field":"halfile","value":"kinematics","m428":0,"m429":1,"m430":2},
|
||||
{"field":"hal_file","value":"kinematics.hal","m428":0,"m429":1,"m430":2},
|
||||
{"field":"hal_file","value":"kinematics","m428":0,"m429":1,"m430":2},
|
||||
{"field":"config","value":"configs/sim/axis/vismach/melfa-sim/melfa.ini","m428":0,"m429":1,"m430":2},
|
||||
{"field":"machine","value":"melfa (mm)","m428":0,"m429":1,"m430":2},
|
||||
{"field":"kinematics","value":"genserkins","m428":0,"m429":1,"m430":2},
|
||||
{"field":"halfile","value":"melfa_dh.hal","m428":0,"m429":1,"m430":2},
|
||||
{"field":"halfile","value":"melfa_dh","m428":0,"m429":1,"m430":2},
|
||||
{"field":"hal_file","value":"melfa_dh.hal","m428":0,"m429":1,"m430":2},
|
||||
{"field":"hal_file","value":"melfa_dh","m428":0,"m429":1,"m430":2},
|
||||
{"field":"config","value":"configs/sim/axis/vismach/millturn/millturn.ini","m428":0,"m429":1,"m430":-1},
|
||||
{"field":"machine","value":"millturn (mm)","m428":0,"m429":1,"m430":-1},
|
||||
{"field":"kinematics","value":"millturn","m428":0,"m429":1,"m430":-1},
|
||||
{"field":"halfile","value":"millturn.hal","m428":0,"m429":1,"m430":-1},
|
||||
{"field":"halfile","value":"millturn","m428":0,"m429":1,"m430":-1},
|
||||
{"field":"hal_file","value":"millturn.hal","m428":0,"m429":1,"m430":-1},
|
||||
{"field":"hal_file","value":"millturn","m428":0,"m429":1,"m430":-1},
|
||||
{"field":"config","value":"configs/sim/axis/vismach/puma/puma.ini","m428":0,"m429":1,"m430":2},
|
||||
{"field":"machine","value":"PUMA (pumakins,switchkins)","m428":0,"m429":1,"m430":2},
|
||||
{"field":"kinematics","value":"pumakins","m428":0,"m429":1,"m430":2},
|
||||
{"field":"halfile","value":"puma_dh.hal","m428":0,"m429":1,"m430":2},
|
||||
{"field":"halfile","value":"puma_dh","m428":0,"m429":1,"m430":2},
|
||||
{"field":"hal_file","value":"puma_dh.hal","m428":0,"m429":1,"m430":2},
|
||||
{"field":"hal_file","value":"puma_dh","m428":0,"m429":1,"m430":2},
|
||||
{"field":"config","value":"configs/sim/axis/vismach/puma/puma_cube.ini","m428":0,"m429":1,"m430":2},
|
||||
{"field":"machine","value":"puma_cube.ini (pumakins)","m428":0,"m429":1,"m430":2},
|
||||
{"field":"config","value":"configs/sim/axis/vismach/puma/puma560.ini","m428":0,"m429":1,"m430":2},
|
||||
{"field":"machine","value":"puma560 (switchkins) (inch)","m428":0,"m429":1,"m430":2},
|
||||
{"field":"halfile","value":"puma560_dh.hal","m428":0,"m429":1,"m430":2},
|
||||
{"field":"halfile","value":"puma560_dh","m428":0,"m429":1,"m430":2},
|
||||
{"field":"hal_file","value":"puma560_dh.hal","m428":0,"m429":1,"m430":2},
|
||||
{"field":"hal_file","value":"puma560_dh","m428":0,"m429":1,"m430":2},
|
||||
{"field":"config","value":"configs/sim/axis/vismach/puma/puma560_uvw.ini","m428":0,"m429":1,"m430":2},
|
||||
{"field":"config","value":"configs/sim/axis/vismach/scara/scara.ini","m428":0,"m429":1,"m430":2},
|
||||
{"field":"machine","value":"SCARA (genserkins,switchkins)","m428":0,"m429":1,"m430":2},
|
||||
{"field":"kinematics","value":"scarakins coordinates=xyzcab","m428":0,"m429":1,"m430":2},
|
||||
{"field":"config","value":"configs/sim/qtaxis/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2},
|
||||
{"field":"config","value":"configs/sim/qtvcp_screens/non-trivial/scara/scara.ini","m428":0,"m429":1,"m430":2}
|
||||
]
|
||||
@@ -80,6 +80,12 @@ export type CncParseOptions = {
|
||||
block_delete?: boolean;
|
||||
switchkins?: string;
|
||||
remap?: string;
|
||||
machine?: string;
|
||||
config?: string;
|
||||
configPath?: string;
|
||||
config_path?: string;
|
||||
halfile?: string;
|
||||
hal_file?: string;
|
||||
kinematics?: string;
|
||||
trt?: "xyzbc" | "xyzac" | string;
|
||||
pivotLength?: number;
|
||||
|
||||
@@ -113,6 +113,12 @@ export async function createWasmSimulator(moduleOptions = {}) {
|
||||
...(options.block_delete !== undefined ? { block_delete: options.block_delete } : {}),
|
||||
...(options.switchkins ? { switchkins: options.switchkins } : {}),
|
||||
...(options.remap ? { remap: options.remap } : {}),
|
||||
...(options.machine ? { machine: options.machine } : {}),
|
||||
...(options.config ? { config: options.config } : {}),
|
||||
...(options.configPath ? { configPath: options.configPath } : {}),
|
||||
...(options.config_path ? { config_path: options.config_path } : {}),
|
||||
...(options.halfile ? { halfile: options.halfile } : {}),
|
||||
...(options.hal_file ? { hal_file: options.hal_file } : {}),
|
||||
...(options.kinematics ? { kinematics: options.kinematics } : {}),
|
||||
...(options.trt ? { trt: options.trt } : {}),
|
||||
...(options.pivotLength !== undefined ? { pivotLength: options.pivotLength } : {}),
|
||||
|
||||
@@ -44,6 +44,37 @@
|
||||
throw new Error(`missing LinuxCNC WASM browser M${427 + line} switchkins type ${kinstype}`);
|
||||
}
|
||||
}
|
||||
|
||||
const configCaseResponse = await fetch("/public/linuxcnc_switchkins_remap_config_cases.json");
|
||||
if (!configCaseResponse.ok) {
|
||||
throw new Error(`failed to load LinuxCNC switchkins config cases: ${configCaseResponse.status}`);
|
||||
}
|
||||
const configCases = await configCaseResponse.json();
|
||||
if (!Array.isArray(configCases) || configCases.length === 0) {
|
||||
throw new Error("missing LinuxCNC switchkins config cases");
|
||||
}
|
||||
for (const configCase of configCases) {
|
||||
const options = {
|
||||
backend: "linuxcnc-rs274",
|
||||
[configCase.field]: configCase.value,
|
||||
};
|
||||
const program = configCase.m430 >= 0 ? "M428\nM429\nM430\n" : "M428\nM429\n";
|
||||
const configEvents = simulator.parse(program, "linuxcnc", options);
|
||||
for (const [line, kinstype] of [
|
||||
[1, configCase.m428],
|
||||
[2, configCase.m429],
|
||||
...(configCase.m430 >= 0 ? [[3, configCase.m430]] : []),
|
||||
]) {
|
||||
const sawSwitch = configEvents.some(
|
||||
(event) => event.type === "kinematics-switch" && event.line === line && event.reserved === kinstype,
|
||||
);
|
||||
if (!sawSwitch) {
|
||||
throw new Error(
|
||||
`missing LinuxCNC WASM browser generated ${configCase.field}=${configCase.value} line ${line} switchkins type ${kinstype}`,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
result.textContent = "browser wasm smoke passed";
|
||||
} finally {
|
||||
simulator.dispose();
|
||||
|
||||
Reference in New Issue
Block a user