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

Re: Frage zu return Kategorie: Programmierung (von Martin Binder - 23.04.2004 9:59)
Als Antwort auf Frage zu return von Hansi - 22.04.2004 8:40
Ich nutze:
C-Control II Unit, CC2-Application-Board, eigenes Board, OSOPT V3.0
Hallo Hansi,

du hast recht, das ist ein Tippfehler...sollte  i ==1 heiÃ?en...

Ich schreib normal ...if ktime.diffm(timerone, 10) == 0
und dann kommt, was während des Timers geschehen soll, aber für Anfänger hab ichs umgeschrieben.
Dadurch ist das passiert...sorry.

Martin

> 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.
> Was macht die da? 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...
> > >
>


    Antwort schreiben


Antworten:

Re: Frage zu return (von Hansi - 23.04.2004 16:13)