AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi DLL pausieren lassen ohne Prozessorbelastung?
Thema durchsuchen
Ansicht
Themen-Optionen

DLL pausieren lassen ohne Prozessorbelastung?

Ein Thema von frank-wob · begonnen am 23. Jun 2007 · letzter Beitrag vom 23. Jun 2007
Antwort Antwort
frank-wob

Registriert seit: 26. Jul 2005
Ort: Wolfsburg
9 Beiträge
 
Delphi 7 Professional
 
#1

DLL pausieren lassen ohne Prozessorbelastung?

  Alt 23. Jun 2007, 09:21
Hallo,

ich habe eine DLL geschrieben die drei Funktionen exportiert(openusb,closeusb,setdevice) Diese DLL wird benutzt um über eine USB Schnittstelle einen MicroController anzusprechen.

Die DLL funktioniert auch einwandfrei, aber ich habe einen kleinen Schönheitsfehler. Wenn setdevice aufgerufen wird, wird ein Befehl an den µC abgesetzt, 1000 mS gewartet und danach ein weiterer Befehl abgesetzt. Während dieser Zeit darf kein weiterer Befehl akzeptiert werden.

Die 1000 mS habe ich mit der Delay Funktion von Luckie aus der Code-Library realisiert. Wie gesagt, eigentlich funktioniert alles wie ich es möchte, allerdings steigt die Prozessorlast während des Delays auf über 80 Prozent. Da ich im Hauptprogramm während dieser Zeit weitere recht umfangreiche Berechnungen durchführen muss, ist das nicht so optimal.

Gibt es eine einfache Möglichkeit das zu ändern? Würde mich über ein paar Tips freuen.

Gruß Frank
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: DLL pausieren lassen ohne Prozessorbelastung?

  Alt 23. Jun 2007, 09:31
wird Setdevice und das nachfolgende Delay in 'nem Thread ausgeführt?

wenn ja, dann nimm einfach nur Sleep, denn Delay führt ja einiges intern aus um die Befehlsverarbeitung aufrecht zu erhalten und wenn du 'nen Thrad nutzt, dann hat der andere Thread ja auch so schon seine Bearbeitungszeit und das Delay ist garnicht nötig.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: DLL pausieren lassen ohne Prozessorbelastung?

  Alt 23. Jun 2007, 10:25
In der Codelibrary ist doch auch eine ressourcenschonendere Variante von delay. klick
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
frank-wob

Registriert seit: 26. Jul 2005
Ort: Wolfsburg
9 Beiträge
 
Delphi 7 Professional
 
#4

Re: DLL pausieren lassen ohne Prozessorbelastung?

  Alt 23. Jun 2007, 14:10
Hallo,

Setdevice wird nicht in einem Thread ausgeführt. Das scheint aber die Lösung zu sein.Die ressourcenschonendere Variante funktioniert auch nicht viel besser als die von Luckie. Die Prozessorauslastung ist nach wie vor sehr hoch.

Ich werde es mal mit einem Thread probieren.

Gruß Frank
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:18 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