![]() |
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? |
Re: Problem mit sleep
Sleep() wartet aktiv. Besser Delay() oder einem Hintergrund-Thread
|
Re: Problem mit sleep
Schau dir mal die Timer Komponente an...
|
Re: Problem mit sleep
Zitat:
|
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! |
Re: Problem mit sleep
Zitat:
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: |
Re: Problem mit sleep
Zitat:
|
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. |
Re: Problem mit sleep
Zitat:
|
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 04:36 Uhr. |
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