Ich bin am erstellen eines Programms, welches verschiedene Threads starten soll (u.a. auf einer RS232 Schnittstelle lauschen ob Daten ankommen) und je nachdem ob ein Ereignis eintritt eine Funktion ausführt. Wie kann ich Ereignisse aus dem Thread an ein Hauptprogramm zurückgeben und in diesem entsprechend reagieren?
Habe Beispielhaft hier schon mal was erstellt:
Code: Alles auswählen
import threading
import time
class t1(threading.Thread):
def __init__(self,dt,nr): # neuer Konstruktor
threading.Thread.__init__(self) # Aufruf des ererbten Konstruktors
self.dt = dt
self.nr = nr
def run(self):
i = 1
while True:
i = i + 1
print "Thread1: ",i
time.sleep(self.dt)
if self.nr == i:
print "Ereignis thread 1 erreicht, mache etwas"
erg = "t1.xyz"
!! hier Erreignis / Ergebnis an Hauptprogramm schicken
class t2(threading.Thread):
def __init__(self): # neuer Konstruktor
threading.Thread.__init__(self) # Aufruf des ererbten Konstruktors
def run(self):
i = 115
while True:
i = i + 1
print "Thread2: ", i
time.sleep(0.5)
if i == 130:
print "Ereignis thread 2 erreicht, mache etwas"
state = "t2.OK"
!! hier Erreignis / Ergebnis an Hauptprogramm schicken
def action(str):
# Hier irgendeine Aktion
print str
print 'Start Hauptprogramm'
p1 = t1(1,15) # neuer Thread 1
p1.start() # Start des Threads 1
p2 = t2()
p2.start()
# Hier möchte ich die Ereignisse
while True:
if ?? Ergebnis ?? == 't1.xyz':
action('OK, Ergebnis war xyz')
if ?? Ergebnis ?? == 't2.OK':
action('OK, Ergebnis war xyz')