按推荐建议,继续执行

结论:已接入 LinuxCNC probe canonical 边界事件记录,并新增 G38.2、G38.3、G38.4、G38.5 回归 fixture;原生 probe 验证通过。
This commit is contained in:
2026-06-07 16:30:13 +08:00
parent cf34d6894b
commit b3809a6674
4 changed files with 50 additions and 3 deletions

View File

@@ -389,6 +389,13 @@ Current verified progress:
`G95`, `G61`, `G61.1`, and `G64 P/Q` behavior from `G95`, `G61`, `G61.1`, and `G64 P/Q` behavior from
`interp_convert.cc::convert_feed_mode()`, `interp_convert.cc::convert_feed_mode()`,
`interp_convert.cc::convert_control_mode()`, and `interp_queue.cc`. `interp_convert.cc::convert_control_mode()`, and `interp_queue.cc`.
- `runtime/core/linuxcnc_wrap/linuxcnc_interp_minimal_runtime.cpp` now records
probe canonical boundary calls emitted by vendored
`interp_convert.cc::convert_probe()`: `TURN_PROBE_ON`,
`STRAIGHT_PROBE`, and `TURN_PROBE_OFF`.
`tests/fixtures/gcode/probe_semantics.ngc` and
`tests/fixtures/canon/probe_semantics.events` pin `G38.2`, `G38.3`,
`G38.4`, and `G38.5` probe type handling.
- `tests/fixtures/gcode_errors/g1_zero_feed.ngc` and - `tests/fixtures/gcode_errors/g1_zero_feed.ngc` and
`tests/fixtures/canon_errors/g1_zero_feed.expected` pin the negative `tests/fixtures/canon_errors/g1_zero_feed.expected` pin the negative
`G1` zero-feed case. The source basis is LinuxCNC `G1` zero-feed case. The source basis is LinuxCNC

View File

@@ -157,7 +157,26 @@ void STOP_CUTTER_RADIUS_COMPENSATION() {}
void START_SPEED_FEED_SYNCH(int, double, bool) {} void START_SPEED_FEED_SYNCH(int, double, bool) {}
void STOP_SPEED_FEED_SYNCH() {} void STOP_SPEED_FEED_SYNCH() {}
void RIGID_TAP(int, double, double, double, double) {} void RIGID_TAP(int, double, double, double, double) {}
void STRAIGHT_PROBE(int, double, double, double, double, double, double, double, double, double, unsigned char) {} void STRAIGHT_PROBE(int lineno,
double x, double y, double z,
double a, double b, double c,
double u, double v, double w,
unsigned char probe_type)
{
std::ostringstream oss;
oss << "STRAIGHT_PROBE line=" << lineno
<< " x=" << x
<< " y=" << y
<< " z=" << z
<< " a=" << a
<< " b=" << b
<< " c=" << c
<< " u=" << u
<< " v=" << v
<< " w=" << w
<< " probe_type=" << static_cast<int>(probe_type);
standalone::push_canon_event(oss.str());
}
void STOP() {} void STOP() {}
void DWELL(double seconds) void DWELL(double seconds)
{ {
@@ -264,8 +283,8 @@ void FLOOD_ON() { standalone::push_canon_event("FLOOD_ON"); }
void MIST_OFF() { standalone::push_canon_event("MIST_OFF"); } void MIST_OFF() { standalone::push_canon_event("MIST_OFF"); }
void MIST_ON() { standalone::push_canon_event("MIST_ON"); } void MIST_ON() { standalone::push_canon_event("MIST_ON"); }
void PALLET_SHUTTLE() { standalone::push_canon_event("PALLET_SHUTTLE"); } void PALLET_SHUTTLE() { standalone::push_canon_event("PALLET_SHUTTLE"); }
void TURN_PROBE_OFF() {} void TURN_PROBE_OFF() { standalone::push_canon_event("TURN_PROBE_OFF"); }
void TURN_PROBE_ON() {} void TURN_PROBE_ON() { standalone::push_canon_event("TURN_PROBE_ON"); }
void UNCLAMP_AXIS(CANON_AXIS) {} void UNCLAMP_AXIS(CANON_AXIS) {}
void NURB_KNOT_VECTOR() {} void NURB_KNOT_VECTOR() {}
void NURB_CONTROL_POINT(int, double, double, double, double) {} void NURB_CONTROL_POINT(int, double, double, double, double) {}

View File

@@ -0,0 +1,15 @@
canon_event=SELECT_PLANE plane=1
canon_event=STRAIGHT_TRAVERSE line=1 x=0 y=0 z=0 a=0 b=0 c=0 u=0 v=0 w=0
canon_event=SET_FEED_RATE rate=25
canon_event=TURN_PROBE_ON
canon_event=STRAIGHT_PROBE line=3 x=0 y=0 z=-1 a=0 b=0 c=0 u=0 v=0 w=0 probe_type=0
canon_event=TURN_PROBE_OFF
canon_event=TURN_PROBE_ON
canon_event=STRAIGHT_PROBE line=4 x=1 y=0 z=0 a=0 b=0 c=0 u=0 v=0 w=0 probe_type=1
canon_event=TURN_PROBE_OFF
canon_event=TURN_PROBE_ON
canon_event=STRAIGHT_PROBE line=5 x=0 y=1 z=0 a=0 b=0 c=0 u=0 v=0 w=0 probe_type=2
canon_event=TURN_PROBE_OFF
canon_event=TURN_PROBE_ON
canon_event=STRAIGHT_PROBE line=6 x=0 y=0 z=1 a=0 b=0 c=0 u=0 v=0 w=0 probe_type=3
canon_event=TURN_PROBE_OFF

View File

@@ -0,0 +1,6 @@
G90 G17 G0 X0 Y0 Z0
F25
G38.2 Z-1
G38.3 X1
G38.4 Y1
G38.5 Z1