Ich bin immernoch blutiger Anfänger in Sachen Python, daher sorry für die triviale(n) Frage(n)
Ziel ist es, eine automatische Zugsteuerung mittels rcsh zu schreiben, die relativ speziell auf eine (meine) Anlage abgestimmt ist.
Da die ganze Geschichte viele Rückmeldungen einliest, und erst auf diese Rückmeldungen entsprechend reagiert, suche ich eine Möglichkeit das Programm mit einer Taste (oder Ctrl-C) abzubrechen, aber dann als letzten Befehl Power(p=0) auszuführen, damit damit die komplette Anlage Stromlos wird.
Geschieht das nicht, laufen alle Loks mit der zuletzt gesendeten Geschwindigkeit absolut 'Kopflos' weiter, und man hechtet zur Steckdose um das Schlimmste zu verhinden:-)
Ich könnte eigentlich in jeder Rückmelde/Entscheidungsbfrage eine weitere Abfrage einbauen, die immerwieder aufs neue den Tastendruck zum Abbruch erwartet, aber das wird sehr schnell sehr unübersichtlich....
Hier mal ein Codeschnipsel für eine Rangierfahrt:
Code: Alles auswählen
from rcsh import *
import time
w1 = turnoutM(8)
k1 = feedbackS88(1)
k2 = feedbackS88(2)
k3 = feedbackS88(3)
Connect()
print k1.getState()
print k2.getState()
print k3.getState()
lok = locoM4(212)
lok.setDirection(1)
lok.send()
lok.setSpeed(0)
lok.send()
lok.setFunction(1)
lok.send()
lok.setF(1,1)
lok.send()
lok.setF(2,1)
lok.send()
lok.setF(3,0)
lok.send()
time.sleep(1)
lok.setSpeed(3)
lok.send()
w1.set()
r = k1.wait(1,50)
if r==1:
lok.setSpeed(0)
lok.send()
time.sleep(1)
lok.setDirection(0)
lok.send()
lok.setSpeed(0)
lok.send()
print "1.Halt Fahrtrichtung gewechselt - Stop"
w1.reset()
print "Weiche gesetzt (gerade)"
time.sleep(1)
lok.setSpeed(3)
lok.send()
y = k2.wait(1,50)
if y==1:
lok.setSpeed(0)
lok.send()
print "Halt nummer Zwei"
lok.setDirection(1)
lok.send()
lok.setSpeed(0)
lok.send()
print "Fahrtrichtung gewechselt"
time.sleep(3)
lok.setSpeed(3)
lok.send()
print "Faehrt los"
z = k1.wait(1,50)
if z==1:
lok.setSpeed(0)
lok.send()
print "Angekommen Halt 3"
time.sleep(1)
lok.setDirection(0)
lok.send()
lok.setSpeed(0)
lok.send()
w1.set()
lok.setSpeed(3)
lok.send()
a = k3.wait(1,50)
if a==1:
lok.setSpeed(0)
lok.send()
lok.setDirection(1)
lok.send()
lok.setSpeed(0)
lok.send()
print"Anfang"
if y==0:
print "Stop"
Heissen Dank für Tips und Anregungen.
Bis denn,
Ulrich