| Autor |
Beitrag |
Ice
      
Beiträge: 114
|
Verfasst: Di 27.05.03 19:21
Hallo Leute,
ich habe da ein Problem mit der timer Komponente und zwar benötige ich ein Interval von 200 ns und bei der Timer komponente ist das kleinste intervall 1 ms wenn ich mich nicht irre?
Könnt ihr mir da helfen?
Vielen dank im voraus!
mfg
Ice
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 27.05.03 19:43
Hallo!
Ich kann Dir da keine Lösung angeben, jedoch würde ich davon abraten, ein so kurzes Intervall zu verwenden. Als Beispiel:
Mein Rechner arbeitet mit ca. 1,7GHz. Das entspricht einer Taktlänge von ca. 60ns. Bei einem Rechner, der etwas langsamer ist, kann es noch länger sein. Zusammen mit all den anderen Prozessen, die in der CPU abgearbeitet werden, ist es höchst zweifelhaft, ob Du ein Zeitintervall von 200ns zuverlässig verwenden kannst. Windows kann ja selbst die "normalen" Intervalle nicht garantieren!
MfG,
Peter
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
obbschtkuche
Gast
Erhaltene Danke: 1
|
Verfasst: Di 27.05.03 20:27
Auf meinem Athlon XP 2000+ Schaff' ich gerade mal 10 ms...
Wenn du so wenig wie möglich willst, ´guck mal in der OnlineHilfe nach SetTimer. Da kann man dann das Intervall auf 0 setzen.
|
|
mars
      
Beiträge: 238
Debian Woody, Win 2000, Win XP
D7 Ent, Kylix 3
|
Verfasst: Di 27.05.03 20:52
Vielleicht verratest du uns, was du genau machen willst? Möglicherweise gibts dann eine bessere Variante.
|
|
Ice 
      
Beiträge: 114
|
Verfasst: Mi 28.05.03 10:36
Ich möchte gerne die RTS leitung meines Com Ports für 200ns auf 1 setzen danach soll sie wieder auf 0 gehen, das brauche ich um ein Reset auf dem angeschlossenen Gerät auszulösen, ich bin mir nicht ganz sicher ob das auch mit 1 ms funktioniert, werde das mal ausprobieren.
Vielen dank für die schnellen Antworten.
mfg
Ice
|
|
Sven
      
Beiträge: 314
D6 Ent, K3 Pro (patched)
|
Verfasst: Mi 28.05.03 11:32
Ich habe mal von einer Timer-Komponente gehört/gelesen die 1ns schaffen soll. Schau mal torry nach. Dort könntest Du fündig werden.
Sven
_________________ MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 28.05.03 13:10
Zum ständigen Abfragen von Informationen soll man sowieso keine Timer benutzen. Threads lasten das System dabei wesentlich geringer dabei aus.
|
|
Adrian
      
Beiträge: 314
|
Verfasst: Mi 28.05.03 18:58
Hallo,
vielleicht hilft Dir das weiter:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure Warte(us : Longint); var Aufloes, QueryStart, QueryStop : TLargeInteger; Dauer : Real; begin QueryPerformanceFrequency(Aufloes); QueryPerformanceCounter(QueryStart); repeat QueryPerformanceCounter(QueryStop); Dauer:=(QueryStop-QueryStart)/Aufloes; until Dauer>=us; end; |
Allerdings bezweifle ich, daß 200 ns erreichbar sind.
Gruß,
Adrian
|
|
mars
      
Beiträge: 238
Debian Woody, Win 2000, Win XP
D7 Ent, Kylix 3
|
Verfasst: Do 29.05.03 14:18
Mit QueryPerformanceCounter sind etwas abhängig von der Systemuhr bis zu einer Millionstel Sekunden möglich; das sollte also ausreichen.
|
|
TheD
      
Beiträge: 27
|
Verfasst: Fr 30.05.03 23:07
_________________ Bis dannn... TheD!
Wer im Schlachthaus sitzt, sollte nicht mit Schweinen werfen!
|
|
mars
      
Beiträge: 238
Debian Woody, Win 2000, Win XP
D7 Ent, Kylix 3
|
Verfasst: Sa 31.05.03 10:14
Ich habe nicht gesagt, dass diese Zeiten wirklich etwas über die Performance einer Prozedur aussagen oder sich zum genauen Zeitmessen eignen, aber die genannte Funktion bringt dir wirlich so genaue Werte 
|
|
Ice 
      
Beiträge: 114
|
Verfasst: So 01.06.03 19:28
 Vielen Dank für die vielen schnellen Antworten!
Ich habe es zwar nicht gelöst aber ich habe einfach den Timer auf die kleinste mögliche Periode eingestellt(0) und es funktioniert!
Also vielen dank nochmal an alle...
mfg
Ice
|
|