![]() |
Progress Bar während einer sleep funktion?
hallo zusammen...
ich habe folgendes Problem. ich steuere über den PC ne Relaiskarte an, um damit Alkohol-Pumpen zu aktivieren. Die Aktivierungszeit der Pumpen hab ich mit "sleep(xx)" festgelegt. Nun möchte ich gerne das während des Pumpvorganges ein Progressbar den Pumpstatus, bzw den füllstatus des Glases anzeigt. Hier mal ein kleiner ausschnitt aus dem Prog.. Portout(888,01); // pumpe wird aktiviert sleep(2000); // pumpe läuft 2 sekunden portout(888,0); // pumpe wird ausgeschaltet. das ganze wird über nen Button aktiviert.. kann man da nen Progress bar einbauen ohne auf die sleep funktion zu verzichten?? und wie muss ich das bewerkstelligen? vielen dank schonmal in vorraus :) |
Re: Progress Bar während einer sleep funktion?
Zitat:
|
Re: Progress Bar während einer sleep funktion?
nimm anstelle von Sleep einfach eine Schleife
Delphi-Quellcode:
ist ungetestet
var LTime, LTime2: Cardinal;
begin ProgressBar1.Max := 2000; LTime := GetTickCount + 2000; Portout(888,01); // pumpe wird aktiviert repeat Sleep(30); //damit die schleife nicht zu oft durchläuft LTime2 := GetTickCount; ProgressBar1.Position := 2000 - (LTime - LTime2); until LTime2 >= LTime; portout(888,0); // pumpe wird ausgeschaltet. |
DP-Maintenance
Dieses Thema wurde von "Daniel" von "Fragen / Anregungen zur DP" nach "VCL-Komponenten und Controls" verschoben.
|
Re: Progress Bar während einer sleep funktion?
das mit der schleife hört sich gut an.
ich werde das mal am wochenende testen und dann hoffentlich mit einer erfolgsmeldug zurückkehren :) mfg der Bademeister |
Re: Progress Bar während einer sleep funktion?
Das ist aber gefaehrlich, da die Zeiten sich nicht aufsummieren.
Sleep bedeutet das Windows einen anderen Prozess abarbeitet und nicht vor der angegebenen Zeit zurueckkommt. Es kann natuerlich auch etwas laenger dauern. Ich wuerde hier mit mehreren Timern arbeiten. Indem man im Timerereignis den Timer abstellt, bekommt man einen Oneshot Timer. Also Pumpe fuer x ms an bedeutet das man die Pumpe oeffnet und den Timer aktiviert, der nach x ms die Pumpe abstellt und sich selbst deaktiviert. Ein weiterer Timer treibt den Progressbar an. |
Re: Progress Bar während einer sleep funktion?
Zitat:
Zur Aktualisierung während des Vorgangs. :) Sonst hängt die Form. |
Re: Progress Bar während einer sleep funktion?
Sorry, das ist und bleibt ungenau. Um so schlimmer wenn die Messages verarbeitet werden.
Die Abarbeitung der aufgelaufenen Messages kann toedlich fuer die Genauigkeit sein. |
Re: Progress Bar während einer sleep funktion?
wenn es um genauigkeit geht sollte man das ganze in einen Thread auslagern (das pumpe starten/stoppen) und nur die Progressbar in der Hauptanwendung laufen lassen.
|
Re: Progress Bar während einer sleep funktion?
Hab das mal mit der Schleife getestet. Funktioniert wunderbar :)
danke erstmal dafür! nun muss ich nur noch ca. 70 sleep befehle durch die schleifen ersetzten.... *nerv* ich hoffe meine nerven halten es aus.... durch die umstellung hab ich quasi ein komplet neues programm. THX nochmal an alle!!!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:09 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