Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Verständnisfrage zum Verhalten change() bei Systemstart

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [Codebeispiel] - √ - Verständnisfrage zum Verhalten change() bei Systemstart

    Hallo,
    im Zuge von einigen Bugchecks/Optimierungen ist mir das Verhalten bei change() beim Neustart des EIBPC nicht ganz klar.

    Wenn ich auf ein read(LichtInputGA) nach dem Systemstart eine Antwort AUS bekomme, wird dann die nachfolgende Anweisung mit change() überhaupt ausgeführt?

    if (change(LichtInputGA)) and (LichtInputGA==AUS) and ((hour()>=StundeEin) or (hour()<StundeAus)) then write()... endif

    Oder wird diese Abfrage übersprungen, da der Initialisierungsstatus auf AUS steht?
    Ich hoffe die Frage ist halbwegs verständlich. Hintergrund des ganzen ist meine aktuelle Auswertung des KNX-Traffics beim Neustart des EIBPC, der im Zusammenhang mit diesen Routinen eine Vielzahl von Doppelten writes anzeigt... und change() hier eine Abhilfe wäre. Allerdings müßten die Routinen durchlaufen werden, da hier auch eine zeitliche Prüfung mit AND verknüpft ist.

    #2
    ich denke es würde nicht durchlaufen werden, da AUS ja der Standardwert ist und damit kein "Change" stattgefunden hat. Aber im Zweifelsfall mal ausprobieren.

    Wenn die Routine beim Systemstart immer aus geführt werden soll dann vielleicht eher ein Konstrukt nach diesem Motto:

    if ( change() or systemstart() ) and GA=AUS then
    ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

    Kommentar


      #3
      Hallo Uwe!
      danke! Manchmal wird man doch Markoblind....

      Habe das gestern auf die Schnelle nachgestellt und es verhält sich so wie beschriebe/vermutet nur mit dem Change...
      Auch der Lösungsansatz ist korrekt und passt!
      Ich hatte für andere Makros ohnehin schon eine Initxxx-Variable im Einsatz, die nach dem systemstart ein und dann nach Zeit x wieder ausgeht.
      Diese, wie Du geschrieben hast mit OR verknüpfen und gut ist es.

      Kommentar

      Lädt...
      X