Various questions about GladeVCP
I manage to get my UI up and running and even bind some HAL pins to LEDs and other object in .hal scrip. I also manage to find a workaround for setting default values to hal_spinbuttons (8.6 FAQ in the GladeVCP manual).
As I mentioned, I need help with a few different things but let me start with some of them.
I am running my UI by using the commad "linuxcnc myui.ini"
Where will the result be displayed when I using print in Python?
def on_button_press(gtkobj,data=None):
print "Button pressed"
How can I access HAL pins found using "Hal Meter" from Python. For instance halui.axis.2.pos-relative?
I have manage to figure out how to access pins in the UI like this:
def on_setToolChangePosition_pressed(self,widget,data=none):
self.builder.get_object('toolChangePositionValues').hal_pin.set(1);
Where can I find documentation for different functions like "self.builder.get_object().hal_pin.set()" and other functions used in Python for GladeVCP?
By the way, my experience from Python and Gtk is rather pore but I have lots of programming knowledge and is very familiar using different kind of documentation. Don't hesitate pointing me out where and what I should read to get information so that I can manage to succeed with my UI-project.
I also let you know that I have downloaded the configs/gladevcp
I hope there is someone out there who can help me sort things out when I have problems along my learning curve.
Please Log in or Create an account to join the conversation.
I'm in the middle of the learning curve for GladeVCP and need some help in various issues.
I manage to get my UI up and running and even bind some HAL pins to LEDs and other object in .hal scrip. I also manage to find a workaround for setting default values to hal_spinbuttons (8.6 FAQ in the GladeVCP manual).
As I mentioned, I need help with a few different things but let me start with some of them.
I am running my UI by using the commad "linuxcnc myui.ini"
Where will the result be displayed when I using print in Python?
def on_button_press(gtkobj,data=None): print "Button pressed"
This goes to stdout if not redirected. To see those print statements, start a terminal session and run 'linuxcnc myconfig.ini' . They should appear in the terminal window.
You can redirect a python file descriptor to a log window in gladevcp, eg in a tab, using a ScrolledText widget, and redirecting it like here: git.mah.priv.at/gitweb/emc-mill.git/blob...M19:/python/panel.py (see the LogText class and use).
How can I access HAL pins found using "Hal Meter" from Python. For instance halui.axis.2.pos-relative?
I'm unsure what you mean by that. I assume you want to link halui.axis.2.pos-relative to a HAL Meter widget. To do so, just net those pins in the gladevcp HAL file (usually the one given with POSTGUI_HALFILE):
net pos-rel halui.axis.2.pos-relative gladevcp.hal-meter-pin
You can programmatically access HAL pins like below, but you dont need to do this for the simple case of just displaying some HAL pin with a widget. Just link them as above.
I have manage to figure out how to access pins in the UI like this:
def on_setToolChangePosition_pressed(self,widget,data=none): self.builder.get_object('toolChangePositionValues').hal_pin.set(1);
This I dont get. Why dont you use a HAL_Button for setToolChangePosition and link its hal pin?
Where can I find documentation for different functions like "self.builder.get_object().hal_pin.set()" and other functions used in Python for GladeVCP?
Really only by reading the code in lib/python/gladevcp. I'd say the set(), get(), and occasionally the update() method are the only ones I see use for.
- Michael
Please Log in or Create an account to join the conversation.
"This goes to stdout if not redirected. To see those print statements, start a terminal session and run 'linuxcnc myconfig.ini' . They should appear in the terminal window."
That is what I though also but it did not happens for some reason and I could not figure out why.
It would be nice to know how to fix this problem but I will also take a look at your link how to use a ScrolledText widget.
"I'm unsure what you mean by that. I assume you want to link halui.axis.2.pos-relative to a HAL Meter widget. To do so, just net those pins in the gladevcp HAL file (usually the one given with POSTGUI_HALFILE):
net pos-rel halui.axis.2.pos-relative gladevcp.hal-meter-pin"
No I already know how to do this. I want to learn how to read/write (get/set), at least read, a value from HAL pins using Python like any of them displayed with "Hal Meter". halui.axis.2.pos-relative was just an example.
"This I dont get. Why dont you use a HAL_Button for setToolChangePosition and link its hal pin?"
I can understand why you asking this question but I mite do stupid things due to my short experience of GladeVCP (I only been there for 8 hours) .
"Really only by reading the code in lib/python/gladevcp. I'd say the set(), get(), and occasionally the update() method are the only ones I see use for."
Oh, thanks. Then it will be easy. Can you give me the full path to lib/python/gladevcp because I have tried to find it but did not succeed using the command "find" in my filesystem.
By the way, can you give me a peas of Python code that access HAL pins using get(), ie halui.axis.2.pos-relative?
Please Log in or Create an account to join the conversation.
Oh, thanks. Then it will be easy. Can you give me the full path to lib/python/gladevcp because I have tried to find it but did not succeed using the command "find" in my filesystem.
Since I do not know what you have installed - some package, or from source, I cannot just guess it. The relevant files are online in
git.linuxcnc.org/gitweb?p=linuxcnc.git;a...863a2d7df923766651eb
'sudo updatedb' and 'locate hal_widgets.py' might give you a hint where they are on your system.
By the way, can you give me a peas of Python code that access HAL pins using get(), ie halui.axis.2.pos-relative?
You do not 'access' a foreign HAL pin - you define your own HAL pin, and link it to that foreign HAL pin in the POSTGUI_HALFILE, then access your own HAL pin.
See the examples in the manual, which is always an excellent and rich source of information
www.linuxcnc.org/docs/devel/html/gui/gla...evcp:Adding_HAL_pins
www.linuxcnc.org/docs/devel/html/gui/gla...ies_programmatically
www.linuxcnc.org/docs/devel/html/gui/gla...l-pin-changed_signal
Generally I'd advise a event-driven programming style - use events like value-changed or hal-pin-changed and do stuff in the event handler.
- Michael
Please Log in or Create an account to join the conversation.
I know for sure that the manual is a very good start and I have read them a lot the last few hours. But I did not understand that I need to define my own HAL pin and link them to the foreign HAL pins in the POSTGUI_HALFILE. But now it's clear thanks to your good advice.
By the way, I have another issue that mite be resolvable with your help. When I do linuxcnc myui.ini I get this:
(gladevcp: 14983): libglade-WARNING **: Expected <glade-interface>. Got <interface>.
(gladevcp: 14983): libglade-WARNING **: did not finfsh in PARSER_FINISH state
**** GLADE VCP INFO: Not a libglade project, trying to load as GTK builder project
/usr/bin/gladevcp:191: GtkWarning: GtkSpinButton: setting an adjustment with non-zero page size is depricated
builder.add_from_file(xmlname)
Xlib.protocol.request.QueryExtension
Xlib.protocol.request.QueryExtension
Emit interp-run
Emit interp-run
Emit interp-run
Any advice?
Please Log in or Create an account to join the conversation.
...
By the way, I have another issue that mite be resolvable with your help. When I do linuxcnc myui.ini I get this:
(gladevcp: 14983): libglade-WARNING **: Expected <glade-interface>. Got <interface>.
(gladevcp: 14983): libglade-WARNING **: did not finfsh in PARSER_FINISH state
**** GLADE VCP INFO: Not a libglade project, trying to load as GTK builder project
/usr/bin/gladevcp:191: GtkWarning: GtkSpinButton: setting an adjustment with non-zero page size is depricated
builder.add_from_file(xmlname)
Xlib.protocol.request.QueryExtension
Xlib.protocol.request.QueryExtension
Emit interp-run
Emit interp-run
Emit interp-run
Any advice?
This is not an issue but just superfluous log messages.
Re your print output problem: post the python handler file so we can see whats in out, the crystal ball is dark over the weekend
- Michael
Please Log in or Create an account to join the conversation.
Thanks a lot for your help Michael. I am sure there will be more questions to sort out later. I will now start with the probing functionality and after that I will get into the tool changing process and take a deep look into the Extending EMC documentation.
Please Log in or Create an account to join the conversation.
In the second step I will try to use the feature 4.6. Making minimal changes to the builtin codes .
This is my setup in the myui.ini:
[RS274NGC]
REMAP=M6 modalgroup=6 ngc=toolchange.ngc
This is my toolchange.ngc:
O<toolchange> sub
M6
(MSG, move to probe position)
(print, move to probe position)
O<toolchange> endsub
It seams that toolchange.ngc are not executed because I did not get any massage in the terminal window or a message inside the linuxcnc window. Any suggestion what mite be missing?
Do I need to remove HALFILE=axis_manualtoolchange.hal that comes from the GladeVCP demo gladevcp_panel.ini?
By the way, I have also tried REMAP=M6 modalgroup=6 ngc=toolchange
Please Log in or Create an account to join the conversation.
Remapping is available only in master.
- Michael
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.