From 7e18c6cd40a942bddba3ad7059fd5023cd5466a3 Mon Sep 17 00:00:00 2001 From: cnc Date: Fri, 5 Jun 2026 22:07:39 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E9=BD=90=E9=BB=98=E8=AE=A4=20M3M4=20?= =?UTF-8?q?=E5=8D=95=E4=B8=BB=E8=BD=B4=20source-linked=20=E8=A6=86?= =?UTF-8?q?=E7=9B=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test-linuxcnc-source-link.sh | 23 +++++++++++++++++++ .../linuxcnc_multi_spindle_default_start.ngc | 7 ++++++ 2 files changed, 30 insertions(+) create mode 100644 tests/gcode/linuxcnc_multi_spindle_default_start.ngc diff --git a/test-linuxcnc-source-link.sh b/test-linuxcnc-source-link.sh index e7b9cec..9a6d6ee 100755 --- a/test-linuxcnc-source-link.sh +++ b/test-linuxcnc-source-link.sh @@ -225,6 +225,12 @@ INI_FILE_NAME="$multi_spindle_modes_file" CNC_SIM_RS274_VAR="$var_file" \ "$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_multi_spindle_all_direction.ngc \ >"$output_dir/cnc_sim_linuxcnc_source_multi_spindle_all_direction.json" # Source basis: LinuxCNC src/emc/rs274ngc/rs274ngc_pre.cc init reads +# [TRAJ] SPINDLES from INI_FILE_NAME, and interp_convert.cc M3/M4 without a $ +# selector start only the default spindle. +INI_FILE_NAME="$multi_spindle_modes_file" CNC_SIM_RS274_VAR="$var_file" \ + "$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_multi_spindle_default_start.ngc \ + >"$output_dir/cnc_sim_linuxcnc_source_multi_spindle_default_start.json" +# Source basis: LinuxCNC src/emc/rs274ngc/rs274ngc_pre.cc init reads # [TRAJ] SPINDLES from INI_FILE_NAME, and interp_convert.cc M5 without a $ # selector stops every configured spindle. INI_FILE_NAME="$multi_spindle_modes_file" CNC_SIM_RS274_VAR="$var_file" \ @@ -1867,6 +1873,22 @@ if multi_spindle_all_direction_states != expected_multi_spindle_all_direction_st f"{multi_spindle_all_direction_states!r}" ) +multi_spindle_default_start = json.loads((OUTPUT_DIR / "cnc_sim_linuxcnc_source_multi_spindle_default_start.json").read_text()) +multi_spindle_default_start_states = [ + (event["line"], event["tool"], event["spindle"], event["reserved"]) + for event in multi_spindle_default_start + if event["type"] == "set-spindle" and event["line"] in {5, 6} +] +expected_multi_spindle_default_start_states = [ + (5, 0, 1200, 1), + (6, 0, 1200, 2), +] +if multi_spindle_default_start_states != expected_multi_spindle_default_start_states: + raise SystemExit( + "unexpected source-linked default M3/M4 spindle states: " + f"{multi_spindle_default_start_states!r}" + ) + multi_spindle_default_stop = json.loads((OUTPUT_DIR / "cnc_sim_linuxcnc_source_multi_spindle_default_stop.json").read_text()) multi_spindle_default_stop_states = [ (event["line"], event["tool"], event["spindle"], event["reserved"]) @@ -3811,6 +3833,7 @@ echo "dumped $output_dir/cnc_sim_linuxcnc_source_rtcp_controls.json" echo "dumped $output_dir/cnc_sim_linuxcnc_source_spindle_direction.json" echo "dumped $output_dir/cnc_sim_linuxcnc_source_multi_spindle_direction.json" echo "dumped $output_dir/cnc_sim_linuxcnc_source_multi_spindle_all_direction.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_source_multi_spindle_default_start.json" echo "dumped $output_dir/cnc_sim_linuxcnc_source_multi_spindle_default_stop.json" echo "dumped $output_dir/cnc_sim_linuxcnc_source_spindle_modes.json" echo "dumped $output_dir/cnc_sim_linuxcnc_source_spindle_orient.json" diff --git a/tests/gcode/linuxcnc_multi_spindle_default_start.ngc b/tests/gcode/linuxcnc_multi_spindle_default_start.ngc new file mode 100644 index 0000000..474b80e --- /dev/null +++ b/tests/gcode/linuxcnc_multi_spindle_default_start.ngc @@ -0,0 +1,7 @@ +G21 G90 G17 +(Source basis: LinuxCNC src/emc/rs274ngc/rs274ngc_pre.cc init reads [TRAJ] SPINDLES from INI_FILE_NAME.) +(Source basis: LinuxCNC src/emc/rs274ngc/interp_convert.cc M3/M4 without $ starts only the default spindle.) +S1200 $-1 +M3 +M4 +M30