Probe Screen NG Messung durch Hal Pin starten

More
18 Jan 2023 20:10 #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 or Create an account to join the conversation.

More
19 Jan 2023 20:03 #262430 by HansU
So erzeugst du einen Pin und mit der Get-Methode, kannst du diesen abfragen:
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()
 
The following user(s) said Thank You: planetstorm

Please Log in or Create an account to join the conversation.

More
19 Jan 2023 21:25 #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 or Create an account to join the conversation.

More
20 Jan 2023 17:43 - 20 Jan 2023 17:44 #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
self.my_pin.connect('value-changed', self._on_example_trigger_change)
und
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:
    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()))
Last edit: 20 Jan 2023 17:44 by HansU.
The following user(s) said Thank You: planetstorm

Please Log in or Create an account to join the conversation.

More
21 Jan 2023 08:20 #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....
The following user(s) said Thank You: HansU

Please Log in or Create an account to join the conversation.

Moderators: mhaberlerHansU
Time to create page: 0.120 seconds
Powered by Kunena Forum