按规划持续工作
结论:已将 vendored LinuxCNC bridge-mill 5axisgui.ngc 纳入五轴 remap/tool-table/file 执行 baseline,native、Node WASM 和 browser 均通过同源验证;bridgemill 按 LinuxCNC REMAP 方向验证,未实现自有 M 码或运动学语义。
This commit is contained in:
@@ -178,6 +178,26 @@
|
||||
return wasmDir;
|
||||
}
|
||||
|
||||
async function writeFiveAxisBridgeMillMachineFiles(interp) {
|
||||
const sourceDir =
|
||||
"../../vendor/linuxcnc/configs/sim/axis/vismach/5axis/bridgemill";
|
||||
const wasmDir = "/work/browser-fiveaxis/bridgemill";
|
||||
const remapFiles = ["428remap.ngc", "429remap.ngc", "430remap.ngc"];
|
||||
|
||||
await writeFetchedTextFile(interp, `${sourceDir}/5axis.ini`, `${wasmDir}/5axis.ini`);
|
||||
await writeFetchedTextFile(interp, `${sourceDir}/5axis.tbl`, `${wasmDir}/5axis.tbl`);
|
||||
for (const filename of remapFiles) {
|
||||
await writeFetchedTextFile(
|
||||
interp,
|
||||
`${sourceDir}/remap_subs/${filename}`,
|
||||
`${wasmDir}/remap_subs/${filename}`,
|
||||
);
|
||||
}
|
||||
await writeFetchedTextFile(interp, `${sourceDir}/5axisgui.ngc`, `${wasmDir}/5axisgui.ngc`);
|
||||
|
||||
return wasmDir;
|
||||
}
|
||||
|
||||
async function verifyRejects(fixtureName, operation, expectedPattern) {
|
||||
try {
|
||||
await operation();
|
||||
@@ -528,6 +548,31 @@
|
||||
"fiveaxis_linuxcnc_remap_file_execute=1",
|
||||
].join("\n"),
|
||||
);
|
||||
const fiveAxisBridgeMillDir = await writeFiveAxisBridgeMillMachineFiles(interp);
|
||||
verifyExpectedOutput(
|
||||
"browser_fiveaxis_bridgemill_5axisgui",
|
||||
interp.runFiveAxisRemapFile(
|
||||
`${fiveAxisBridgeMillDir}/5axisgui.ngc`,
|
||||
`${fiveAxisBridgeMillDir}/5axis.ini`,
|
||||
),
|
||||
[
|
||||
"fiveaxis_ini_open=1",
|
||||
"fiveaxis_tool_table_load=0",
|
||||
"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=2197",
|
||||
"fiveaxis_file_execute_count=2197",
|
||||
"fiveaxis_file_finish_count=137",
|
||||
"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(
|
||||
"restore_parameters_missing_file",
|
||||
|
||||
@@ -310,6 +310,19 @@ grep -Fq "xyzab_tdr_M429_execute_1=0" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "xyzab_tdr_M428_execute_0=2" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "xyzab_tdr_M428_execute_1=0" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "xyzab_tdr_linuxcnc_remap_execute_path=1" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "bridgemill_ini_open=1" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "bridgemill_parsed_remap_count=3" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "bridgemill_remaps_ready=1" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "bridgemill_M429_execute_0=2" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "bridgemill_M429_execute_1=0" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "bridgemill__hal[motion.switchkins-type]: rc=0 found=1 value=1" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "bridgemill_M428_execute_0=2" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "bridgemill_M428_execute_1=0" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "bridgemill__hal[motion.switchkins-type]: rc=0 found=1 value=0" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "bridgemill_M430_execute_0=2" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "bridgemill_M430_execute_1=0" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "bridgemill__hal[motion.switchkins-type]: rc=0 found=1 value=2" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "bridgemill_linuxcnc_remap_execute_path=1" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "xyzac_trt_xyzac_switchkins_file_open=0" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "xyzac_trt_xyzac_switchkins_file_read_count=620" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "xyzac_trt_xyzac_switchkins_file_execute_count=620" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
@@ -374,6 +387,14 @@ grep -Fq "xyzab_tdr_xyzab_tdr_demo_file_final_rc=1" "$FIVEAXIS_REMAP_EXECUTE_STD
|
||||
grep -Fq "xyzab_tdr_xyzab_tdr_demo_file_reached_exit=1" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "xyzab_tdr_xyzab_tdr_demo__hal[motion.switchkins-type]: rc=0 found=1 value=1" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "xyzab_tdr_xyzab_tdr_demo_linuxcnc_demo_file_execute=1" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "bridgemill_bridgemill_5axisgui_file_open=0" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "bridgemill_bridgemill_5axisgui_file_read_count=2197" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "bridgemill_bridgemill_5axisgui_file_execute_count=2197" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "bridgemill_bridgemill_5axisgui_file_finish_count=137" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "bridgemill_bridgemill_5axisgui_file_final_rc=1" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "bridgemill_bridgemill_5axisgui_file_reached_exit=1" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "bridgemill_bridgemill_5axisgui__hal[motion.switchkins-type]: rc=0 found=1 value=0" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "bridgemill_bridgemill_5axisgui_linuxcnc_demo_file_execute=1" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
grep -Fq "fiveaxis_linuxcnc_remap_execute_path=1" "$FIVEAXIS_REMAP_EXECUTE_STDOUT"
|
||||
|
||||
NAMEDPARAM_STDOUT="$BUILD_DIR/linuxcnc_namedparam_harness.run.stdout.log"
|
||||
|
||||
@@ -162,6 +162,28 @@ function writeFiveAxisTdrMachineFiles() {
|
||||
return wasmDir;
|
||||
}
|
||||
|
||||
function writeFiveAxisBridgeMillMachineFiles() {
|
||||
const sourceDir = resolve(
|
||||
rootDir,
|
||||
"vendor/linuxcnc/configs/sim/axis/vismach/5axis/bridgemill",
|
||||
);
|
||||
const wasmDir = "/work/fiveaxis/bridgemill";
|
||||
|
||||
writeVendorTextFile(resolve(sourceDir, "5axis.ini"), `${wasmDir}/5axis.ini`);
|
||||
writeVendorTextFile(resolve(sourceDir, "5axis.tbl"), `${wasmDir}/5axis.tbl`);
|
||||
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, "5axisgui.ngc"), `${wasmDir}/5axisgui.ngc`);
|
||||
|
||||
return wasmDir;
|
||||
}
|
||||
|
||||
const namedParamIniPath = "/work/namedparams.ini";
|
||||
interp.writeTextFile(
|
||||
namedParamIniPath,
|
||||
@@ -519,6 +541,32 @@ verifyExpectedOutput(
|
||||
].join("\n"),
|
||||
);
|
||||
|
||||
const fiveAxisBridgeMillDir = writeFiveAxisBridgeMillMachineFiles();
|
||||
verifyExpectedOutput(
|
||||
"fiveaxis_bridgemill_5axisgui_wasm",
|
||||
interp.runFiveAxisRemapFile(
|
||||
`${fiveAxisBridgeMillDir}/5axisgui.ngc`,
|
||||
`${fiveAxisBridgeMillDir}/5axis.ini`,
|
||||
),
|
||||
[
|
||||
"fiveaxis_ini_open=1",
|
||||
"fiveaxis_tool_table_load=0",
|
||||
"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=2197",
|
||||
"fiveaxis_file_execute_count=2197",
|
||||
"fiveaxis_file_finish_count=137",
|
||||
"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