Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

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
Ich nutze:
C-Control II Station, OSOPT V3.1
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)