AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Timer Starten Stoppen

Ein Thema von DelphiManiac · begonnen am 8. Dez 2005 · letzter Beitrag vom 8. Dez 2005
Antwort Antwort
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#1

Timer Starten Stoppen

  Alt 8. Dez 2005, 11:29
Hallo, ich habe eine Verständnisfrage zu Timern in Delphi,

ich habe ein Programm, dass einen Timer zum Abfragen einer Schnittstelle braucht:
hier werden mehrere Funktionen durchgeführt bsp:

so sieht mein Timer ungefähr aus:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
If Timer1.Tag=0 then
begin
  Timer1.Tag=1 // --> Timer wird gerade ausgeführt
  Get_Druck // Lese Druck aus
  Get_Temperatur // Lese Temperatur
  // usw usw.
  Timer1.Tag=0 // --> Timer ist fertig
end;
end;
Wenn der Timer einen Intervall von 100ms hat, heißt es doch das er wenn er aktiv ist alle 100ms in die Timer1Timer Prozedur springt oder???

Dies ist aber unabhängig davon ob die Funktionen in dem Zeitintervall abgearbeitet worden sind oder?
Oder wartet der Timer bis die Ausführung fertig ist?


Ich will den Timer stoppen können timer1.enabled:=false; , aber erst nachdem der Timer durchlaufen ist.

Ich habe das Gefühl der Timer, wenn er gestoppt wird stoppt sofort, d.h. die Funktionen in dem Timer werden möglicherweise nicht alle ausgführt??? Ist das richtig?


Danke schonmal führ Eure Mühen.

Gruß DelphiManiac
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Timer Starten Stoppen

  Alt 8. Dez 2005, 11:36
Hallo DelphiManiac,

wenn das timer event deinen Code getriggert hat, kannst du ruhig Timer.Enabled auf FALSE setzen und nach dem Abarbeiten deines Codes wieder auf TRUE - dein Code wird vollständig ausgeführt. Wenn du die eingestellten Zeitintervalle beibehalten willst, dann ist dein Ansatz mit dem Tag gut. Du musst dann aber verhindern, dass dein Code weiter ausgeführt wird, wenn sich die Ereignisse überlappen. Eventuell solltest du überlappende Ereignisse einfach in einer globalen Variable zählen und dann deinen Code sofort verlassen. Damit bleibt die Taktung erhalten.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#3

Re: Timer Starten Stoppen

  Alt 8. Dez 2005, 12:12
Der Timer ist sehr ungenau, da er über Windows-Messages getriggert wird. Um wirklich genau zu arbeiten, sollte man Hier im Forum suchenQueryPerformanceCounter nutzen.

Das mit dem Tag kannst du dir vermutlich sparen, da die Funktion nie mehrmals gleichzeitig ausgeführt wird. Hängt damit zusammen, dass der Timer nur eine Windowsmessage abschickt. Wenn du also in den aufgerufenen Prozeduren kein Application.ProcessMessage oder Application.HandleMessages drin hast, dann läuft die Timer-Prozedur nie mehrmals gleichzeitig.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz