Über einen Taster pbutton soll beim drücken abwechselnd entweder ein Timer bei 0 sec starten und eine Variable (in meinem Code noch pdisplay) im 3 min ein- und 6 min aus Zyklus geschaltet werden. Oder die Variable ist dauerhaft ausgeschaltet.
Im pbutton soll der Text „Automatik“ erscheinen, wenn der Timer startet, und der Text „AUS“ wenn die Variable Ausgeschaltet ist.
Der Indikator im pbutton soll leuchten wenn die Variable EIN ist.
Ich würde gerne elegantere Lösungen erlernen um mit Variabeln in einer „if“ Anweisung die mit anderen Variabeln per „and“ und „or“ verknüpft sind zu arbeiten.
Das Problem bei „Prio1“ ist, vermutlich mein Umgang mit der Validierung. Ich vermute sobald WildschweinradioAuto=EIN ist, wird zwar die Auswertung der if Anweisung invalid aber nur für einen Zyklus. Dass sich dann WildMerker2 ändert, ist dann nicht mehr von Interesse und der ausführbare Teil der if Anweisung wird nicht mehr ausgeführt. Hier suche ich eine Lösung zum besseren Verständnis im Umgang mit if, and und or, bevor der ganze Code umgebaut wird.
Bei „Prio2“ kann ich ein „or“ in der if Anweisung (zwar unschön) umgehen, indem ich die beiden Teile der Auswertung in zwei einzelne Zeilen geschrieben habe. Bei „and“ stehe ich auf dem schlauch und habe keine Lösung.
Ich hoffe meine Ausführung ist nachvollziehbar.
Im pbutton soll der Text „Automatik“ erscheinen, wenn der Timer startet, und der Text „AUS“ wenn die Variable Ausgeschaltet ist.
Der Indikator im pbutton soll leuchten wenn die Variable EIN ist.
Ich würde gerne elegantere Lösungen erlernen um mit Variabeln in einer „if“ Anweisung die mit anderen Variabeln per „and“ und „or“ verknüpft sind zu arbeiten.
Code:
//- Prio3 - Single Button um Variable „WildschweinradioAuto“ wie ein FlipFlop auf Zustand Automatik oder Aus zu setzen: - nicht schön aber tut was es soll. if pbutton(WildschweinRadioIndikatorID, LichtPageID)==1 then WildMerker1 = WildMerker1 + 1 endif if WildMerker1 == 1 then WildschweinradioAuto=EIN else WildschweinradioAuto=AUS endif if WildMerker1 == 2 then WildMerker1 = 0 endif // -Prio2 - Timer //3min an; 6min aus - funktioniert jedoch elegante lösung gesucht // mit OR funktioniert es nicht wenn ich die letzten beiden Zeilen ersetze durch „if (WildMerker2>=3) or (WildschweinradioAuto==AUS) then WildMerker2=0 endif“ if cycle(3,0) then WildMerker2 = WildMerker2 + 1 endif if (WildMerker2>=3) then WildMerker2=0 endif if (WildschweinradioAuto==AUS) then WildMerker2=0 endif // -Prio1 - pbutton setzten - Tut nicht was es soll if WildschweinradioAuto==AUS then pdisplay(WildschweinRadioIndikatorID, $AUS$,LIGHT,INACTIVE,GREY, LichtPageID) endif if (WildschweinradioAuto==EIN and WildMerker2==2) then pdisplay(WildschweinRadioIndikatorID, $Automatik$,LIGHT,INACTIVE,BLINKBLUE, LichtPageID) endif if (WildschweinradioAuto==EIN and WildMerker2>=0) then pdisplay(WildschweinRadioIndikatorID, $Automatik$,LIGHT,ACTIVE,BLINKBLUE, LichtPageID) endif
Bei „Prio2“ kann ich ein „or“ in der if Anweisung (zwar unschön) umgehen, indem ich die beiden Teile der Auswertung in zwei einzelne Zeilen geschrieben habe. Bei „and“ stehe ich auf dem schlauch und habe keine Lösung.
Ich hoffe meine Ausführung ist nachvollziehbar.
Kommentar