AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit sleep

Ein Thema von I love Delphi · begonnen am 2. Mär 2009 · letzter Beitrag vom 4. Mär 2009
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
I love Delphi

Registriert seit: 6. Nov 2007
68 Beiträge
 
#1

Problem mit sleep

  Alt 2. Mär 2009, 18:52
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?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Problem mit sleep

  Alt 2. Mär 2009, 18:55
Sleep() wartet aktiv. Besser Delay() oder einem Hintergrund-Thread
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Forlan
Forlan

Registriert seit: 17. Feb 2008
Ort: Herford
265 Beiträge
 
Delphi 2007 Architect
 
#3

Re: Problem mit sleep

  Alt 2. Mär 2009, 18:56
Schau dir mal die Timer Komponente an...
Marcel
マルセル
www.youtube.com/beethoven1990
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Problem mit sleep

  Alt 2. Mär 2009, 18:57
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.
Es ist zu wahr um schön zu sein...
  Mit Zitat antworten Zitat
I love Delphi

Registriert seit: 6. Nov 2007
68 Beiträge
 
#5

Re: Problem mit sleep

  Alt 2. Mär 2009, 19:00
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!
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Problem mit sleep

  Alt 2. Mär 2009, 19:07
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...
Es ist zu wahr um schön zu sein...
  Mit Zitat antworten Zitat
Whatever

Registriert seit: 7. Jan 2009
Ort: 127.0.0.1
102 Beiträge
 
#7

Re: Problem mit sleep

  Alt 2. Mär 2009, 19:11
Zitat von I love Delphi:
mit der habe ich es auch schon probiert.
Womit? Timer oder Delay?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#8

Re: Problem mit sleep

  Alt 2. Mär 2009, 19:15
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.020 Beiträge
 
Delphi 12 Athens
 
#9

Re: Problem mit sleep

  Alt 2. Mär 2009, 19:56
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.
Uwe Raabe
  Mit Zitat antworten Zitat
I love Delphi

Registriert seit: 6. Nov 2007
68 Beiträge
 
#10

Re: Problem mit sleep

  Alt 2. Mär 2009, 19:59
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 20:37 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