SPINBOX DATA to G-Code Variable
Have a good read of the pyVCP docs page, because I changed a lot of the widgets a while back.
Now not only can some widgets be pre-set to a value, but also enabling the 'param-pin' allows their value to be changed remotely.
Therefore this allow their state to be saved and restored again, which is what I wrote it for, but opens up the way for values to be passed to and from gcode.
As you have shown, the value in a spinbox can be used in gcode.
If you write a user M199 code which contains something like
halcmd setp pyvcp.spinbox0.param_pin $1
Then you can call
M199 P 123
which will result in the spinbox0 being set to 123 - the reverse process.
Also have a look in the sample configs/apps/pyvcp
It has been parred down from the original full config I submitted, but still shows examples of widgets being set by other widgets etc using the param-pin interface
regards
Please Log in or Create an account to join the conversation.
Making progress... now fiddling with the probe again... routines work great, then they get the "move with probe tripped" and "move when not in contact"... blah blah... playing with debounce settings, Probe feed-rates, etc. Bringing it all together slowly. But I'm making steady progress now... so that's good. (Might even be an issue with my relay circuit)... tempted to make a solid-state version... but that's a whole other post.
Jerry
Please Log in or Create an account to join the conversation.
I can now send data from a pyVCP panel to G-Code like an ACE... no problem and thanks!!!
Example: I want to evaluate the speed of a spindle and wait until it has slowed down before switching directions... so we wait until the spindle is less than 100 RPM to avoid blowing a breaker. The pyVCP has a meter with a hal pin called "spindle-speed" in actual RPM. Given this... I have learned that I can reference it in G-Code as...
#<_hal[pyvcp.spindle-speed]>
Then do whatever I need...
O <set-spindle-forward> sub
M05
o100 while [#<_hal[pyvcp.spindle-speed]> GT 99]
o100 endwhile
M03 S500
O <set-spindle-forward> endsub
So thanks so much for that... but now I'm scratching my head with something ArcEye said about passing variables BACK to the pyvcp panel... something I could really use in a project to send canned messages by just sending a number and having graphics icons displayed... would look cool too.
I installed the following in a test panel...
<number>
<halpin>"my-number"</halpin>
<font>("Helvetica",24)</font>
<format>"+4.4f"</format>
</number>
In reading ArcEye's text... I believe I need to set up something like this in the HAL or CUSTOM_POSTGUI.HAL file... but not 100% sure...
halcmd setp pyvcp.my-number.param_pin $1
Then he said to do something like this... presumably in the G-Code... M199 P 123
That's where I'm doing a bit of head scratching... looking up the M-Codes... I see there are M100 to M199 which... if I understand this correctly... are treated internally as M1nn where nn is 00 to 99. And if so... I would think that halcmd setp pyvcp.my-number.param_pin $1 would reference M101 instead of M199... hence my confusion.
In other words... _pin$00 to _pin$99 to associate with M100 through M199 inclusive.
So I'm a bit confused... if I had five <number> boxes... let's call the halpins "alpha", "beta","charlie","delta", and "foxtrot"... I would obviously need something like...
halcmd setp pyvcp.alpha.param_pin $1
halcmd setp pyvcp.beta.param_pin $2
halcmd setp pyvcp.charlie.param_pin $3
halcmd setp pyvcp.delta.param_pin $4
halcmd setp pyvcp.foxtrot.param_pin $5
And would they then attach to M101 through M105?
I'll experiment... if I get it... I'll post results. It will be cool to make interactive display that tells the status of G-Code without DEBUG, MSG, or PRINT appearing on the bottom of the display.
What would REALLY be cool... would be a new TEXTBOX widget or be able to pass text to a LABEL... hint hint.
<textbox>
<halpin>"my-display"</halpin>
<font>("Helvetica",10)</font>
<fg>#000000</fg>
<bg>#FFFFFF</bg>
</textbox>
Yeah... I'm reading...
linuxcnc.org/docs/html/man/man1/halcmd.1.html
linuxcnc.org/docs/html/hal/halmodule.html
and it's not making sense to me...
This one... linuxcnc.org/docs/html/gcode/m-code.html...ser_defined_commands a little bit...
but when I get to the #!/bin/bash I'm lost... not making sense to me.
Please Log in or Create an account to join the conversation.
M199 is a file name, it just happens to be mostly numbers
$1 is the first command line parameter (argument)
$2 is the second, etc
M199 P123 Q456 from gcode
calls M199 with $1 = 123.000000 and $2 = 456.000000
so note that it will be a float value, whether that was what you input or not, which can cause problems.
regards
Please Log in or Create an account to join the conversation.
#<_hal[pyvcp.spindle-speed]>
Be aware that these values might not update at the times you expect them to. Especially in Auto mode.
M66 is rather more reliable, and can actually be programmed to wait too.
So thanks so much for that... but now I'm scratching my head with something ArcEye said about passing variables BACK to the pyvcp panel... something I could really use in a project to send canned messages by just sending a number and having graphics icons displayed... would look cool too.
M68.
Then net mysignal motion.analog-out-00 => pyVCP.input.pin in the postgui HAL
Please Log in or Create an account to join the conversation.
Then the light bulb went on.
I see....
linuxcnc.org/docs/html/gcode/m-code.html#_m68_analog_output
So I would link them up in the HAL file to my panel widgets...
alpha motion.analog-out-00 => pyVCP.apha
beta motion.analog-out-01 => pyVCP.beta
charlie motion.analog-out-02 => pyVCP.charlie
delta motion.analog-out-03 => pyVCP.delta
Then in G-Code...
M68 E02 Q123 would push "123" to the second analog output... pyVCP.charlie
And "charlie" would need to be able to handle the float number... or I would need to convert it.
So in my previous example using the number box... with a pyvcp.my-number I would simple need the following in the HAL file...
net my-number motion.analog-out-00 => pyvcp.my-number
Then pass data via M68 E00 Qnnn.nnnn where nnn.nnnn is the number I want to pass.
Let me give that a try...
That got it... experiment time!
Thanks folks!
jerry
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Now I can have a status indicator with a different graphic for...
- Spindle Running
- Spindle At Speed
- Spindle Slowing
- Spindle Stopped
Or a graphics panel that looks like a display screen with canned messages...
- Phase 1 - Spindle Starting - Keep Hands Clear
- Mount the part - On the Run/Safe switch, select RUN
- Remove the Part - Rotate 180 Degrees and Press Start
- Phase 2 - Spindle Starting - Keep Hands Clear
- Part is complete - Flip the switch to SAFE and remove the part.
All kinds of new options now.
Please Log in or Create an account to join the conversation.
M3 S400
F1000
G1 X0 Y0
G4 P#<_hal[pyvcp.spinbox0]>
G1 X10 Y0
G4 P#<_hal[pyvcp.spinbox0]>
G1 X10 Y10
G4 P#<_hal[pyvcp.spinbox0]>
G1 X0 Y10
G4 P#<_hal[pyvcp.spinbox0]>
G1 X0 Y0
G4 P#<_hal[pyvcp.spinbox0]>
M5
M30
But the pause time value don't change while the machine is executing the Gcode.
Are there a solution to change the variable Gcode value during the machine is executing the Gcode?
Thank.
Please Log in or Create an account to join the conversation.
- Todd Zuercher
- Offline
- Platinum Member
- Posts: 5008
- Thank you received: 1441
Please Log in or Create an account to join the conversation.