Berechnungen und Ausgaben an Zeitpunkte koppeln

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
400kmh
Beiträge: 100
Registriert: Do 25. Mär 2010, 04:03

Berechnungen und Ausgaben an Zeitpunkte koppeln

Beitrag von 400kmh »

Wie koppelt man Berechnungen und Ausgaben an Zeitpunkte?

In regelmäßigen Abständen z.B. 25 mal pro Sekunde möchte ich bestimmte Berechnungen durchführen lassen und entsprechendes ausgeben. Dazu habe ich eine Prozedur an ein auslösendes Ereignis gekoppelt, und darin die Berechnungen, die Ausgabe und einen Delay in eine Schleife gesteckt. Das Problem ist: An der Ausgabe ändert sich erst etwas, wenn die gesamte Prozedur beendet ist. Die Ausgabe gibt dann korrekt denn letzten Stand wieder. Die Zwischenstände werde aber nicht live ausgegeben, obwohl es in der Schleife so vorgesehen ist. Wie behebe ich das Problem?

u-boot
Beiträge: 308
Registriert: Do 9. Apr 2009, 10:10
OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 785..

Re: Berechnungen und Ausgaben an Zeitpunkte koppeln

Beitrag von u-boot »

Es ist zu ungenau beschrieben was du letztendlich vorhast aber normal lässt man Berechnungen nicht einfach beliebig oft wiederholen. Man berechnet gewöhnlich nur einmal und lässt erst neu berechnen wenn sich die Eingangsdaten ändern.
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: Berechnungen und Ausgaben an Zeitpunkte koppeln

Beitrag von theo »

Application.Processmessages

400kmh
Beiträge: 100
Registriert: Do 25. Mär 2010, 04:03

Re: Berechnungen und Ausgaben an Zeitpunkte koppeln

Beitrag von 400kmh »

u-boot hat geschrieben:Es ist zu ungenau beschrieben was du letztendlich vorhast aber normal lässt man Berechnungen nicht einfach beliebig oft wiederholen. Man berechnet gewöhnlich nur einmal und lässt erst neu berechnen wenn sich die Eingangsdaten ändern.
Da sich manche Daten auch von alleine ändern, wie sich z. B. auch die Erde alleine um die Sonne dreht, bedarf es manchmal ständig neuer Berechnungen.
theo hat geschrieben:Application.Processmessages
Danke, funktioniert.

Gibt es vielleicht noch eine Möglichkeit, dass ganze ohne Delay(); zu lösen? Es ist ja durchaus möglich, dass die Berechnungen eine nicht zu vernachlässigende Zeit in Anspruch nehmen, sodass der Abstand zwischen den einzelnen Berechnungen nicht der Länge des Delays entspricht.

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: Berechnungen und Ausgaben an Zeitpunkte koppeln

Beitrag von MAC »

Lässt sich auch mit Delay prüfen.
Du machst vor der Berechnung

Code: Alles auswählen

var
 vorher:TTime;
x:integer;
begin
vorher := now;
//rechne rechne rechne
x := now-vorher;
//...
end;
und dann steht in x wielange du gerechnet hast . In TTime , d.h. das 1 Tag = 1 ist 1 Stunde ist 1/24 , 1 Minute ist 1/24/60 ,...
Jetzt kannst du einfach x von der standartdelay Zeit abrechnen:
Delay(25-round(x*86400));
naja und wenn x > 25 ist ist der pc zu lahm...
Zuletzt geändert von Lori am Mo 15. Nov 2010, 20:27, insgesamt 1-mal geändert.
Grund: Highlighter

Code: Alles auswählen

Signatur := nil;

u-boot
Beiträge: 308
Registriert: Do 9. Apr 2009, 10:10
OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 785..

Re: Berechnungen und Ausgaben an Zeitpunkte koppeln

Beitrag von u-boot »

400kmh hat geschrieben: Da sich manche Daten auch von alleine ändern, wie sich z. B. auch die Erde alleine um die Sonne dreht, bedarf es manchmal ständig neuer Berechnungen.
Selbst die Änderungen der Erdposition könnte man als Event deklarieren. :wink:

Aber mal zurück zu dem was du wolltest. Ich bin eher ein Freund von Gettickcount als von TTimer. Gerüchte besagen gettickcount hat eine genauigkeit von ca. 30 ms. Was nun genauer oder schneller ist weiss ich auch nicht Bei Sachen die mit 25 Hz laufen könnte die Ungenauigkeit schon ein Problemchen werden... Die Ausgabe kann auch Zeitraubend werden, falls diese wirklich so oft passieren soll.
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

400kmh
Beiträge: 100
Registriert: Do 25. Mär 2010, 04:03

Re: Berechnungen und Ausgaben an Zeitpunkte koppeln

Beitrag von 400kmh »

u-boot hat geschrieben:Selbst die Änderungen der Erdposition könnte man als Event deklarieren. :wink:
Anderes Beispiel: Ein Auto fährt von A nach B. Die Geschwindigkeit verändert sich auch (verlangsamt sich), wenn man nicht die Taste für Gasgeben drückt. Hier müssen ständig Berechnungen durchgeführt werden.

u-boot
Beiträge: 308
Registriert: Do 9. Apr 2009, 10:10
OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 785..

Re: Berechnungen und Ausgaben an Zeitpunkte koppeln

Beitrag von u-boot »

400kmh hat geschrieben:Anderes Beispiel: Ein Auto fährt von A nach B. Die Geschwindigkeit verändert sich auch (verlangsamt sich), wenn man nicht die Taste für Gasgeben drückt. Hier müssen ständig Berechnungen durchgeführt werden.
Unterschreitet das Auto eine gewisse Geschwindigkeit wird ein Event ausgelöst gas zu geben ;)

Ich sehe die Geschichte mit dem Event als kleine Schleife (Abfrage) die bei Bedarf eine größere Berechnung/Prozedur auslöst.

Gut wir könnten uns nun drüber streiten, ob es sinnvoll ist alles als Event zu sehen, oder ob man manchmal lieber drauf verzichtet und dann sowieso dann die Berechnung laufen lässt.
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

Antworten