Probe Screen NG Messung durch Hal Pin starten

More
3 years 9 months ago #262364 by planetstorm
Hallo liebe Leute. Bin nicht so der Python Crack. Ich möchte gerne eine Messung per Hal Pin starten. Sitze seid Stunden hier und bekomme es nicht hin. Was ich geschafft habe ist, dass ich einen Hal Pin anlege und den Wert auf 1 setzen muss damit der Messbutton in der Gui auch geht. Ich möchte aber ohne den Gui Button direkt per Hal Pin die Messung starten. Kann mir da evtl jemand unter die Arme greifen? Lieben Dank euch.

LG Heiko

Please Log in to join the conversation.

More
3 years 9 months ago #262430 by HansU
So erzeugst du einen Pin und mit der Get-Methode, kannst du diesen abfragen:
Code:
import hal_glib import hal self.my_pin = hal_glib.GPin(halcomp.newpin("my_pin", hal.HAL_BIT, hal.HAL_IN)) self.my_pin.get()
 

Please Log in to join the conversation.

More
3 years 9 months ago #262433 by planetstorm
Ok das hat soweit geklappt. Helfe mir bitte bitte noch mal auf die Sprünge. Habe so viel gelesen, bin schon ganz durcheinander. Scheint wohl auch in alten Versionen wieder anders geschrieben zu werden. Ich möchte nun durch den Halpin einen Codeabschnitt starten. Momentan wird er durch diese Zeile gestartet.

def on_xp_released(self, gtkbutton, data=None):

Kannst du mir erklären wie ich das nun umschreiben muss, damit ich entweder durch den Hal Pin oder durch den Button den Code starten kann? Ich blicke gerade nicht durch.

Ganz lieben dank.  

VG Heiko

 

Please Log in to join the conversation.

More
3 years 9 months ago #262510 by HansU
Du hast zwei Möglichkeiten:

1. Mit einem Timer "self.my_pin.get()" regelmässig abfragen (polling)

2. Oder einen Handler definieren, siehe linuxcnc.org/docs/html/hal/halmodule.htm..._in_gladevcp_handler
was sicherlich die elegantere Lösung ist.

Also im wesentlichen die Zeilen
Code:
self.my_pin.connect('value-changed', self._on_example_trigger_change)
und
Code:
def _on_example_trigger_change(self,pin,userdata=None): if pin.get(): do something
hinzufuegen.

PS: Das Beispiel auf der Webseite ist ein bisschen fehlerhaft, falls du es 1:1 probieren willst, ändere die print's so:
Code:
def _on_example_trigger_change(self,pin,userdata=None): print ("pin value changed to: {}".format(pin.get())) print ("pin name= {}".format(pin.get_name())) print ("pin type= {}".format(pin.get_type()))

Please Log in to join the conversation.

More
3 years 9 months ago #262561 by planetstorm
Super Vielen dank. Hat mit deinem Beispiel super geklappt. Anfangs nicht , dann habe ich LCNC mal über das Terminal gestartet und konnte so die errors beseitigen. Vielen Vielen Dank es klappt nun....

Please Log in to join the conversation.

Time to create page: 0.255 seconds
Powered by Kunena Forum