Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Problem mit sleep (https://www.delphipraxis.net/130060-problem-mit-sleep.html)

I love Delphi 2. Mär 2009 18:52


Problem mit sleep
 
Hallo,
ich habe ein Programm geschrieben, welche alle zehn Millisekunden Daten an den Parallelport schickt, bzw. sollte. Die Übertragung an sich funktioniert zwar hervorragend, das mit der Zeit jedoch nicht. Ich schicke 983 Werte weg (mit je 10 ms Pause dazwischen ab). Anschließend kommt nochmal eine 10800 ms lange Pause. wenn ich nun die Zeit errechne, die er brauchen dürfte, und die mit der gemessenen vergleiche ergibt sich eine Differenz von bis zu 6000 ms. Zudem "hängt" bei sleep() das ganze Program.

Kennt jmd. eine Lösung wie ich dieses "Zeitproblem" lösen kann?

mkinzler 2. Mär 2009 18:55

Re: Problem mit sleep
 
Sleep() wartet aktiv. Besser Delay() oder einem Hintergrund-Thread

Forlan 2. Mär 2009 18:56

Re: Problem mit sleep
 
Schau dir mal die Timer Komponente an...

Dunkel 2. Mär 2009 18:57

Re: Problem mit sleep
 
Zitat:

Zitat von I love Delphi
Kennt jmd. eine Lösung wie ich dieses "Zeitproblem" lösen kann?

Z.B. ein Echtzeitbetriebssystem benutzen. Windows ist keins, zeitkritische Aufgaben sind nahezu nicht handlebar.

I love Delphi 2. Mär 2009 19:00

Re: Problem mit sleep
 
Hallo,
mit der habe ich es auch schon probiert. Die ist (bei mir) aber noch ungenauer. Zwar wird das Fenster dann immer wieder neu gezeichnet, aber die Sache mit der Zeit ist bei mir im Moment wichtiger.

@Dunkel: Das ist glaube ich ein wenig zu aufwendig für mein Ziel. :)

Freue mich trotzdem über jede Idee!

Dunkel 2. Mär 2009 19:07

Re: Problem mit sleep
 
Zitat:

Zitat von I love Delphi
@Dunkel: Das ist glaube ich ein wenig zu aufwendig für mein Ziel. :)

OK, was ist denn Dein Ziel?

In Windows bekommt jeder Prozess n Millisekunden (irgendwo zwischen 10 und 20) der Zeitscheibe zugeteilt in der es machen kann was es möchte. Dann "würgt" Windows diesen Prozess ab und gibt dem nächsten Prozess Zeit etwas zu machen. In sofern kann ein Sleep nicht exakt 10 ms pausieren.

Es gibt Aufsätze für Windows um zeitkritische Tasks zu erledigen. Zumindst habe ich vor einer Ewigkeit solch eine DLL (-Sammlung) gesehen. Erstens war sie nicht ganz billig, zweitens hege ich Zweifel an der Funktion; hat sich aber dennoch sehr interessant angehört. Leider komme ich nicht mehr auf den Namen... :gruebel:

Whatever 2. Mär 2009 19:11

Re: Problem mit sleep
 
Zitat:

Zitat von I love Delphi
mit der habe ich es auch schon probiert.

Womit? Timer oder Delay?

himitsu 2. Mär 2009 19:15

Re: Problem mit sleep
 
Sleep, Delay und TTimer verwenden intern GetTickCount und das hat aktuell eine Auflösung von 8-10ms ... bei so vielen kurzen Intervallen summieren sich die Fehler und es kommt zu solchen Differenzen.

Was willst du denn erreichen?

für "genauere" Messungen/Intervalle im unteren Millisekundenbereich, müßtest du einen HighPerformeceCounter/-Timer verwenden.

Uwe Raabe 2. Mär 2009 19:56

Re: Problem mit sleep
 
Zitat:

Zitat von himitsu
für "genauere" Messungen/Intervalle im unteren Millisekundenbereich, müßtest du einen HighPerformeceCounter/-Timer verwenden.

...und das Ganze auch noch in einem Thread laufen lassen, der möglichst hohe Priorität hat. Die Aufgabe ist alles andere als trivial. Die Addons für Windows, die sowas einigermaßen stabil unterstützen kosten alle mehrere Hekto-€ und haben eine enorme Lernschwelle.

I love Delphi 2. Mär 2009 19:59

Re: Problem mit sleep
 
Timer habe ich ausprobiert. Delay ist doch sleep() oder?

Ich möchte mit dem Programm eine Maschine ansteuern welche das Rauchverhalten von Rauchern simuliert. Deswegen sind solche Ungenauigkeiten natürlich sehr schlecht. Gibt es denn nicht eine (kostenlose) Lösung für mein Problem?

Ich werde mal ausprobieren was passiert, wenn ich die Priorität im Taskmanager auf Echtzeit setze.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 Uhr.
Seite 1 von 4  1 23     Letzte »    

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