Re: Aktion einmalig jeden Tag Kategorie: Programmierung (von ChristianS - 26.10.2009 22:09) | ||
Als Antwort auf Re: Aktion einmalig jeden Tag von Schettner - 26.10.2009 20:45 | ||
| ||
Hallo, könnte das funktionieren? Könnte es einen Timerüberlauf geben? thread every_day { long time, timer; wait system.hour()==0; //00:00Uhr time=system.timer(); wait (system.timer()-time)>(12600*1000);//warte 12600 Sekunden, bis 3:30 Uhr //berechnung SASU } Gru�, ChristianS. > Hallo Heiko, > das könnte man natürlich tun, aber im Prinzip ist es auch egal, dass er die Zeiten mehrfach berechnet, > ich dachte nur, es gäbe möglicherweise eine intelligentere Lösung, die keine Rechenzeit verschwendet. > > Eine einfache Routine, die täglich zu einem bestimmten Zeitpunkt genau einmal > ausgeführt wird. > > Gru�, > ChristianS. > > Hallo Christian, > > Da hast Du natürlich recht, wenn man den Mitternachtswechsel auswertet, > > hat man an 2 Tagen im Jahr, wenn jeweils auf SZ/WZ umgestellt wird, eine Abweichung drin, > > die aber am darauffolgenden Tag wieder korrigiert wird. > > > > Was passiert denn bei Deiner Schleife, wenn Du innerhalb der Loop ein 'Sleep' einfügst? > > > > Dass die Berechnung mehrmals erfolgt, liegt ja sicherlich daran, weil die Schleifenbedingung für die ganze > > 12600te Sekunde erfüllt ist und die Schleife damit in dieser einen Sekunde mehrmals durchlaufen wird. > > Bei einem Sleep 1000 nach hwcom.ret sollte dann auf jeden Fall die nächste Sekunde (also 12601) > > erreicht sein und damit die Schleife nicht mehr durchlaufen werden. > > > > Gru� Heiko > > > > > Hallo Heiko, > > > danke für die Antwort, aber kann ich nicht ganz nachvollziehen. Ausserdem müsste ich bei einer > > > Berechnung um Mitternacht wieder die Zeitumstellung (Sommer-/Winterzeit Winter-/Sommerzeit) > > > berücksichtigen. Um 03:30 hat das keinen Einfluss auf die Sonnenauf-/Untergänge....kannst Du Deine > > > Idee mal an einem Bsp. verdeutlichen? > > > > > > Danke und Gru�, > > > ChristianS > > > > > > > Hallo Christian, > > > > Du könntest den Zeitsprung um Mitternacht auswerten, indem Du zweimal nacheinander die Zeit > > > > abfragst. Dabei den letzten Wert mit dem vorherigen vergleichst und wenn dieser grö�er ist, als der > > > > aktuelle, dann die Berechnung auslöst. > > > > Gru� Heiko > > > > > Hallo, > > > > > ich versuche einmal täglich den Sonnenstand zu berechnen. Das soll jede Nacht > > > > > um 03:30 Uhr passieren. Jetzt habe ich das in eine Serialzeit umgerechnet: (12600) und vergleiche > > > > > in einer Schleife die tatsächliche Zeit mit 12600. > > > > > > > > > > > > > > > loop > > > > > { > > > > > if time_to_serial(system.hour(),system.minute(), system.second())==12600 > > > > > { > > > > > geo.SaSu(system.year(),system.month(),system.day(), > > > > > myconst.breitengrad,myconst.laengengrad,0,time); > > > > > hwcom.print("Sonnenaufgang berechnet:"); > > > > > hwcom.ret(); > > > > > } //überprüfe 03:30 Uhr zwecks Berechnung des Sonneauf-/untergangs > > > > > } > > > > > > > > > > dann berechnet er den Sonnenstand mehr als 15x.Gibt es eine elegantere Lösung? Hat > > > > > jemand eine Idee? > > > > > > > > > > Gru�, > > > > > ChristianS | ||
Antwort schreiben Antworten: Re: Aktion einmalig jeden Tag (von Jörg Hansen - 27.10.2009 20:58) Re: Aktion einmalig jeden Tag (von ChristianS - 28.10.2009 18:10) Re: Aktion einmalig jeden Tag (von ChristianS - 28.10.2009 20:03) Re: Aktion einmalig jeden Tag (von Jörg Hansen - 29.10.2009 22:33) Re: Aktion einmalig jeden Tag (von ChristianS - 30.10.2009 12:07) |