Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Probleme mit Timer und sleep (https://www.delphipraxis.net/69567-probleme-mit-timer-und-sleep.html)

happyaura 17. Mai 2006 10:27

Re: Probleme mit Timer und sleep
 
besten Dank, hab gerade mal das Delay von negaH eingebaut. läuft alles bestens.
da ich in meiner Prozedur gelegentlich "zu lange" brauch werd ich wohl am anfang den Timer abschalten. kann ich einfluß drauf nehmen, wie weit der Timer fortgeschritten ist, wenn ich ihn anschalte? Sprich bei einem interval von 100ms würd ich ihn beim anschalten gerne dazu bringen, dass er "denkt", er hätte gerade schon bis 99ms hochgezählt.
das läßt sich sonst ja über ändern des Intervals handhaben, aber vielleicht geht es auch direkter. wenn nicht, ist auch nicht so wild, muß mal schauen, ob ich das noch mit einbaue.

Klaus01 17. Mai 2006 10:31

Re: Probleme mit Timer und sleep
 
wenn Du den Timer enables startet er bei 0
macht auch sonst wenig Sinn, oder?

Grüße
Klaus

himitsu 17. Mai 2006 10:40

Re: Probleme mit Timer und sleep
 
Beeinflussen kannst du das nicht ... du könntest Höchstens das Intervall ändern, also statt bei 100 schon mit 1 starten

Delphi-Quellcode:
Begin
  Timer.Enabled := False;
  Timer.Intervall := 100;

  ...

  Timer.Intervall := irgendwas;
  Timer.Enabled := True;
End;

kannst ja die Zeit messen, die deine Prozedur gebraucht hat und diese dann abziehen.
(Min(..., 1) ist dafür da, damit mindestens 1ms Dauer rauskommt und vorallem nichts negatieves)
Delphi-Quellcode:
Var Start: Integer;
Begin
  Timer.Enabled := False;
  Timer.Intervall := 100;
  Start := GetTickCount;

  ...

  // Dauer = GetTickCount - Start
  Timer.Intervall := Min(100 - (GetTickCount - Start), 1);
  Timer.Enabled := True;
End;

happyaura 17. Mai 2006 11:14

Re: Probleme mit Timer und sleep
 
Hallo Klaus,

sinn kann das schon machen:

onTimer braucht nahezu keine zeit, wenn der sensor nicht ausgelesen wird, sonst so ca 300ms.
der timer soll aber mit 100ms laufen. also wär es ja sinnvoll, nach dem auslesen eines sensors die prozedur onTimer wieder aufzurufen. das ist sicherlich möglich über eine an sonsten ungenutzte boolvariable (if sensor_wurde_ausgelesen then onTimer else timer1.enabled=true) oder eben den internen zähler, sofern es sowas gibt, hochzusetzen.

ich hab wohl in letzter Zeit zu viel mit Mikrocontroller Programmierung verbracht, hab mir über das ganze assemblieren die hochsprachen abgewöhnt. wird dringend zeit, was dagegen zu unternehmen...

@himitsu
an den umweg übers interval hab ich auch schon gedacht. mal schauen, ob ich das als hübsch empfinde, sonst sind es ja auch nur 100ms, die man zusätzlich warten muß...


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:53 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz