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

Re: system.timer() Überlauf Kategorie: Programmierung (von Detlef - 28.08.2012 8:28)
Als Antwort auf Re: system.timer() Überlauf von AndrĂ© H. - 2.08.2012 16:13
Ich nutze:
C-Control II Station
> Hallo Detlef,
>
> > wie ist das mit dem TimerĂĽberlauf genau:
> > Ich habe gelernt, wenn ich von system.timer() eine Long Variable abziehe, ist das Ergebnis immer
> > korrekt, egal ob TimerĂĽberlauf.
> > timer = system.timer();
> > ...
> > if system.timer()-timer >=500
> > ...

>
> Korrekt.
>  
>  
> > Wie verhält es sich denn, wenn ich in diesem Spiel noch einen Offset addiere?
> >
> > timer = system.timer()+30000;
> > ...
> > if timer - system.timer() <=0
> > ...

> >
> > Funktioniert das? Was ist mit dem Fall, daĂ? system.timer() zusammen mit dem Offset einen Ă?berlauf
> > produziert? Was steht dann in timer, wie läuft dann der anschlie�ende Vergleich?
>
> Das wird nicht immer Funktionieren, da das Ergebnis fĂĽr bis zu 30sek. nicht stimmen kann.
> Wichtig ist bei der Timer-Berechnung mit �berläufen immer, da� binär gesehen
> vom grö�eren Wert immer der kleinere abgezogen wird. Also ohne beachtung des Vorzeichens.
>
>  
> > Ich verwende das, weil ich in einem Thread mehrere verkette Abläufe nach gleichem Schema aber mit
> > unabhängig getriggerten Schrittfolgen abhandele. Dieser Thread muckt nach 14 Tagen - 2 Monaten
> > immer rum. Alternativ: Wie setze ich system.timer() zyklisch zurĂĽck? (Resettaste drĂĽcken ist die
> > heutige Lösung!)
>
> Den Timer kann man nicht zurĂĽcksetzen. Zumindest nicht direkt.
> Das sollte man auch nicht, da am Timer noch andere Dinge hängen.
>
> Aber warum benutzt Du nicht fĂĽr den Offset eine Variable?
>
> Wenn Du nach Ablauf einer Zeit etwas auslösen willst, reicht folgendes:
> long Offset;
> ...
> Offset=30000;
> timer=system.timer();
> ...
> ...
> if system.timer() - timer>=Offset { ... }
>

>
> MfG André H.

Danke André,

es gibt bei mir einen einzigen Thread, der alle in der Steuerung auftretenden verzögerten,
bzw. verketteten Abläufe steuert. Dazu gibt es Einträge in einem Array das von vielen Instanzen
beschrieben wird, und von diesem Thread dann abgearbeitet wird. Ich werde nicht umhin kommen,
zu der Offsetzeit auch noch die zu der Zeit gĂĽltige system.timer() Zeit in einem weiteren Feld
abzuspeichern. Bislang habe ich halt nur ein Feld mit dem Wert "system.timer()+Offset" belegt.

Nun denn. Mal sehen wie es läuft. Momentan kann ich den Fehler nicht nachstellen, da ich jede
Woche neue Updates einspiele weil mein Iphone gerade "Haussteuerung" lernt! ;-)

Oder kann man system.timer() vorbelegen????


    Antwort schreiben


Antworten: