momentan versuche ich eine Schrittmotorsteuerung für das Raspi-Touchpanel mit Kivy zu schreiben.
Das Problem auf dass ich momentan gestoßen bin ist dass wenn ich per Buttonklick eine Funktion aufrufen möchte
friert die Oberfläche solange ein bis die Funktion abgearbeitet ist. Da es sich bei einer der Funktionen um einen
Dauerbetrieb handelt der mit einem zweiten Button gestoppt werden soll muss ich dies umgehen. Ich habe es schon
über Threads versucht allerdings wartet Kivy dann trotzdem auf den Abschluss des Threads. Vielen Dank bereits im
vorraus für die Hilfe.
Mit vielen Grüßen,
Euer Dudu
Code: Alles auswählen
BoxLayout:
spacing: 10
padding: 5
size_hint_x: 0.5
Button:
text: "Quickstart"
on_release:
root.manager.transition.direction = 'left'
root.manager.transition.duration = 0.5
root.manager.current = 'screen_two'
root.Dauerbetrieb()
class ScreenOne(Screen):
def Dauerbetrieb (self):
GPIO.setup(18, GPIO.OUT)
GPIO.setup(24, GPIO.OUT)
iDelay = 5
Beschleunigungs_Rampe = 3* iDelay
global escaper
escaper = 0
while escaper == 0 :
if Beschleunigungs_Rampe > iDelay:
GPIO.output(24, GPIO.HIGH)
time.sleep((Beschleunigungs_Rampe / 1000.0))
print (1)
GPIO.output(24, GPIO.LOW)
# Hier kann Koeffizient zur Steilheit der Rampe geändert werden
# Desto kleiner der Subtrahent desto langsamer die Beschleunigung
Beschleunigungs_Rampe = Beschleunigungs_Rampe - 0.01
else:
GPIO.output(24, GPIO.HIGH)
time.sleep((iDelay / 1000.0))
GPIO.output(24, GPIO.LOW)
print (1)
t1= Thread(target=Quickstart, args=())
t2= Thread(target=Quickstart, args=())
t1.start()
t2.start()