Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi DLL pausieren lassen ohne Prozessorbelastung? (https://www.delphipraxis.net/94556-dll-pausieren-lassen-ohne-prozessorbelastung.html)

frank-wob 23. Jun 2007 09:21


DLL pausieren lassen ohne Prozessorbelastung?
 
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

himitsu 23. Jun 2007 09:31

Re: DLL pausieren lassen ohne Prozessorbelastung?
 
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.

Apollonius 23. Jun 2007 10:25

Re: DLL pausieren lassen ohne Prozessorbelastung?
 
In der Codelibrary ist doch auch eine ressourcenschonendere Variante von delay. klick

frank-wob 23. Jun 2007 14:10

Re: DLL pausieren lassen ohne Prozessorbelastung?
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:01 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