Ich grüße euch,
ich bin ein gelegenheits R-Pi Bastler mit noch recht wenig Erfahrung im Programmieren. Viele Probleme die sich mir bes jetzt gestellt haben konnte mit langem Suchen im Internet losen, und wollte es eigentlich vermeiden dein Foren-Team mit meinen Unzulänglichkeiten zu belästigen. Aber im Moment gehen mir die Ideen aus und ich erbitte daher eure Hilfe.
Kann es sein, daß der R-Pi ein Problem damit hat die try und except Befehle zu interpretieren?
Ich habe hier ein kleines Programm geschrieben, welches einen Servo steuern soll:
import time, sys, threading
#import RPi.GPIO as GPIO
def angle_move():
while True:
#GPIO .output(18, GPIO.HIGH)
time.sleep(ant_high+3)
print("H ", ant_high)
#GPIO .output(18, GPIO.LOW)
time.sleep(ant_low+3)
print("L ", ant_low)
if exit == 1:
break
#GPIO.setmode(GPIO.BCM)
#GPIO.setup(18, GPIO.OUT)
#GPIO.setup(23, GPIO.IN)
#GPIO.output(18, GPIO.LOW)
Th_angle_move = threading.Thread(target = angle_move)
exit = float(0)
freq = float(50.0)
f_Hz = float(1/freq)
imp_min_ms = float(1)
imp_min = imp_min_ms / 1000
print("imp_min:", imp_min, "\n")
imp_max_ms = float(2)
imp_max = imp_max_ms / 1000
print("imp_max:", imp_max, "\n")
imp_range = imp_max - imp_min
print ("iimp_range:", imp_range)
angle = 0
print("Frequenz: ", freq, " Hz -->", f_Hz, "ms")
print("Impulsweite min: ", imp_min_ms, " ms")
print("Impulsweite max: ", imp_max_ms, " ms")
print ("Impuls-Aenderungsbereich:", imp_range * 1000, "ms")
ant_high = float(0.0015 )
ant_low = float(0.0185)
Th_angle_move.start()
while True :
angle_input= input("Winkel eingeben (-90 bis 90): ")
try:
angle = float(angle_input)
except:
if angle_input == "exit" :
exit = 1
print("\n Programm beenden")
time.sleep(2)
#GPIO.cleanup
sys.exit()
else :
print("!!! Keine gueltige Eingabe !!!")
continue
if angle <= 90 and angle >= -90:
ant_high = (((angle + 90) / 180) * imp_range) + imp_min
ant_low = f_Hz - ant_high
print("Signaldauer: ", ant_high, " s")
print("Wartedauer: ", ant_low, " s")
else:
print("!!! Wert auserhalb des Winkelbereichs !!!")
Alles anzeigen
Ich weiß, das man das auch mit vorgefertigten Modulen eleganter lösen kann, aber ich wollte so ein Programm eben mal selber machen .
Das soll passieren:
-Mit einem "input" Befehl gebe ich eine Zahl ein (den Winkel).
-Unter "try" wird die Eingabe dann in einen "float" -Wert umgewandelt, sofern die Eingabe eine Zahl ist.
-Ist die Eingabe ein Wort, soll mit "except" weitergemacht werden
-Hier wird unterschieden, ob es sich bei dem Wort um "exit" handelt (dann soll das Programm beendet werden), oder ein anderer, nicht interpretierbarer Blödsinn (dann soll das Programm dies Beanstanden, und erneut zur Winkeleingabe auffordern).
Nun zum Problem:
Das Ganze funktioniert auf dem Rechner im "Ausführenfenster" ganz hervorragend :thumbs1: . Wenn ich das aber auf den R-Pi übertrage und dort ausführe, lauft alles gut solange ich Zahlen eingebe. Gebe ich aber "exit" ein, wird das ignoriert, und das Programm fragt erneut nach der Winkeleingabe . Gebe ich ein Buchstaben-Kauderwelsch ein (sfklhfsygl) bekomme ich eine Fehlermeldung.
Da komme ich mit meinen rudimentären Kenntnissen nicht weiter. Ich hoffe Ihr habt da ne Idee und sag schonmal