Seite 1 von 1

PBOSL Timer mit 5 Minuten?

Verfasst: 17.12.2005 19:12
von steelbasic
Hallo,

ich brauche einen Timer der mir einen 5-Minutentakt und ggf mehr herausgibt. Ich habe es so wie unten beschrieben probiert. Das scheint nicht zu gehen, der Timer läuft völlig ungenau. Mit 60000 also einer Minute geht es. Mache ich etwas falsch oder geht das mit dem Timer nicht?

Code: Alles auswählen

Procedure Takt_diff()
    Shared Takt_differnz
    Takt_differnz = 1
  EndProcedure
  StartTimer( 2, 300000, @Takt_diff())
Bedanke mich schon einmal für Eure Hilfe 8)

Verfasst: 18.12.2005 10:17
von Tafkadasom2k5
Wenns so nicht geht, dann machs doch so:

Code: Alles auswählen

For I=1 to 5 Step 1
  StartTimer( 2, 100000, @Takt_diff()) 
  Debug "Minute " + I + " von 5 ist bereits vergangen!"
Next

Debug "Jetzt sind 5 Minuten vergangen, obwohl du nur 1 Minute vom Timer genutzt hast-welche akrobatische Gehirnleistung, nicht? xD"
Der Code ist jetzt mal intuitiv geändert worden-hab eigentlich keine Ahnung, wie der Timer funzt.
Aber wenns mit einer Minute geht, dann gehts auch mit 5x1 Minute! :lol:

Gr33tz
Tafkadasom2k5

Verfasst: 18.12.2005 13:49
von MVXA
Man könnte des auch so machen:

Code: Alles auswählen

Procedure Timer()
    Debug "5 min um!"
EndProcedure

lTime = GetTickCount_() + 5*60*1000
Repeat
    If GetTickCount_() > lTime
        lTime = GetTickCount_() + 5*60*1000
        Timer()
    EndIf
    
    Delay(1)
Until GetAsyncKeyState_(#VK_ESCAPE)

Verfasst: 18.12.2005 16:43
von steelbasic
Vielen Dank für die Antworten!

Ich werde wohl eine dieser Lösungen nehmen.

Komisch ist allerdings, dass genau der gleiche code auf meinem Notebook unter XP-Home läuft. Auf einem anderen Rechner mit ME läuft der Timer ungenau und immer zu früh ab.

Verfasst: 18.12.2005 18:09
von MVXA
Liegt daran, dass Windows für die Timer ein Maximum hat. Wenn der
TimeOut Wert größer als das Maximum ist, dann wird das Maximum
genutzt.