Hallo,
ich versuche mehrere Abfragen auf eine Variable zu gründen. Ich verstehe, das das nicht geht, wegen des "Validierungsprinzips" des EibPC. Leider fällt mir nix dazu ein, wie ich das hinbekomme. Vielleicht hat jemand 5 min Zeit was dazu zu schreiben.
Es geht sich um folgendes:
if delayc("Licht WZ Nord-2/1/0",MaximalTastenZeit,TimerRestZeit) then test=EIN endif /* Taste gedrückt, Timer starten */
if "Licht WZ Nord-2/1/0" == AUS then { /* Taste wieder losgelassen */
DimmerZeit = MaximalTastenZeit - TimerRestZeit /* Timer auslesen, zwischenspeichern */
} endif
if DimmerZustand == EIN and DimmerZeit < 1000u64 then DimmerZustand = AUS endif /* Dimmer war an, wurde kurz gedrückt, ist nun aus */
if DimmerZustand == AUS and DimmerZeit < 1000u64 then DimmerZustand = EIN endif /* Dimmer war aus, wurde kurz gedrückt, ist nun an */
if DimmerZustand == AUS and DimmerZeit > 1000u64 then DimmerZustand = EIN endif /* Dimmer aus, wurde lang gedrückt, ist nun an,Kinderzimmerf.*/
Ich starte einen Timer wenn eine taste gedrückt wird und lese den Rest aus, wenn sie losgelassen wird. Dann rechne ich aus, wie lang sie gedrückt war. Das klappt alles soweit.
Nun muss ich auswerten. Dazu muss der DimmerZustand und die "gedrückt" zeit ausgewertet werden. Wenn also der Dimmerzustand auf AUS steht und kürzer als 1000ms gedrückt wurde, soll der Dimmerzustand auf AN. Wenn bei DImmerzustand AUS länger gedrückt wird soll Dimmerzustand auch an. Das muss unterschieden werden, weil noch mehr unterschiedliche Funktionen dann ausgeführt werden sollen. Die Abfrage ist also nicht redundant. Bei Dimmerzustand AN und kurzem Tastendruck soll er auf AUS gehen. Die paar Zeilen code machen das aber nicht, weil offensichtlich die if-abfragen nicht alle ausgewertet werden, weil ja gleiche Abfragen in mehreren aufeinaderfolgenden if-abfragen getätigt werden.
Ich hoffe jemand versteht was ich meine????
Ach ja, ich will damit den Zustand von ELTAKO EUD12NPN abfragen (mitprotokollieren). Die habe ich an einen Aktuatorausgang gehängt. Das funktioniert sehr gut, solang ich keinen EibPC hatte. War halt die billigere Lösung
ich versuche mehrere Abfragen auf eine Variable zu gründen. Ich verstehe, das das nicht geht, wegen des "Validierungsprinzips" des EibPC. Leider fällt mir nix dazu ein, wie ich das hinbekomme. Vielleicht hat jemand 5 min Zeit was dazu zu schreiben.
Es geht sich um folgendes:
if delayc("Licht WZ Nord-2/1/0",MaximalTastenZeit,TimerRestZeit) then test=EIN endif /* Taste gedrückt, Timer starten */
if "Licht WZ Nord-2/1/0" == AUS then { /* Taste wieder losgelassen */
DimmerZeit = MaximalTastenZeit - TimerRestZeit /* Timer auslesen, zwischenspeichern */
} endif
if DimmerZustand == EIN and DimmerZeit < 1000u64 then DimmerZustand = AUS endif /* Dimmer war an, wurde kurz gedrückt, ist nun aus */
if DimmerZustand == AUS and DimmerZeit < 1000u64 then DimmerZustand = EIN endif /* Dimmer war aus, wurde kurz gedrückt, ist nun an */
if DimmerZustand == AUS and DimmerZeit > 1000u64 then DimmerZustand = EIN endif /* Dimmer aus, wurde lang gedrückt, ist nun an,Kinderzimmerf.*/
Ich starte einen Timer wenn eine taste gedrückt wird und lese den Rest aus, wenn sie losgelassen wird. Dann rechne ich aus, wie lang sie gedrückt war. Das klappt alles soweit.
Nun muss ich auswerten. Dazu muss der DimmerZustand und die "gedrückt" zeit ausgewertet werden. Wenn also der Dimmerzustand auf AUS steht und kürzer als 1000ms gedrückt wurde, soll der Dimmerzustand auf AN. Wenn bei DImmerzustand AUS länger gedrückt wird soll Dimmerzustand auch an. Das muss unterschieden werden, weil noch mehr unterschiedliche Funktionen dann ausgeführt werden sollen. Die Abfrage ist also nicht redundant. Bei Dimmerzustand AN und kurzem Tastendruck soll er auf AUS gehen. Die paar Zeilen code machen das aber nicht, weil offensichtlich die if-abfragen nicht alle ausgewertet werden, weil ja gleiche Abfragen in mehreren aufeinaderfolgenden if-abfragen getätigt werden.
Ich hoffe jemand versteht was ich meine????
Ach ja, ich will damit den Zustand von ELTAKO EUD12NPN abfragen (mitprotokollieren). Die habe ich an einen Aktuatorausgang gehängt. Das funktioniert sehr gut, solang ich keinen EibPC hatte. War halt die billigere Lösung
Kommentar