Import LinuxCNC source tree

This commit is contained in:
Wang Dequan
2026-08-20 06:17:39 +08:00
commit 2c814634c3
9429 changed files with 10556013 additions and 0 deletions

View File

@@ -0,0 +1,5 @@
Sample config to show the usage of halui & pyvcp.
pyvcp = HAL Virtual Control Panel is a way to define virtual buttons & sliders, they will be instantiated as buttons on a GUI, but will behave just like real hardware. Check the Integrators Manual for additional details.
halui = HAL User Interface is a tool to allow LinuxCNC to be controlled by hardware panels (knobs, switches, leds, etc).

View File

@@ -0,0 +1,110 @@
[EMC]
VERSION = 1.1
MACHINE = LinuxCNC-HALUI-PYVCP
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
DEBUG = 0
[DISPLAY]
DISPLAY = axis
CYCLE_TIME = 0.100
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.2
MIN_SPINDLE_OVERRIDE = 0.6
MAX_SPINDLE_OVERRIDE = 1.2
PROGRAM_PREFIX = ../../nc_files/
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
[RS274NGC]
PARAMETER_FILE = sim.var
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
BASE_PERIOD = 0
SERVO_PERIOD = 1000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[HAL]
HALFILE = core_sim.hal
HALFILE = pyvcp.hal
HALFILE = simulated_home.hal
HALUI = halui
[HALUI]
MDI_COMMAND = G0 G53 Z0
MDI_COMMAND = G28
[TRAJ]
COORDINATES = X Y Z
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 0.0167
MAX_LINEAR_VELOCITY = 1.2
DEFAULT_LINEAR_ACCELERATION = 20.0
MAX_LINEAR_ACCELERATION = 20.0
[EMCIO]
TOOL_TABLE = sim.tbl
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[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_OFFSET = 0.0
HOME_SEARCH_VEL = 20.0
HOME_LATCH_VEL = 20.0
HOME_SEQUENCE = 1
[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_OFFSET = 0.0
HOME_SEARCH_VEL = 20.0
HOME_LATCH_VEL = 20.0
HOME_SEQUENCE = 1
[AXIS_Z]
MIN_LIMIT = -2.0
MAX_LIMIT = 4.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 = -2.0
MAX_LIMIT = 4.0
HOME_OFFSET = 1.0
HOME_SEARCH_VEL = 20.0
HOME_LATCH_VEL = 20.0
HOME_SEQUENCE = 0

View File

@@ -0,0 +1,96 @@
loadusr -W pyvcp -c pyvcp vcp.xml
net estop-activate pyvcp.estop.activate halui.estop.activate
net estop-reset pyvcp.estop.reset halui.estop.reset
net estop-is-activated pyvcp.estop.is-activated halui.estop.is-activated
net machine-off pyvcp.machine.off halui.machine.off
net machine-on pyvcp.machine.on halui.machine.on
net machine-is-on pyvcp.machine.is-on halui.machine.is-on
net abort pyvcp.abort halui.abort
net run pyvcp.program.run halui.program.run
net pause pyvcp.program.pause halui.program.pause
net resume pyvcp.program.resume halui.program.resume
net step pyvcp.program.step halui.program.step
net mist-on pyvcp.mist.on halui.mist.on
net mist-off pyvcp.mist.off halui.mist.off
net flood-on pyvcp.flood.on halui.flood.on
net flood-off pyvcp.flood.off halui.flood.off
net mist-is-on pyvcp.mist.is-on halui.mist.is-on
net flood-is-on pyvcp.flood.is-on halui.flood.is-on
net mode-manual pyvcp.mode.manual halui.mode.manual
net mode-auto pyvcp.mode.auto halui.mode.auto
net mode-mdi pyvcp.mode.mdi halui.mode.mdi
net spindle-start pyvcp.spindle.on halui.spindle.0.start
net spindle-stop pyvcp.spindle.off halui.spindle.0.stop
net spindle-forward pyvcp.spindle.forward halui.spindle.0.forward
net spindle-reverse pyvcp.spindle.reverse halui.spindle.0.reverse
net spindle-increase pyvcp.spindle.increase halui.spindle.0.increase
net spindle-decrease pyvcp.spindle.decrease halui.spindle.0.decrease
net mode-is-manual pyvcp.mode.is-manual halui.mode.is-manual
net mode-is-auto pyvcp.mode.is-auto halui.mode.is-auto
net mode-is-mdi pyvcp.mode.is-mdi halui.mode.is-mdi
net spindle-is-on pyvcp.spindle.is-on halui.spindle.0.is-on
net spindle-is-forward pyvcp.spindle.is-forward halui.spindle.0.runs-forward
net spindle-is-backward pyvcp.spindle.is-reverse halui.spindle.0.runs-backward
net j0-home pyvcp.x.home halui.joint.0.home
net j0-is-homed pyvcp.x.is-homed halui.joint.0.is-homed
net j0-min-hard pyvcp.x.min-hard halui.joint.0.on-hard-min-limit
net j0-min-soft pyvcp.x.min-soft halui.joint.0.on-soft-min-limit
net j0-max-soft pyvcp.x.max-soft halui.joint.0.on-soft-max-limit
net j0-max-hard pyvcp.x.max-hard halui.joint.0.on-hard-max-limit
net j0-has-fault pyvcp.x.has-fault halui.joint.0.has-fault
net j0-minus pyvcp.jog-x- halui.joint.0.minus halui.axis.x.minus
net j0-plus pyvcp.jog-x+ halui.joint.0.plus halui.axis.x.plus
net j1-home pyvcp.y.home halui.joint.1.home
net j1-is-homed pyvcp.y.is-homed halui.joint.1.is-homed
net j1-min-hard pyvcp.y.min-hard halui.joint.1.on-hard-min-limit
net j1-min-soft pyvcp.y.min-soft halui.joint.1.on-soft-min-limit
net j1-max-soft pyvcp.y.max-soft halui.joint.1.on-soft-max-limit
net j1-max-hard pyvcp.y.max-hard halui.joint.1.on-hard-max-limit
net j1-has-fault pyvcp.y.has-fault halui.joint.1.has-fault
net j1-minus pyvcp.jog-y- halui.joint.1.minus halui.axis.y.minus
net j1-plus pyvcp.jog-y+ halui.joint.1.plus halui.axis.y.plus
net j2-home pyvcp.z.home halui.joint.2.home
net j2-is-homed pyvcp.z.is-homed halui.joint.2.is-homed
net j2-min-hard pyvcp.z.min-hard halui.joint.2.on-hard-min-limit
net j2-min-soft pyvcp.z.min-soft halui.joint.2.on-soft-min-limit
net j2-max-soft pyvcp.z.max-soft halui.joint.2.on-soft-max-limit
net j2-max-hard pyvcp.z.max-hard halui.joint.2.on-hard-max-limit
net j2-has-fault pyvcp.z.has-fault halui.joint.2.has-fault
net j2-minus pyvcp.jog-z- halui.joint.2.minus halui.axis.z.minus
net j2-plus pyvcp.jog-z+ halui.joint.2.plus halui.axis.z.plus
net fo-increase pyvcp.feed-override+ halui.feed-override.increase
net fo-decrease pyvcp.feed-override- halui.feed-override.decrease
net fo-value pyvcp.feed-override.value halui.feed-override.value
net so-increase pyvcp.spindle-override+ halui.spindle.0.override.increase
net so-decrease pyvcp.spindle-override- halui.spindle.0.override.decrease
net so-value pyvcp.spindle-override.value halui.spindle.0.override.value
net os-on pyvcp.optional-stop.on halui.program.optional-stop.on
net os-off pyvcp.optional-stop.off halui.program.optional-stop.off
net os-is-on pyvcp.optional-stop.is-on halui.program.optional-stop.is-on
net bd-on pyvcp.block-delete.on halui.program.block-delete.on
net bd-off pyvcp.block-delete.off halui.program.block-delete.off
net bd-is-on pyvcp.block-delete.is-on halui.program.block-delete.is-on
#net probe-button pyvcp.probe motion.probe-input
net quill-up pyvcp.quillup halui.mdi-command-00
net reference-pos pyvcp.referencepos halui.mdi-command-01
net jogspeed pyvcp.jog-speed halui.joint.jog-speed halui.axis.jog-speed

View File

@@ -0,0 +1,4 @@
T1 P1 D0.125000 Z+0.511000 ;1/8 end mill
T2 P2 D0.062500 Z+0.100000 ;1/16 end mill
T3 P3 D0.201000 Z+1.273000 ;#7 tap drill
T99999 P99999 Z+0.100000 ;big tool number

View File

@@ -0,0 +1,532 @@
<?xml version='1.0' encoding='UTF-8'?>
<pyvcp>
<hbox>
<labelframe text="Machine">
<hbox>
<button>
<halpin>"machine.on"</halpin>
<text>"ON"</text>
<justify>"center"</justify>
</button>
<button>
<halpin>"machine.off"</halpin>
<text>"OFF"</text>
<justify>"center"</justify>
</button>
</hbox>
<hbox>
<label><text>"Machine on: "</text></label>
<led>
<halpin>"machine.is-on"</halpin>
<size>20</size>
<on_color>"green"</on_color>
<off_color>"black"</off_color>
</led>
</hbox>
</labelframe>
<labelframe text="Estop">
<hbox>
<button>
<halpin>"estop.activate"</halpin>
<text>"Act"</text>
<justify>"center"</justify>
</button>
<button>
<halpin>"estop.reset"</halpin>
<text>"Reset"</text>
<justify>"center"</justify>
</button>
</hbox>
<hbox>
<label><text>"ESTOP: "</text></label>
<led>
<halpin>"estop.is-activated"</halpin>
<size>20</size>
<on_color>"red"</on_color>
<off_color>"green"</off_color>
</led>
</hbox>
</labelframe>
</hbox>
<hbox>
<labelframe text="Mode">
<hbox>
<vbox>
<button>
<halpin>"mode.manual"</halpin>
<text>"Man"</text>
<justify>"center"</justify>
</button>
<led>
<halpin>"mode.is-manual"</halpin>
<size>20</size>
<on_color>"blue"</on_color>
<off_color>"black"</off_color>
</led>
</vbox>
<vbox>
<button>
<halpin>"mode.auto"</halpin>
<text>"Auto"</text>
<justify>"center"</justify>
</button>
<led>
<halpin>"mode.is-auto"</halpin>
<size>20</size>
<on_color>"blue"</on_color>
<off_color>"black"</off_color>
</led>
</vbox>
<vbox>
<button>
<halpin>"mode.mdi"</halpin>
<text>"MDI"</text>
<justify>"center"</justify>
</button>
<led>
<halpin>"mode.is-mdi"</halpin>
<size>20</size>
<on_color>"blue"</on_color>
<off_color>"black"</off_color>
</led>
</vbox>
</hbox>
</labelframe>
<button>
<halpin>"abort"</halpin>
<text>"Abort"</text>
<justify>"center"</justify>
</button>
</hbox>
<labelframe text="Program actions">
<hbox>
<button>
<halpin>"program.run"</halpin>
<text>"Run"</text>
<justify>"center"</justify>
</button>
<button>
<halpin>"program.pause"</halpin>
<text>"Pause"</text>
<justify>"center"</justify>
</button>
<button>
<halpin>"program.step"</halpin>
<text>"Step"</text>
<justify>"center"</justify>
</button>
<button>
<halpin>"program.resume"</halpin>
<text>"Resume"</text>
<justify>"center"</justify>
</button>
</hbox>
</labelframe>
<labelframe text="IO">
<labelframe text="spindle">
<hbox>
<vbox>
<button>
<halpin>"spindle.on"</halpin>
<text>"start"</text>
<justify>"center"</justify>
</button>
<button>
<halpin>"spindle.off"</halpin>
<text>"stop"</text>
<justify>"center"</justify>
</button>
</vbox>
<vbox>
<led>
<halpin>"spindle.is-on"</halpin>
<size>20</size>
<on_color>"green"</on_color>
<off_color>"black"</off_color>
</led>
</vbox>
<vbox>
<hbox><!-- forward -->
<button>
<halpin>"spindle.forward"</halpin>
<text>"forward"</text>
<justify>"center"</justify>
</button>
<vbox>
<led>
<halpin>"spindle.is-forward"</halpin>
<size>20</size>
<on_color>"blue"</on_color>
<off_color>"black"</off_color>
</led>
</vbox>
</hbox>
<hbox><!-- reverse -->
<button>
<halpin>"spindle.reverse"</halpin>
<text>"reverse"</text>
<justify>"center"</justify>
</button>
<vbox>
<led>
<halpin>"spindle.is-reverse"</halpin>
<size>20</size>
<on_color>"blue"</on_color>
<off_color>"black"</off_color>
</led>
</vbox>
</hbox>
</vbox>
<!-- spd+ -->
<vbox>
<button>
<halpin>"spindle.increase"</halpin>
<text>"spd+"</text>
<justify>"center"</justify>
</button>
<button>
<halpin>"spindle.decrease"</halpin>
<text>"spd-"</text>
<justify>"center"</justify>
</button>
</vbox>
</hbox>
</labelframe>
<hbox>
<labelframe text="mist">
<hbox>
<vbox>
<button>
<halpin>"mist.on"</halpin>
<text>"on"</text>
<justify>"center"</justify>
</button>
<button>
<halpin>"mist.off"</halpin>
<text>"off"</text>
<justify>"center"</justify>
</button>
</vbox>
<vbox>
<led>
<halpin>"mist.is-on"</halpin>
<size>10</size>
<on_color>"green"</on_color>
<off_color>"black"</off_color>
</led>
</vbox>
</hbox>
</labelframe>
<labelframe text="flood">
<hbox>
<vbox>
<button>
<halpin>"flood.on"</halpin>
<text>"on"</text>
<justify>"center"</justify>
</button>
<button>
<halpin>"flood.off"</halpin>
<text>"off"</text>
<justify>"center"</justify>
</button>
</vbox>
<vbox>
<led>
<halpin>"flood.is-on"</halpin>
<size>10</size>
<on_color>"green"</on_color>
<off_color>"black"</off_color>
</led>
</vbox>
</hbox>
</labelframe>
</hbox>
</labelframe>
<tabs>
<names>["Axis X", "Axis Y", "Axis Z"]</names>
<vbox> <!-- Axis X -->
<hbox>
<labelframe text="home">
<vbox>
<button>
<halpin>"x.home"</halpin>
<text>"home"</text>
<justify>"center"</justify>
</button>
<led>
<halpin>"x.is-homed"</halpin>
<size>25</size>
<on_color>"green"</on_color>
<off_color>"black"</off_color>
</led>
</vbox>
</labelframe>
<labelframe text="status">
<vbox>
<hbox>
<led><halpin>"x.min-hard"</halpin><size>10</size><on_color>"red"</on_color><off_color>"green"</off_color></led>
<label><text>"min hard"</text><font>("Arial",5)</font></label>
</hbox>
<hbox>
<led><halpin>"x.min-soft"</halpin><size>10</size><on_color>"red"</on_color><off_color>"green"</off_color></led>
<label><text>"min soft"</text><font>("Arial",5)</font></label>
</hbox>
<hbox>
<led><halpin>"x.max-soft"</halpin><size>10</size><on_color>"red"</on_color><off_color>"green"</off_color></led>
<label><text>"max soft"</text><font>("Arial",5)</font></label>
</hbox>
<hbox>
<led><halpin>"x.max-hard"</halpin><size>10</size><on_color>"red"</on_color><off_color>"green"</off_color></led>
<label><text>"max hard"</text><font>("Arial",5)</font></label>
</hbox>
<hbox>
<led><halpin>"x.has-fault"</halpin><size>10</size><on_color>"red"</on_color><off_color>"black"</off_color></led>
<label><text>"error"</text><font>("Arial",5)</font></label>
</hbox>
</vbox>
</labelframe>
<labelframe text="jog">
<vbox>
<button>
<halpin>"jog-x+"</halpin>
<text>"X +"</text>
<justify>"center"</justify>
</button>
<button>
<halpin>"jog-x-"</halpin>
<text>"X -"</text>
<justify>"center"</justify>
</button>
</vbox>
</labelframe>
</hbox>
</vbox>
<vbox> <!-- Axis Y -->
<hbox>
<labelframe text="home">
<vbox>
<button>
<halpin>"y.home"</halpin>
<text>"home"</text>
<justify>"center"</justify>
</button>
<led>
<halpin>"y.is-homed"</halpin>
<size>25</size>
<on_color>"green"</on_color>
<off_color>"black"</off_color>
</led>
</vbox>
</labelframe>
<labelframe text="status">
<vbox>
<hbox>
<led><halpin>"y.min-hard"</halpin><size>10</size><on_color>"red"</on_color><off_color>"green"</off_color></led>
<label><text>"min hard"</text><font>("Arial",5)</font></label>
</hbox>
<hbox>
<led><halpin>"y.min-soft"</halpin><size>10</size><on_color>"red"</on_color><off_color>"green"</off_color></led>
<label><text>"min soft"</text><font>("Arial",5)</font></label>
</hbox>
<hbox>
<led><halpin>"y.max-soft"</halpin><size>10</size><on_color>"red"</on_color><off_color>"green"</off_color></led>
<label><text>"max soft"</text><font>("Arial",5)</font></label>
</hbox>
<hbox>
<led><halpin>"y.max-hard"</halpin><size>10</size><on_color>"red"</on_color><off_color>"green"</off_color></led>
<label><text>"max hard"</text><font>("Arial",5)</font></label>
</hbox>
<hbox>
<led><halpin>"y.has-fault"</halpin><size>10</size><on_color>"red"</on_color><off_color>"black"</off_color></led>
<label><text>"error"</text><font>("Arial",5)</font></label>
</hbox>
</vbox>
</labelframe>
<labelframe text="jog">
<vbox>
<button>
<halpin>"jog-y+"</halpin>
<text>"Y +"</text>
<justify>"center"</justify>
</button>
<button>
<halpin>"jog-y-"</halpin>
<text>"Y -"</text>
<justify>"center"</justify>
</button>
</vbox>
</labelframe>
</hbox>
</vbox>
<vbox> <!-- Axis Z -->
<hbox>
<labelframe text="home">
<vbox>
<button>
<halpin>"z.home"</halpin>
<text>"home"</text>
<justify>"center"</justify>
</button>
<led>
<halpin>"z.is-homed"</halpin>
<size>25</size>
<on_color>"green"</on_color>
<off_color>"black"</off_color>
</led>
</vbox>
</labelframe>
<labelframe text="status">
<vbox>
<hbox>
<led><halpin>"z.min-hard"</halpin><size>10</size><on_color>"red"</on_color><off_color>"green"</off_color></led>
<label><text>"min hard"</text><font>("Arial",5)</font></label>
</hbox>
<hbox>
<led><halpin>"z.min-soft"</halpin><size>10</size><on_color>"red"</on_color><off_color>"green"</off_color></led>
<label><text>"min soft"</text><font>("Arial",5)</font></label>
</hbox>
<hbox>
<led><halpin>"z.max-soft"</halpin><size>10</size><on_color>"red"</on_color><off_color>"green"</off_color></led>
<label><text>"max soft"</text><font>("Arial",5)</font></label>
</hbox>
<hbox>
<led><halpin>"z.max-hard"</halpin><size>10</size><on_color>"red"</on_color><off_color>"green"</off_color></led>
<label><text>"max hard"</text><font>("Arial",5)</font></label>
</hbox>
<hbox>
<led><halpin>"z.has-fault"</halpin><size>10</size><on_color>"red"</on_color><off_color>"black"</off_color></led>
<label><text>"error"</text><font>("Arial",5)</font></label>
</hbox>
</vbox>
</labelframe>
<labelframe text="jog">
<vbox>
<button>
<halpin>"jog-z+"</halpin>
<text>"Z +"</text>
<justify>"center"</justify>
</button>
<button>
<halpin>"jog-z-"</halpin>
<text>"Z -"</text>
<justify>"center"</justify>
</button>
</vbox>
</labelframe>
</hbox>
</vbox>
</tabs>
<labelframe text="settings">
<tabs>
<names>["Jogging", "Program control", "Overrides"]</names>
<vbox> <!-- jogging -->
<hbox>
<label><text>"jog speed: "</text></label>
<spinbox>
<halpin>"jog-speed"</halpin>
<min_>0</min_>
<resolution>.5</resolution>
<format>"2.1f"</format>
<width>5</width>
<justify>RIGHT</justify>
<initval>20</initval>
</spinbox>
</hbox>
</vbox>
<vbox> <!-- program control -->
<hbox>
<hbox><led><halpin>"optional-stop.is-on"</halpin><size>10</size><on_color>"green"</on_color><off_color>"black"</off_color></led></hbox>
<label><text>" - optional stop - "</text></label>
<button>
<halpin>"optional-stop.on"</halpin>
<text>"On"</text>
<justify>"center"</justify>
</button>
<button>
<halpin>"optional-stop.off"</halpin>
<text>"Off"</text>
<justify>"center"</justify>
</button>
</hbox>
<hbox>
<hbox><led><halpin>"block-delete.is-on"</halpin><size>10</size><on_color>"green"</on_color><off_color>"black"</off_color></led></hbox>
<label><text>" - block delete - "</text></label>
<button>
<halpin>"block-delete.on"</halpin>
<text>"On"</text>
<justify>"center"</justify>
</button>
<button>
<halpin>"block-delete.off"</halpin>
<text>"Off"</text>
<justify>"center"</justify>
</button>
</hbox>
</vbox>
<vbox> <!-- Overrides -->
<hbox>
<button>
<halpin>"feed-override+"</halpin>
<text>"+"</text>
<justify>"center"</justify>
</button>
<button>
<halpin>"feed-override-"</halpin>
<text>"-"</text>
<justify>"center"</justify>
</button>
<label><text>"feed override: "</text></label>
<number>
<halpin>"feed-override.value"</halpin>
</number>
</hbox>
<hbox>
<button>
<halpin>"spindle-override+"</halpin>
<text>"+"</text>
<justify>"center"</justify>
</button>
<button>
<halpin>"spindle-override-"</halpin>
<text>"-"</text>
<justify>"center"</justify>
</button>
<label><text>"spindle override: "</text></label>
<number>
<halpin>"spindle-override.value"</halpin>
</number>
</hbox>
</vbox>
</tabs>
</labelframe>
<labelframe text="MDI commands">
<button>
<halpin>"quillup"</halpin>
<text>"Quill Up"</text>
<justify>"center"</justify>
</button>
<button>
<halpin>"referencepos"</halpin>
<text>"Reference pos."</text>
<justify>"center"</justify>
</button>
</labelframe>
</pyvcp>