Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi timer parallel? (https://www.delphipraxis.net/65663-timer-parallel.html)

happyaura 19. Mär 2006 17:29


timer parallel?
 
hallo,

ich hab eine frage zu timern in delphi. mein ziel ist es, 2-4 timer zu nutzen, um damit einen sensor auszulesen. jeder timer ist sozusagen für einen kanal verantwortlich, sprich kanal a wird alle 2 sekunden ausgelesen, kanal b alle 4. nun hab ich das problem, dass der sensor nicht mehrere anfragen auf einmal bearbeiten kann.
wenn als zum zeitpunkt Z kanal a und kanal b ausgelesen werden sollen, wie verhält sich delphi? führt es die beiden zugehörigen proceduren automatisch hintereinander aus oder verwurstet es die, so dass ich irgendwelche chaotischen daten bekommen, wenn überhaupt? gibt es in delphi semaphoren oder ähnliches, um die timer zu "syncronisieren"?




und eine andere frage noch, da kann ichmir die antwort aber wahrscheinlich auch aus 'ner hilfe holen. die messdaten sollen in einer datei abgespeichert werden, ist es sinnvoll nach jedem messwert in die datei zu schreiben? die datei offen lassen oder zwischendurch schließen(ich vermute, in delphi gibt es auch eine art fopen(file) und fclose(file), so kenn ich das zumindest von c/c++ )? oder alle 10,100 oder 1000 werte erst in die datei schreiben und vorher in 'nem array zwischenspeichern?
die frage kann ich mir aber wie gesagt evtl selbst beantworten, nachdem ich mich mit dem schreiben in dateien in delphi auseinandergesetzt habe, aber es wäre lieb, wenn ihr mir zumindest mit den timern weiterhelfen könntet.

besten dank und liebe grüße,
Martin

P.S.: ich nutze z.Zt Delphi 6

BenjaminH 19. Mär 2006 17:42

Re: timer parallel?
 
Wenn das Sekundenwerte sein sollen, dann wird es dass beste sein, um nicht Abfragen zeitgleich zu machen, einen Timer, der jede Sekunde anspringt zu nehmen und darin die vergangene Zei zu zählen und immer wenn sie ein vielfaches von 2 oder 4 ist anzuspringen und jeweils das passende zu tun, so wird das zwar nacheinander, aber auch zum (fast) richtigen Zeitpunkt gemacht:
Delphi-Quellcode:
If (Time mod 4)=0 Then
Begin
    Abfrage1..
End;
If (Time mod 2)=0 Then
Begin
    Abfrage2..
End;
Inc(Time);


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:39 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