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

Re: Timer Kategorie: Programmierung (von Hansi - 21.04.2004 14:28)
Als Antwort auf Re: Timer von ChristianS. - 26.02.2004 22:35
Ich nutze:
C-Control II Unit, CC2-Application-Board, OSOPT_V2
Hallo Martin,
ich habe Deine Antwort zum Timer mit Interesse gelesen. Ich brauche für meinen Wintergarten mit
insgesamt 10 Jalousien und Markisen ebenfalls Timer.
Als Anfänger in CC2 verstehe ich 1.) die return Anweisung in der if i==0 Bedingung nicht.
2.)wenn die Zeit abgelaufen ist müsste i doch 1 sein oder?
Ich wäre über eine aufklärende Antwort sehr dankbar.
Viele Grü�e
Hansi

> > Hallo Christian,
> >
> > ich löse dein Problem folgenderma�en:
> > ~~~~~~~~~~~~~~~
> > // Routine ktime.c2
> > //-----------------------------------------------------
> >   function diffm(long oldtim, int minutes) returns byte
> > //-----------------------------------------------------
> > // Routine zur Abfrage ob bestimmte Zeit in Minuten schon vergangen ist
> > // result = 0 -> NEIN,  result = 1 -> JA
> >   {
> >   long newdif, deltim;
> >   deltim = minutes;             // gewünschte Zeitdifferenz in m
> >   deltim = deltim * 60000;    // gewünschte Zeitdifferenz in ms
> >   newdif = system.timer() - oldtim;  // aktuelle Zeitdifferenz in ms
> >   if deltim > newdif
> >     return 0;                        // noch nicht vergangen
> >   return 1;
> >   }
> > ~~~~~~~~~~~~~~~
> > ...und der Aufruf dieser Routine läuft so ab:
> > ~~~~~~~~~~~~~~~
> > // Thread Main
> > {
> >   int i;
> >   long timerone;
> > ...
> >   system.TIME time;
> >   system.gettime(time);
> > ...
> >   timerone = system.timer();      // timer starten
> > ...
> >   i = ktime.diffm(timerone, 10);   // schon 10 Minuten seit Start ?
> >     if i == 0
> >       {
> >       (irgendeine Aktion);            // Zeit abgelaufen
> >       return;
> >       }
> > ...
> > }
> > ~~~~~~~~~~~~~~~
> > Den Timer kannst du jederzeit neu starten, auch zwischendurch,
> > natürlich gehts auch mit längeren oder kürzeren Intervallen als zB. Minuten.
> > Ich hab mir Routinen für Sekunden, Minuten, Stunden und Tage geschrieben.
> >
> > Aber pass auf:
> > Wenn du den Timer nicht zurücksetzt, wird er alle 48 Tage von selbst "aktiv",
> > denn nach dieser Zeitspanne hat "system.timer()" einen internen Zähler - �berlauf...
> >
> > GruÃ? Martin


    Antwort schreiben


Antworten: