Seite 1 von 1

Ereignisse aus Threads abfragen und AKtion ausführen

Verfasst: Mittwoch 3. Februar 2010, 12:12
von dkell
Hallo

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')

Vielen dank

Verfasst: Mittwoch 3. Februar 2010, 12:14
von jbs
Wie wäre es mit [mod]queue[/mod]