Zitat von enertegus
Beitrag anzeigen
Normale Abfragen, also
[highlight=epc]
if a>2 then a=3 endif
[/highlight]
sind "normal" [was das auch heissen mag] zu behandeln und richtig.
[highlight=epc]
if a>2 then a=3 endif
[/highlight]
sind "normal" [was das auch heissen mag] zu behandeln und richtig.
Normale Fälle, also a ist weiterhin größer 2 sind problematisch und wenn ich change verwende, muss ich aufpassen, dass das ja im nächsten Zyklus sein kann, was die ganze Kette wieder durchlaufen kann.
Die Denke ist grundsätzlich ereignisorientiert, wie es eben am KNX Bus so ist und die Programmierung an diesen orientiert ist.
Also: Warum soll Rollo_Sonnenaufgang_m neu berechnet werden? Weil sich etwas ändert, hier change( sunriseminute() ) oder Rollo_Sonnenaufgang_frueher. Man muss also das Ergeignis nicht das Ergebnis (hier: Rollo_Sonnenaufgang_m) im Auge haben.
Also: Warum soll Rollo_Sonnenaufgang_m neu berechnet werden? Weil sich etwas ändert, hier change( sunriseminute() ) oder Rollo_Sonnenaufgang_frueher. Man muss also das Ergeignis nicht das Ergebnis (hier: Rollo_Sonnenaufgang_m) im Auge haben.
[highlight=epc]
// Sonnenaufgang
Rollo_Sonnenaufgang_frueher = 15u08
Rollo_Sonnenaufgang_h = sunrisehour()
Rollo_Sonnenaufgang_m = sunriseminute(); /* -> Minuten: 0 <= m <= 59 */
if change( sunriseminute() ) or Rollo_Sonnenaufgang_frueher then {
if ( Rollo_Sonnenaufgang_m < Rollo_Sonnenaufgang_frueher ) then {
Rollo_Sonnenaufgang_m = Rollo_Sonnenaufgang_m + 60u08;
Rollo_Sonnenaufgang_h = Rollo_Sonnenaufgang_h - 1u08;
} endif;
Rollo_Sonnenaufgang_m = Rollo_Sonnenaufgang_m - Rollo_Sonnenaufgang_frueher
} endif
[/highlight]
// Sonnenaufgang
Rollo_Sonnenaufgang_frueher = 15u08
Rollo_Sonnenaufgang_h = sunrisehour()
Rollo_Sonnenaufgang_m = sunriseminute(); /* -> Minuten: 0 <= m <= 59 */
if change( sunriseminute() ) or Rollo_Sonnenaufgang_frueher then {
if ( Rollo_Sonnenaufgang_m < Rollo_Sonnenaufgang_frueher ) then {
Rollo_Sonnenaufgang_m = Rollo_Sonnenaufgang_m + 60u08;
Rollo_Sonnenaufgang_h = Rollo_Sonnenaufgang_h - 1u08;
} endif;
Rollo_Sonnenaufgang_m = Rollo_Sonnenaufgang_m - Rollo_Sonnenaufgang_frueher
} endif
[/highlight]


Einen Kommentar schreiben: