按规划持续工作

This commit is contained in:
2026-06-09 06:13:28 +08:00
parent 902c6ecaea
commit 2658ee3b72
255 changed files with 12487 additions and 150 deletions

View File

@@ -0,0 +1,5 @@
#!/bin/bash
halcmd setp axisui.notifications-clear-info 1
sleep .1
halcmd setp axisui.notifications-clear-info 0
exit 0

View File

@@ -0,0 +1,33 @@
#<xmax> = 9
#<ymax> = 4
#<zmax> = 3
#<rct> = 100
#<feed> = 100
#<x1> = #<xmax>
#<y1> = 0
#<z1> = [#<zmax> * 0.5]
#<x2> = #<xmax>
#<y2> = #<ymax>
#<z2> = 0
#<x3> = 0
#<y3> = #<ymax>
#<z3> = #<zmax>
m111 ;clear notifications
g61
g0 x0 y0 z0
o<rpt> repeat [#<rct>]
f #<feed>
g0 x 0 y 0 z 0
g1 x #<x1> y #<y1> z #<z1>
g1 x #<x2> y #<y2> z #<z2>
g1 x #<x3> y #<y3> z #<z3>
g1 x 0 y 0 z 0
o<rpt> endrepeat
m111 ;clear notifications
m2

View File

@@ -0,0 +1,83 @@
[APPLICATIONS]
# delay because some items are done in postgui
DELAY = 5
APP = halscope -i dynamic_offsets.halscope
[HAL]
HALUI = halui
HALFILE = LIB:basic_sim.tcl -no_sim_spindle
POSTGUI_HALFILE = dynamic_offsets_panel.hal
[EMC]
MACHINE = Dynamic External Offsets
VERSION = 1.1
[DISPLAY]
PYVCP = dynamic_offsets_panel.xml
DISPLAY = axis
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_LINEAR_VELOCITY = 2
OPEN_FILE = ./dyn_demo.ngc
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[RS274NGC]
USER_M_PATH = .
PARAMETER_FILE = sim.var
[EMCMOT]
EMCMOT = motmod
SERVO_PERIOD = 1000000
[TRAJ]
COORDINATES = XYZ
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
[KINS]
JOINTS = 3
KINEMATICS = trivkins coordinates=XYZ
[AXIS_X]
MAX_VELOCITY = 2
MAX_ACCELERATION = 20
MIN_LIMIT = -1
MAX_LIMIT = 10
[AXIS_Y]
MAX_VELOCITY = 2
MAX_ACCELERATION = 20
MIN_LIMIT = -1
MAX_LIMIT = 10
[AXIS_Z]
# Note:give half to external_offsets:
OFFSET_AV_RATIO = 0.5
# Note: modified in pyvcp panel:
MAX_VELOCITY = 2
MAX_ACCELERATION = 50
MIN_LIMIT = -5
MAX_LIMIT = 5
[JOINT_0]
TYPE = LINEAR
HOME_SEQUENCE = 0
MAX_VELOCITY = 2
MAX_ACCELERATION = 20
[JOINT_1]
TYPE = LINEAR
HOME_SEQUENCE = 0
MAX_VELOCITY = 2
MAX_ACCELERATION = 20
[JOINT_2]
TYPE = LINEAR
HOME_SEQUENCE = 0
MAX_VELOCITY = 2
MAX_ACCELERATION = 50

View File

@@ -0,0 +1 @@
T1 P1 D0.125 Z0.5

View File

@@ -0,0 +1,126 @@
[EMC]
VERSION = 1.1
MACHINE = LinuxCNC-HAL-SIM-AXIS
DEBUG = 0
[DISPLAY]
DISPLAY = axis
CYCLE_TIME = 0.100
HELP_FILE = doc/help.txt
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.2
MAX_SPINDLE_OVERRIDE = 1.0
PROGRAM_PREFIX = ../../nc_files/
OPEN_FILE = ./foam.ngc
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
#EDITOR = geany
INCREMENTS = 1 mm, .01 in, .1mm, 1 mil, .1 mil, 1/8000 in
GEOMETRY = XY;UV
FOAM = 1
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python3
[RS274NGC]
PARAMETER_FILE = foam.var
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
SERVO_PERIOD = 1000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[HAL]
HALUI = halui
HALFILE = LIB:basic_sim.tcl
[TRAJ]
NO_FORCE_HOMING = 1
COORDINATES = X Y U V
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 1.0
DEFAULT_ANGULAR_VELOCITY = 45.0
MAX_LINEAR_VELOCITY = 1.2
MAX_ANGULAR_VELOCITY = 90.0
[EMCIO]
TOOL_TABLE = sim.tbl
TOOL_CHANGE_POSITION = 0 0 2
[KINS]
KINEMATICS = trivkins coordinates=xyuv
JOINTS = 4
[AXIS_X]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 1.2
MAX_ACCELERATION = 20.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 1.2
MAX_ACCELERATION = 20.0
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
HOME_SEARCH_VEL = 0.0
HOME_SEQUENCE = 0
[AXIS_Y]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 1.2
MAX_ACCELERATION = 20.0
[JOINT_1]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 1.2
MAX_ACCELERATION = 20.0
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
HOME_SEARCH_VEL = 0.0
HOME_SEQUENCE = 0
[AXIS_U]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 1.2
MAX_ACCELERATION = 20.0
[JOINT_2]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 1.2
MAX_ACCELERATION = 20.0
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
HOME_SEARCH_VEL = 0.0
HOME_SEQUENCE = 0
[AXIS_V]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 1.2
MAX_ACCELERATION = 20.0
[JOINT_3]
TYPE = ANGULAR
HOME = 0.0
MAX_VELOCITY = 90.0
MAX_ACCELERATION = 1200.0
HOME_SEARCH_VEL = 0.0
HOME_SEQUENCE = 0

View File

@@ -0,0 +1,24 @@
(test this with axis_9axis sim machine )
G17 G21 G90 G61 G54
(AXIS,XY_Z_POS,5)
(AXIS,UV_Z_POS,30)
(AXIS,GRID,5)
G0 x0 y0 u0 v0
(square uv 45 deg turned offset 10mm to zero )
G0 x5 y5
G0 x10 y10 u22.5 v22.5
G1 x10 y35 u10 v35 F200
G1 x10 y60 u22.5 v47.5
G1 x35 y60 u35 v60
G2 r25 x60 y35 u60 v35
G1 x60 y10 u47.5 v22.5
G1 x35 y10 u35 v10
G1 X10 Y10 u22.5 v22.5
G1 X5 Y5 U5 V5
G0 x0 u0
G0 x0 y0 u0 v0
M30
%

View File

@@ -0,0 +1,7 @@
#!/bin/sh
halcmd setp axisui.notifications-clear-info 1
sleep .200
halcmd setp axisui.notifications-clear-info 0
exit 0

View File

@@ -0,0 +1,72 @@
# minimal sim config to demonstrate '!' in [DISPLAY]GEOMETRY
# showing rotations respecting g5x,g92 offsets
[EMC]
VERSION = 1.1
MACHINE = xyzc (offset rotations)
[DISPLAY]
OPEN_FILE = ./xyzc.ngc
GEOMETRY = !CXYZ
DISPLAY = axis
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[RS274NGC]
PARAMETER_FILE = xyzc.var
USER_M_PATH = .
[EMCMOT]
EMCMOT = motmod
SERVO_PERIOD = 1000000
[HAL]
HALFILE = LIB:basic_sim.tcl
[KINS]
JOINTS = 4
KINEMATICS = trivkins coordinates=XYZC kinstype=both
[TRAJ]
COORDINATES = X Y Z C
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 10
MAX_LINEAR_ACCELERATION = 10000
MAX_ANGULAR_VELOCITY = 3600
MAX_ANGULAR_ACCELERATION = 36000
[JOINT_0]
TYPE = LINEAR
HOME_SEQUENCE = 0
[JOINT_1]
TYPE = LINEAR
HOME_SEQUENCE = 0
[JOINT_2]
TYPE = LINEAR
HOME_SEQUENCE = 0
[JOINT_3]
TYPE = ANGULAR
HOME_SEQUENCE = 0
MAX_VELOCITY=3600
MAX_ACCELERATION=36000
[AXIS_X]
MAX_VELOCITY=10
MAX_ACCELERATION=1000
[AXIS_Y]
MAX_VELOCITY=10
MAX_ACCELERATION=1000
[AXIS_Z]
MAX_VELOCITY=10
MAX_ACCELERATION=1000
[AXIS_C]
MAX_VELOCITY=3600
MAX_ACCELERATION=36000

View File

@@ -0,0 +1,66 @@
o110 sub
f100
g61
g0 x1.0 y0.0
g1 x1.5 y0.0
g1 x1.5 y0.5
g1 x1.0 y0.5
g1 x1.0 y0.0
o110 endsub
o100 sub
g0 c90
o110 call
g0 c180
o110 call
g0 c270
o110 call
g0x0y0z0c0
o100 endsub
;#########################################################
m110 ; clear messages
g0x0y0z0c0
o110 call
o200 if [#5210 ne 0]
(debug, ! Prog loaded with g92 offsets)
(debug, RELOAD program required)
g92.1
(debug, bye)
m2
o200 endif
o210 if [[#5221 ne 0] or [#5222 ne 0] or [#5223 ne 0] or [#5223 ne 0] or [#5225 ne 0] or [#5226 ne 0] or [#5227 ne 0] or [#5228 ne 0] or [#5229 ne 0] ]
(debug, ! Prog loaded with g5x offsets)
(debug, RELOAD program required)
g92.1
g10l2p0x0y0z0c0
(debug, bye)
m2
o210 endif
g0x0y0z0c0
g10l2p0x0y0z0c0
(debug, First: run with NO offsets, s to continue)
m0
o100 call
o300 if [#<_task> eq 1]
g10l2p0x1
(debug, Next: run with g5x xoffset=#5221, s to continue)
m0
o100 call
g10l2p0x0y0z0c0
g92x2
(debug, Next: run with g92 xoffset=#5211, s to continue)
m0
o100 call
o300 endif
g10l2p0x0y0z0c0
g92.1
g0x0y0z0c0
(debug,fini)
m2

View File

@@ -0,0 +1,5 @@
T1 P1 Z0.511 D0.125 ;1/8 end mill
T2 P2 Z0.1 D0.0625 ;1/16 end mill
T3 P3 Z1.273 D0.201 ;#7 tap drill
T99999 P99999 Z0.1 ;big tool number
T4 P4 Z0 D.005 ;Added 20131029

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,11 @@
; recursive function example
; factorial
o<factorial> sub
o<factorialif> if [[#1] EQ 0]
o<factorial> return [1]
o<factorialif> else
o<factorial> call [[#1] - 1]
o<factorial> return [#<_value> * #1]
o<factorialif> endif
o<factorial> endsub
m2

View File

@@ -0,0 +1,12 @@
; drill a bolt hole circle for 6 bolts at diameter 3 inches
G20 G17 G90
; position over first hole, establishing our radius of 1.5
; an equivalent command would be G0 @1.5 ^0 Z0
G0 X1.5 Y0 Z0
; drill six holes, incrementing 60 degrees each time
G91 G81 R.1 Z-.5 ^60 L6 F10
M2

View File

@@ -0,0 +1,88 @@
; This demonstrates doing an M6 remapped to a named oword sub
;
; to activate, incantate as follows in the INI file:
;
; [RS274NGC]
; # remap M6 to a named oword subroutine.
; M6_COMMAND=o<m6demo>call
;
; parameter #1: the current tool-in-spindle
; parameter #2: the tool number requested in the last T (prepare) command
; parameter #3: pocket of new tool
;
;
;
O<m6demo> sub
;
(DEBUG, executing M6 O-word sub, tool-in-spindle=#1 prepared=#2 pocket=#3)
;
M66 P2 L0
;(debug, digital-input-02=#5399)
#<tool_change_with_spindle_on> = 0
#<tool_change_quill_up> = 0
#<tool_change_at_g30> = 0
; number of seconds to wait for 'tool-changed' equivalent
#<timeout> = 9999
;
O<m6demo_spindle_off> if [#<tool_change_with_spindle_on> EQ 0]
M5
O<m6demo_spindle_off> endif
O<m6demo_quill_up> if [#<tool_change_quill_up> NE 0]
G0 G53 Z0
O<m6demo_quill_up> endif
O<m6demo_tc_at_g30> if [#<tool_change_at_g30> NE 0]
G30
O<m6demo_tc_at_g30> endif
; set analog output pin #2 to signal the pocket number
; iocontrol.tool-number becomes motion.analog-out-02
M68 E2 Q[#2]
;(DEBUG, set current tool number on motion.analog-out-02: #2)
;
; assert the equivalent of the iocontrol.tool-change pin
; which is now motion.digital-out-01
M64 P1
;(DEBUG, motion.digital-out-01 set high, waiting for motion.digital-in-01)
; wait for the equivalent of the iocontrol.tool-changed pin to go high
; we use motion.digital-in-01
;
M66 P1 L3 Q#<timeout>
;
; if we waited too long, fail change and abort.
;
O<m6demo_timeout> if [#5399 EQ -1]
(DEBUG, timeout waiting for digital-in-01 to become true - failing change )
O<m6demo> return [-1]
O<m6demo_timeout> endif
; retract iocontrol.tool-change equivalent
;(DEBUG, deasserting motion.digital-out-01)
M65 P1
;
; test fail-change line from gladevcp
M66 P2 L0
; (debug, digital-input-02=#5399)
O<m6demo_change_fail> if [#5399 EQ 1]
(DEBUG, returning -1 to fail change)
O<m6demo> return [-1]
O<m6demo_change_fail> else
(debug, change ok, returning +1 to commit change)
; a positive return value commits the tool change
O<m6demo> return [1]
O<m6demo_change_fail> endif
;
; return a positive value commit the change.
; a negative return value will fail the change and
; abort the interpreter with a message like
; "M6 failed (<return value>)"
;
O<m6demo> endsub
m2

View File

@@ -0,0 +1,8 @@
exercise the (ABORT,<message>) hot comment:
numbered, named and INI parameter substitution in message
case preservation
unwind from oword flow

View File

@@ -0,0 +1,10 @@
executing
1 N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
2 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
3 N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
4 N..... SET_XY_ROTATION(0.0000)
5 N..... SET_FEED_REFERENCE(CANON_XYZ)
6 N..... ON_RESET()
MixedCase param42=20.000000 named=4711.000000 INI=3.140000
(abort, MixedCase param42=#42 named=#<named> INI=#<_ini[a]value>)
7 N..... ON_RESET()

View File

@@ -0,0 +1,8 @@
[RS274NGC]
# enable #<_ini[section]name> expansion
INI_VARS = 1
# test ini variable expansion in (ABORT, text) comment
[A]
VALUE= 3.14

View File

@@ -0,0 +1,10 @@
#42 = 0
#<named> = 4711
o100 while [#42 lt 100]
o200 if [#42 eq 20]
(abort, MixedCase param42=#42 named=#<named> INI=#<_ini[a]value>)
o200 endif
#42 = [#42 + 1]
o100 endwhile
M2

View File

@@ -0,0 +1,5 @@
#!/bin/bash
export PYTHONUNBUFFERED=1
rs274 -n 2 -i test.ini -g test.ngc 2>&1
exit 0

View File

@@ -0,0 +1,3 @@
Tests for bug 3420655 (http://sourceforge.net/tracker/?func=detail&atid=106744&aid=3420655&group_id=6744)

View File

@@ -0,0 +1,7 @@
o102 do
(print,@start of do-while-loop)
o102 break
(print,@end of do-while-loop)
o102 while [1]
(print,@endsub)
M2

View File

@@ -0,0 +1,21 @@
N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_REFERENCE(CANON_XYZ)
N..... ON_RESET()
N..... MESSAGE("must-execute-outer")
N..... MESSAGE("must-execute-nested")
N..... MESSAGE("must-execute-inner")
N..... MESSAGE("post-inner-while")
N..... MESSAGE("post-nested-while")
N..... MESSAGE("post-outer-while")
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_MODE(0, 0)
N..... SET_FEED_RATE(0.0000)
N..... STOP_SPINDLE_TURNING(0)
N..... SET_SPINDLE_MODE(0 0.0000)
N..... PROGRAM_END()
N..... ON_RESET()
N..... ON_RESET()

View File

@@ -0,0 +1,30 @@
#<one_pass> = 0
o100 do
(debug,must-execute-outer)
#<one_pass> = [#<one_pass> + 1]
#<two_pass> = 0
o200 do
(debug,must-execute-nested)
#<two_pass> = [#<two_pass> + 1]
#<three_pass> = 0
o300 do
(debug,must-execute-inner)
#<three_pass> = [#<three_pass> + 1]
o300 break
(debug,do-not-execute-inner)
o300 while [#<three_pass> LT 3]
(debug,post-inner-while)
o200 break
(debug,do-not-execute-nested)
o200 while [#<two_pass> LT 3]
(debug,post-nested-while)
o100 break
(debug,do-not-execute-outer)
o100 while [#<one_pass> LT 3]
(debug,post-outer-while)
M2

View File

@@ -0,0 +1,3 @@
#!/bin/bash
rs274 -g test.ngc | awk '{$1=""; print}'
exit "${PIPESTATUS[0]}"

View File

@@ -0,0 +1 @@
Test that EXISTS[] works as desired

View File

@@ -0,0 +1,18 @@
N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_REFERENCE(CANON_XYZ)
N..... ON_RESET()
N..... STRAIGHT_TRAVERSE(1.0000, 0.0000, 1.0000, 0.0000, 0.0000, 0.0000)
N..... COMMENT("comment")
N..... STRAIGHT_TRAVERSE(1.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_MODE(0, 0)
N..... SET_FEED_RATE(0.0000)
N..... STOP_SPINDLE_TURNING(0)
N..... SET_SPINDLE_MODE(0 0.0000)
N..... PROGRAM_END()
N..... ON_RESET()
N..... ON_RESET()

View File

@@ -0,0 +1,7 @@
#<a>=999
G0 X EXISTS[#1] Y EXISTS[#99999] Z EXISTS[#<a>] A EXISTS[#<b>] ; comment
#1=2
#2=99999
G0 X EXISTS[##1] Y EXISTS[##2] Z EXISTS[###1] (comment)
M2

View File

@@ -0,0 +1,3 @@
#!/bin/bash
rs274 -g test.ngc | awk '{$1=""; print}'
exit "${PIPESTATUS[0]}"

View File

@@ -0,0 +1 @@
Test that line numbers like Ndddd.ddd are accepted too

View File

@@ -0,0 +1,18 @@
N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_REFERENCE(CANON_XYZ)
N..... ON_RESET()
N..... SET_SPINDLE_SPEED(0, 300.0000)
N1234 SET_SPINDLE_SPEED(0, 600.0000)
N4567 SET_SPINDLE_SPEED(0, 1200.0000)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_MODE(0, 0)
N..... SET_FEED_RATE(0.0000)
N..... STOP_SPINDLE_TURNING(0)
N..... SET_SPINDLE_MODE(0 0.0000)
N..... PROGRAM_END()
N..... ON_RESET()
N..... ON_RESET()

View File

@@ -0,0 +1,4 @@
S300
N1234 S600
N4567.789 S1200
M2

View File

@@ -0,0 +1,3 @@
#!/bin/bash
rs274 -g test.ngc | awk '{$1=""; print}'
exit "${PIPESTATUS[0]}"

View File

@@ -0,0 +1,23 @@
N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_REFERENCE(CANON_XYZ)
N..... ON_RESET()
N..... SET_MOTION_CONTROL_MODE(CANON_CONTINUOUS, 0.000000)
N..... SET_NAIVECAM_TOLERANCE(0.0000)
N..... SET_MOTION_CONTROL_MODE(CANON_CONTINUOUS, 1.000000)
N..... SET_NAIVECAM_TOLERANCE(1.0000)
N..... SET_MOTION_CONTROL_MODE(CANON_CONTINUOUS, 1.000000)
N..... SET_NAIVECAM_TOLERANCE(2.0000)
N..... SET_MOTION_CONTROL_MODE(CANON_EXACT_PATH)
N..... SET_MOTION_CONTROL_MODE(CANON_EXACT_STOP)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_MODE(0, 0)
N..... SET_FEED_RATE(0.0000)
N..... STOP_SPINDLE_TURNING(0)
N..... SET_SPINDLE_MODE(0 0.0000)
N..... PROGRAM_END()
N..... ON_RESET()
N..... ON_RESET()

View File

@@ -0,0 +1,6 @@
G64
G64P1
G64P1Q2
G61
G61.1
M2

View File

@@ -0,0 +1,3 @@
#!/bin/bash
rs274 -g test.ngc | awk '{$1=""; print}'
exit "${PIPESTATUS[0]}"

View File

@@ -0,0 +1,3 @@
assigning to an inifile variable reference must fail:
#<_ini[section]name> = <value>

View File

@@ -0,0 +1,10 @@
executing
1 N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
2 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
3 N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
4 N..... SET_XY_ROTATION(0.0000)
5 N..... SET_FEED_REFERENCE(CANON_XYZ)
6 N..... ON_RESET()
Cannot assign to read-only parameter #<_ini[vars]toolchange_x>
#<_ini[vars]toolchange_x> = 3.1415
7 N..... ON_RESET()

View File

@@ -0,0 +1,9 @@
[EMC]
DEBUG=0
LOG_LEVEL=0
[RS274NGC]
INI_VARS = 1
[VARS]
TOOLCHANGE_X = 10

View File

@@ -0,0 +1,3 @@
#<_ini[vars]toolchange_x> = 3.1415
(debug, notreached: #<_ini[vars]toolchange_x>)
M2

View File

@@ -0,0 +1,8 @@
#!/bin/bash
export PYTHONUNBUFFERED=1
if ! rs274 -i test.ini -g test.ngc 2>&1; then
# expected to fail
exit 0
fi
exit 1

View File

@@ -0,0 +1,5 @@
named parameters can now reference INI variables; they are retrieved on demand and
cached as global read-only parameters.
Syntax: #<_ini[section]name>

View File

@@ -0,0 +1,13 @@
executing
1 N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
2 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
3 N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
4 N..... SET_XY_ROTATION(0.0000)
5 N..... SET_FEED_REFERENCE(CANON_XYZ)
6 N..... ON_RESET()
7 N..... STRAIGHT_TRAVERSE(10.0000, 20.0000, 30.0000, 0.0000, 0.0000, 0.0000)
8 N..... MESSAGE(" position now: 10.000000 20.000000 30.000000")
9 N..... MESSAGE(" not in INI: ######")
Named parameter #<_ini[nosuchsection]nosuchname> not defined
#4711 = #<_iNI[nosuchsection]nosuchname>
10 N..... ON_RESET()

View File

@@ -0,0 +1,12 @@
[EMC]
DEBUG=0
LOG_LEVEL=0
[RS274NGC]
INI_VARS = 1
[VARS]
TOOLCHANGE_X = 10
TOOLCHANGE_Y = 20
TOOLCHANGE_Z = 30

View File

@@ -0,0 +1,9 @@
G53 G0 x#<_ini[vars]toolchange_x> y#<_InI[vars]toolchange_y> z#<_INi[vars]toolchange_z>
(debug, position now: #<_x> #<_y> #<_z>)
(debug, not in INI: #<_iNi[nosuchsection]nosuchname>)
; now fail referencing an undefined INI variable:
#4711 = #<_iNI[nosuchsection]nosuchname>
M2

View File

@@ -0,0 +1,5 @@
#!/bin/bash
export PYTHONUNBUFFERED=1
rs274 -i test.ini -g test.ngc 2>&1
# this is expected to fail on the undefined INI var
exit 0

View File

@@ -0,0 +1,2 @@
exercise M19 and possible parameters

View File

@@ -0,0 +1,20 @@
N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_REFERENCE(CANON_XYZ)
N..... ON_RESET()
N..... ORIENT_SPINDLE(0, 87.0000, 0)
N..... SPINDLE.0.WAIT_ORIENT_COMPLETE(2.0000)
N..... ORIENT_SPINDLE(0, 42.0000, 1)
N..... ORIENT_SPINDLE(0, 132.0000, 0)
N..... ORIENT_SPINDLE(0, 132.0000, 1)
N..... SPINDLE.0.WAIT_ORIENT_COMPLETE(1.0000)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_MODE(0, 0)
N..... SET_FEED_RATE(0.0000)
N..... STOP_SPINDLE_TURNING(0)
N..... SET_SPINDLE_MODE(0 0.0000)
N..... PROGRAM_END()
N..... ON_RESET()

View File

@@ -0,0 +1,2 @@
[RS274NGC]
ORIENT_OFFSET = 42.0

View File

@@ -0,0 +1,8 @@
M19
M19 R45 Q2
M19 P1
M19 R90 P0
M19 R90 P1
M19 Q1
M2

View File

@@ -0,0 +1,3 @@
#!/bin/bash
rs274 -n 0 -i test.ini -g test.ngc | awk '{$1=""; print}'
exit "${PIPESTATUS[0]}"

View File

@@ -0,0 +1,49 @@
N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_REFERENCE(CANON_XYZ)
N..... ON_RESET()
N..... COMMENT("A simple O sub example ")
N..... SET_FEED_RATE(40.0000)
N..... STRAIGHT_TRAVERSE(0.0000, 0.0000, 0.2500, 0.0000, 0.0000, 0.0000)
N..... COMMENT("interpreter: distance mode changed to incremental")
N..... STRAIGHT_TRAVERSE(1.0000, 0.0000, 0.2500, 0.0000, 0.0000, 0.0000)
N..... COMMENT("interpreter: distance mode changed to absolute")
N..... COMMENT("interpreter: retract mode set to r_plane")
N..... SET_MOTION_CONTROL_MODE(CANON_EXACT_PATH)
N..... STRAIGHT_TRAVERSE(1.0000, 0.0000, 0.2500, 0.0000, 0.0000, 0.0000)
N..... STRAIGHT_FEED(1.0000, 0.0000, -1.0000, 0.0000, 0.0000, 0.0000)
N..... STRAIGHT_TRAVERSE(1.0000, 0.0000, 0.2500, 0.0000, 0.0000, 0.0000)
N..... SET_MOTION_CONTROL_MODE(CANON_CONTINUOUS, 0.000000)
N..... SET_NAIVECAM_TOLERANCE(0.0000)
N..... COMMENT("interpreter: distance mode changed to incremental")
N..... STRAIGHT_TRAVERSE(2.0000, 0.0000, 0.2500, 0.0000, 0.0000, 0.0000)
N..... COMMENT("interpreter: distance mode changed to absolute")
N..... COMMENT("interpreter: retract mode set to r_plane")
N..... SET_MOTION_CONTROL_MODE(CANON_EXACT_PATH)
N..... STRAIGHT_TRAVERSE(2.0000, 0.0000, 0.2500, 0.0000, 0.0000, 0.0000)
N..... STRAIGHT_FEED(2.0000, 0.0000, -1.0000, 0.0000, 0.0000, 0.0000)
N..... STRAIGHT_TRAVERSE(2.0000, 0.0000, 0.2500, 0.0000, 0.0000, 0.0000)
N..... SET_MOTION_CONTROL_MODE(CANON_CONTINUOUS, 0.000000)
N..... SET_NAIVECAM_TOLERANCE(0.0000)
N..... COMMENT("interpreter: distance mode changed to incremental")
N..... STRAIGHT_TRAVERSE(3.0000, 0.0000, 0.2500, 0.0000, 0.0000, 0.0000)
N..... COMMENT("interpreter: distance mode changed to absolute")
N..... COMMENT("interpreter: retract mode set to r_plane")
N..... SET_MOTION_CONTROL_MODE(CANON_EXACT_PATH)
N..... STRAIGHT_TRAVERSE(3.0000, 0.0000, 0.2500, 0.0000, 0.0000, 0.0000)
N..... STRAIGHT_FEED(3.0000, 0.0000, -1.0000, 0.0000, 0.0000, 0.0000)
N..... STRAIGHT_TRAVERSE(3.0000, 0.0000, 0.2500, 0.0000, 0.0000, 0.0000)
N..... SET_MOTION_CONTROL_MODE(CANON_CONTINUOUS, 0.000000)
N..... SET_NAIVECAM_TOLERANCE(0.0000)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_MODE(0, 0)
N..... SET_FEED_RATE(0.0000)
N..... STOP_SPINDLE_TURNING(0)
N..... SET_SPINDLE_MODE(0 0.0000)
N..... PALLET_SHUTTLE()
N..... PROGRAM_END()
N..... ON_RESET()
N..... ON_RESET()

View File

@@ -0,0 +1,13 @@
%
( A simple O sub example )
F40
G90 G0 X0 Y0 Z0.25
M98 P1 L3
M30
O1
G91 G0 X1 ; Jog 1" along X (relative)
G90 G99 G81 Z-1.0 R0.25 ; Drill to Z-1.0
M99
%

View File

@@ -0,0 +1,3 @@
#!/bin/bash
rs274 -g test.ngc | awk '{$1=""; print}'
exit "${PIPESTATUS[0]}"

View File

@@ -0,0 +1,25 @@
N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_REFERENCE(CANON_XYZ)
N..... ON_RESET()
N..... COMMENT("Fanuc params have global scope; rs274ngc params #1..#30 have local scope ")
MAIN/FANUC: PRE-M98: 1=42.010000; 30=42.300000; 31=42.310000
O1: START: 1=42.010000; 30=42.300000; 31=42.310000
O1: END: 1=13.010000; 30=13.300000; 31=13.310000
MAIN/FANUC: POST-M98: 1=13.010000; 30=13.300000; 31=13.310000
MAIN/RS274NGC: PRE-O-CALL: 1=42.010000; 30=42.300000; 31=42.310000
O2: START: 1=0.000000; 30=0.000000; 31=42.310000
O2: END: 1=13.010000; 30=13.300000; 31=13.310000
MAIN/RS274NGC: POST-O-CALL: 1=42.010000; 30=42.300000; 31=13.310000
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_MODE(0, 0)
N..... SET_FEED_RATE(0.0000)
N..... STOP_SPINDLE_TURNING(0)
N..... SET_SPINDLE_MODE(0 0.0000)
N..... PALLET_SHUTTLE()
N..... PROGRAM_END()
N..... ON_RESET()
N..... ON_RESET()

View File

@@ -0,0 +1,37 @@
%
( Fanuc params have global scope; rs274ngc params #1..#30 have local scope )
; Fanuc-style: Test that all params are globally changed
#1 = 42.01
#30 = 42.30
#31 = 42.31
(PRINT,Q MAIN/FANUC: PRE-M98: 1=#1; 30=#30; 31=#31)
M98 P1
(PRINT,Q MAIN/FANUC: POST-M98: 1=#1; 30=#30; 31=#31)
; RS274NGC-style: Test that params #1..#30 are not globally changed
#1 = 42.01
#30 = 42.30
#31 = 42.31
(PRINT,Q MAIN/RS274NGC: PRE-O-CALL: 1=#1; 30=#30; 31=#31)
O2 call
(PRINT,Q MAIN/RS274NGC: POST-O-CALL: 1=#1; 30=#30; 31=#31)
M30
O1 ; Fanuc-style
(PRINT,Q O1: START: 1=#1; 30=#30; 31=#31)
#1 = 13.01
#30 = 13.30
#31 = 13.31
(PRINT,Q O1: END: 1=#1; 30=#30; 31=#31)
M99
O2 sub ; rs274ngc-style
(PRINT,Q O2: START: 1=#1; 30=#30; 31=#31)
#1 = 13.01
#30 = 13.30
#31 = 13.31
(PRINT,Q O2: END: 1=#1; 30=#30; 31=#31)
O2 endsub
%

View File

@@ -0,0 +1,3 @@
#!/bin/bash
rs274 -g test.ngc | awk '{$1=""; print}'
exit "${PIPESTATUS[0]}"

View File

@@ -0,0 +1,49 @@
N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_REFERENCE(CANON_XYZ)
N..... ON_RESET()
N..... COMMENT("A nested Fanuc subroutine example ")
MAIN BEGIN: 1=0.000000
>>>> LOOP [O2.O1]: 0.100000
>>>> LOOP [O2.O1]: 0.200000
>>>> LOOP [O2.O1]: 0.300000
>>>> LOOP [O2.O1]: 0.400000
>>>> LOOP [O2.O1]: 0.500000
O2 END: 1=1.000000
>>>> LOOP [O2.O1]: 1.100000
>>>> LOOP [O2.O1]: 1.200000
>>>> LOOP [O2.O1]: 1.300000
>>>> LOOP [O2.O1]: 1.400000
>>>> LOOP [O2.O1]: 1.500000
O2 END: 1=2.000000
>>>> LOOP [O2.O1]: 2.100000
>>>> LOOP [O2.O1]: 2.200000
>>>> LOOP [O2.O1]: 2.300000
>>>> LOOP [O2.O1]: 2.400000
>>>> LOOP [O2.O1]: 2.500000
O2 END: 1=3.000000
>>>> LOOP [O2.O1]: 3.100000
>>>> LOOP [O2.O1]: 3.200000
>>>> LOOP [O2.O1]: 3.300000
>>>> LOOP [O2.O1]: 3.400000
>>>> LOOP [O2.O1]: 3.500000
O2 END: 1=4.000000
>>>> LOOP [O2.O1]: 4.100000
>>>> LOOP [O2.O1]: 4.200000
>>>> LOOP [O2.O1]: 4.300000
>>>> LOOP [O2.O1]: 4.400000
>>>> LOOP [O2.O1]: 4.500000
O2 END: 1=5.000000
MAIN END: 1=5.000000
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_MODE(0, 0)
N..... SET_FEED_RATE(0.0000)
N..... STOP_SPINDLE_TURNING(0)
N..... SET_SPINDLE_MODE(0 0.0000)
N..... PALLET_SHUTTLE()
N..... PROGRAM_END()
N..... ON_RESET()
N..... ON_RESET()

View File

@@ -0,0 +1,20 @@
%
( A nested Fanuc subroutine example )
#1 = 0
(PRINT,X MAIN BEGIN: 1=#1)
M98 P2 L5
(PRINT,X MAIN END: 1=#1)
M30
O2
M98 P1 L5
#1 = [FIX[#1] + 1]
(PRINT,X O2 END: 1=#1)
M99
O1
#1 = [#1 + 0.1]
(PRINT,X >>>> LOOP [O2.O1]: #1)
M99
%

View File

@@ -0,0 +1,3 @@
#!/bin/bash
rs274 -g test.ngc | awk '{$1=""; print}'
exit "${PIPESTATUS[0]}"

View File

@@ -0,0 +1,18 @@
N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_REFERENCE(CANON_XYZ)
N..... ON_RESET()
N..... COMMENT("Fanuc-style subs may follow main program ")
IN O1
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_MODE(0, 0)
N..... SET_FEED_RATE(0.0000)
N..... STOP_SPINDLE_TURNING(0)
N..... SET_SPINDLE_MODE(0 0.0000)
N..... PALLET_SHUTTLE()
N..... PROGRAM_END()
N..... ON_RESET()
N..... ON_RESET()

View File

@@ -0,0 +1,10 @@
%
( Fanuc-style subs may follow main program )
M98 P1
M30
O1
(PRINT,X IN O1)
M99
%

View File

@@ -0,0 +1,3 @@
#!/bin/bash
rs274 -g test.ngc | awk '{$1=""; print}'
exit "${PIPESTATUS[0]}"

View File

@@ -0,0 +1,19 @@
N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_REFERENCE(CANON_XYZ)
N..... ON_RESET()
N..... COMMENT("main program")
got here
N..... COMMENT("end")
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_MODE(0, 0)
N..... SET_FEED_RATE(0.0000)
N..... STOP_SPINDLE_TURNING(0)
N..... SET_SPINDLE_MODE(0 0.0000)
N..... PALLET_SHUTTLE()
N..... PROGRAM_END()
N..... ON_RESET()
N..... ON_RESET()

View File

@@ -0,0 +1,14 @@
%
(main program)
M98 P0002
M30 (end)
O0002 (O-word begins with '0')
(PRINT,x got here)
M99
O2 (O-word does not begin with '0')
(PRINT,x ERROR: should not get here)
M99
%

View File

@@ -0,0 +1,3 @@
#!/bin/bash
rs274 -g test.ngc | awk '{$1=""; print}'
exit "${PIPESTATUS[0]}"

View File

@@ -0,0 +1,36 @@
1 N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
2 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
3 N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
4 N..... SET_XY_ROTATION(0.0000)
5 N..... SET_FEED_REFERENCE(CANON_XYZ)
6 N..... ON_RESET()
7 N..... COMMENT("test-named.ngc: Test named programs")
8 N..... COMMENT("...program body")
9 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
10 N..... SET_XY_ROTATION(0.0000)
11 N..... SET_FEED_MODE(0, 0)
12 N..... SET_FEED_RATE(0.0000)
13 N..... STOP_SPINDLE_TURNING(0)
14 N..... SET_SPINDLE_MODE(0 0.0000)
15 N..... PALLET_SHUTTLE()
16 N..... PROGRAM_END()
17 N..... ON_RESET()
18 N..... ON_RESET()
1 N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
2 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
3 N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
4 N..... SET_XY_ROTATION(0.0000)
5 N..... SET_FEED_REFERENCE(CANON_XYZ)
6 N..... ON_RESET()
7 N..... COMMENT("test-numbered.ngc: Test numbered programs")
8 N..... COMMENT("...program body")
9 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
10 N..... SET_XY_ROTATION(0.0000)
11 N..... SET_FEED_MODE(0, 0)
12 N..... SET_FEED_RATE(0.0000)
13 N..... STOP_SPINDLE_TURNING(0)
14 N..... SET_SPINDLE_MODE(0 0.0000)
15 N..... PALLET_SHUTTLE()
16 N..... PROGRAM_END()
17 N..... ON_RESET()
18 N..... ON_RESET()

View File

@@ -0,0 +1,6 @@
%
(test-named.ngc: Test named programs)
O<MyProgram>
(...program body)
M30
%

View File

@@ -0,0 +1,6 @@
%
(test-numbered.ngc: Test numbered programs)
O42
(...program body)
M30
%

View File

@@ -0,0 +1,3 @@
#!/bin/bash -e
rs274 -g test-named.ngc
rs274 -g test-numbered.ngc

View File

@@ -0,0 +1,18 @@
1 N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
2 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
3 N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
4 N..... SET_XY_ROTATION(0.0000)
5 N..... SET_FEED_REFERENCE(CANON_XYZ)
6 N..... ON_RESET()
In sub 100
In sub 200
7 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
8 N..... SET_XY_ROTATION(0.0000)
9 N..... SET_FEED_MODE(0, 0)
10 N..... SET_FEED_RATE(0.0000)
11 N..... STOP_SPINDLE_TURNING(0)
12 N..... SET_SPINDLE_MODE(0 0.0000)
13 N..... PALLET_SHUTTLE()
14 N..... PROGRAM_END()
15 N..... ON_RESET()
16 N..... ON_RESET()

View File

@@ -0,0 +1,21 @@
%
; test calling subprograms with expressions
; call sub O100: use variable in expression with rs274ngc O-sub
#2 = 10
O[#2 * 10] call
; call sub O200: use expression in M98 P-word
M98 P[5 * 5 * 2 * 2 + 100]
M30
O100 sub ; rs274ngc subroutine
(print,In sub 100)
O100 endsub
O200 ; numbered subprogram
(print,In sub 200)
M99
%

View File

@@ -0,0 +1,2 @@
#!/bin/bash -e
rs274 -g test.ngc

View File

@@ -0,0 +1,23 @@
N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_REFERENCE(CANON_XYZ)
N..... ON_RESET()
N..... MESSAGE(" native value = 1.123457")
N..... MESSAGE(" Test round to integer: 1")
N..... MESSAGE(" Test round to 4 decimals: 1.1235")
N..... MESSAGE(" Test format separate from param: The value is: 1.1235")
N..... MESSAGE(" Test round to 7 decimals: 1.1234568")
N..... MESSAGE(" native value2 = 2.345679")
N..... MESSAGE(" Test2 round all params in line to 4 decimals: The values are: 1.1235, 2.3457")
N..... MESSAGE(" Test2 only round last value to integer: The values are: 1.123457, 2")
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_MODE(0, 0)
N..... SET_FEED_RATE(0.0000)
N..... STOP_SPINDLE_TURNING(0)
N..... SET_SPINDLE_MODE(0 0.0000)
N..... PROGRAM_END()
N..... ON_RESET()
N..... ON_RESET()

View File

@@ -0,0 +1,13 @@
#<value> = 1.123456789
(DEBUG, native value = #<value>)
(DEBUG, Test round to integer: %d#<value>)
(DEBUG, Test round to 4 decimals: %f#<value>)
(DEBUG, Test format separate from param: %f The value is: #<value>)
(DEBUG, Test round to 7 decimals: %.7f#<value>)
#<value2> = 2.3456789
(DEBUG, native value2 = #<value2>)
(DEBUG, Test2 round all params in line to 4 decimals: %f The values are: #<value>, #<value2>)
(DEBUG, Test2 only round last value to integer: The values are: #<value>, %d#<value2>)
M2

View File

@@ -0,0 +1,3 @@
#!/bin/bash
rs274 -g test.ngc | awk '{$1=""; print}'
exit "${PIPESTATUS[0]}"

View File

@@ -0,0 +1 @@
test for http://sourceforge.net/p/emc/bugs/424/

View File

@@ -0,0 +1,17 @@
N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_REFERENCE(CANON_XYZ)
N..... ON_RESET()
N..... USE_LENGTH_UNITS(CANON_UNITS_INCHES)
N..... STRAIGHT_TRAVERSE(2.0000, 3.0000, 4.0000, 0.0000, 0.0000, 0.0000)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_MODE(0, 0)
N..... SET_FEED_RATE(0.0000)
N..... STOP_SPINDLE_TURNING(0)
N..... SET_SPINDLE_MODE(0 0.0000)
N..... PROGRAM_END()
N..... ON_RESET()
N..... ON_RESET()

View File

@@ -0,0 +1,6 @@
g20
#<a>=2
#atan[1]/[1]=3
#3=4
g0 x#<a> y#45 z#3
m2

View File

@@ -0,0 +1,3 @@
#!/bin/bash
rs274 -g test.ngc | awk '{$1=""; print}'
exit "${PIPESTATUS[0]}"

View File

@@ -0,0 +1,8 @@
1 N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
2 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
3 N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
4 N..... SET_XY_ROTATION(0.0000)
5 N..... SET_FEED_REFERENCE(CANON_XYZ)
6 N..... ON_RESET()
7 N..... COMMENT("Test: nested sub definition inside named sub should error")
8 N..... ON_RESET()

View File

@@ -0,0 +1,7 @@
o<nested> sub
o100 sub
(DEBUG, inner o100: #1 #2 #3)
o100 endsub
o100 call [4] [5] [6]
o<nested> endsub
M2

View File

@@ -0,0 +1,2 @@
[RS274NGC]
SUBROUTINE_PATH=subs

View File

@@ -0,0 +1,3 @@
(Test: nested sub definition inside named sub should error)
o<nested> call [7] [8] [9]
M2

View File

@@ -0,0 +1,4 @@
#!/bin/bash -e
# Nested sub definition inside a called named sub must produce an error.
# Regression test for LinuxCNC/linuxcnc#3880.
! rs274 -g -i test.ini test.ngc

View File

@@ -0,0 +1,9 @@
1 N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
2 N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
3 N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
4 N..... SET_XY_ROTATION(0.0000)
5 N..... SET_FEED_REFERENCE(CANON_XYZ)
6 N..... ON_RESET()
7 N..... COMMENT("Test: numbered sub after named endsub in same file should error")
8 N..... MESSAGE(" sequential main: 7.000000 8.000000 9.000000")
9 N..... ON_RESET()

View File

@@ -0,0 +1,9 @@
o<sequential> sub
(DEBUG, sequential main: #1 #2 #3)
o200 call [4] [5] [6]
o<sequential> endsub
o200 sub
(DEBUG, o200 helper: #1 #2 #3)
o200 endsub
M2

View File

@@ -0,0 +1,2 @@
[RS274NGC]
SUBROUTINE_PATH=subs

View File

@@ -0,0 +1,3 @@
(Test: numbered sub after named endsub in same file should error)
o<sequential> call [7] [8] [9]
M2

View File

@@ -0,0 +1,5 @@
#!/bin/bash -e
# Numbered sub called from within a named sub file, where no matching
# file exists, must produce an error (forward-seek blocked).
# Regression test for LinuxCNC/linuxcnc#3880.
! rs274 -g -i test.ini test.ngc

View File

@@ -0,0 +1 @@
test for http://sourceforge.net/p/emc/bugs/315/, first case

View File

@@ -0,0 +1,17 @@
N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_REFERENCE(CANON_XYZ)
N..... ON_RESET()
N..... STRAIGHT_TRAVERSE(2.0000, 2.0000, 2.0000, 0.0000, 0.0000, 0.0000)
N..... MESSAGE("executing this one")
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_MODE(0, 0)
N..... SET_FEED_RATE(0.0000)
N..... STOP_SPINDLE_TURNING(0)
N..... SET_SPINDLE_MODE(0 0.0000)
N..... PROGRAM_END()
N..... ON_RESET()
N..... ON_RESET()

View File

@@ -0,0 +1,18 @@
o1 sub
g0 x1y1z1
(debug,not executing this one)
o1 endsub
o2 sub
g0 x2y2z2
(debug,executing this one)
o2 endsub
o<multipass> sub
#<sub> = 2
o#<sub> call
o<multipass> endsub
o<multipass> call
m2

View File

@@ -0,0 +1,3 @@
#!/bin/bash
rs274 -g test.ngc | awk '{$1=""; print}'
exit "${PIPESTATUS[0]}"

View File

@@ -0,0 +1 @@
test for http://sourceforge.net/p/emc/bugs/315/, first case

View File

@@ -0,0 +1,18 @@
N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_REFERENCE(CANON_XYZ)
N..... ON_RESET()
N..... MESSAGE("running sub")
N..... MESSAGE("breaking out of sub")
N..... MESSAGE("done")
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_MODE(0, 0)
N..... SET_FEED_RATE(0.0000)
N..... STOP_SPINDLE_TURNING(0)
N..... SET_SPINDLE_MODE(0 0.0000)
N..... PROGRAM_END()
N..... ON_RESET()
N..... ON_RESET()

View File

@@ -0,0 +1,14 @@
o123 sub
o200 if [5 le 0.01]
o123 return
o200 endif
o124 while [1]
(debug,breaking out of sub)
o124 break
o124 endwhile
o123 endsub
(debug,running sub)
o123 call
(debug,done)
m02

View File

@@ -0,0 +1,3 @@
#!/bin/bash
rs274 -g test.ngc | awk '{$1=""; print}'
exit "${PIPESTATUS[0]}"

View File

@@ -0,0 +1 @@
Tests for proper unwind in a failed external o-word procedure.

View File

@@ -0,0 +1,16 @@
N..... USE_LENGTH_UNITS(CANON_UNITS_MM)
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_REFERENCE(CANON_XYZ)
N..... ON_RESET()
N..... MESSAGE(" pre divide-by-zero")
N..... MESSAGE(" pre divide-by-zero")
N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
N..... SET_XY_ROTATION(0.0000)
N..... SET_FEED_MODE(0, 0)
N..... SET_FEED_RATE(0.0000)
N..... STOP_SPINDLE_TURNING(0)
N..... SET_SPINDLE_MODE(0 0.0000)
N..... PROGRAM_END()
N..... ON_RESET()

View File

@@ -0,0 +1,9 @@
(debug, pre <fail>)
o<fail> sub
(debug, pre divide-by-zero)
#100 = [1/0]
(debug, post divide-by-zero)
o<fail> endsub
(debug, post <fail>)
m2

Some files were not shown because too many files have changed in this diff Show More