Code: Alles auswählen
from time import *
import thread
import threading
import os
import sys, traceback
class AsyncAmpel(threading.Thread):
def __init__(self,ampel_p):
"""Initialisierung der Klasse"""
threading.Thread.__init__(self)
self.ampel = ampel_p
class Ampel(threading.Thread):
l_Zustandsfolge_c=['rot','gelb','gruen','gelb']
d_Eingaben_c={'i':'self.setIntervall()', 'e':'print self.getInfo(self.i_ndex_i)','b':'os._exit(0)','t':'print time()'}
def __init__(self):
"""Initialisierung der Klasse"""
self.current_state = 'ausgeschaltet'
self.ld_Zustandsuebergaenge_i={'rot':5,'gelb':3,'gruen':5,'ausgeschaltet':0}
threading.Thread.__init__(self)
self.i_ndex_i = 0
def run(self):
sleep(5)
self.autoSchaltung()
def eingabeAuswahl(self):
"""Auswahl der Optionen"""
while 1:
print "Moechten Sie den Zustand der Ampel (e)rfragen, das Programm"
print "(b)eenden oder einen Schalt(i)ntervall veraendern? "
Eingabe = raw_input(">> ")
try:
exec (self.d_Eingaben_c[Eingabe])
except:
traceback.print_exc()
print 'Got', sys.exc_type, sys.exc_value
def getInfo(self,i_ndex_i):
"""Fragt den aktuellen Zustand der Ampel ab"""
return self.l_Zustandsfolge_c[self.i_ndex_i], self.ld_Zustandsuebergaenge_i[self.l_Zustandsfolge_c[self.i_ndex_i]]
def setIntervall(self):
"""Aendert die Schaltintervalle"""
Zustand_neu = raw_input("Welchen Zustand moechten Sie aendern? ")
Intervall_neu = input("Neuer Intervall: ")
self.ld_Zustandsuebergaenge_i[Zustand_neu] = Intervall_neu
def autoSchaltung(self):
"""Schaltet die Zustaende der Ampel automatisch"""
self.i_ndex_i
while 1:
for self.i_ndex_i in range(len(self.l_Zustandsfolge_c)):
start_time = time()
print strftime("%H:%M:%S")
state = self.l_Zustandsfolge_c[self.i_ndex_i]
Intervall = self.ld_Zustandsuebergaenge_i[state]
actual_time = time()
print
print "Die Ampel befindet sich im %sen Zustand" %self.l_Zustandsfolge_c[self.i_ndex_i]
print "Die Schaltung erfolgt nach %d Sekunden" %Intervall
print
while actual_time - start_time <= Intervall:
sleep(0.01)
actual_time = time()
self.i_ndex_i = self.i_ndex_i + 1
meineAmpel=Ampel()
runningAmpel=Ampel()
runningAmpel.start()
meineAmpel.eingabeAuswahl()