Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Signalverlauf (https://www.delphipraxis.net/125654-signalverlauf.html)

igel457 9. Dez 2008 20:30

Re: Signalverlauf
 
Ich würde die Messwerte in ein VBO laden und das Ganze hardwarebeschleunigt mit OpenGL oder DirectX (oder Andorra 2D) zeichnen. Damit sollten Bildwiederholraten von über 1000FPS drin sein.

Sir Rufo 9. Dez 2008 20:37

Re: Signalverlauf
 
- Messwerte in eine Liste schieben.
- Mit einem Timer (Interval=1) folgendes aufrufen
- Timer abschalten
- Die aktuelle Liste mit Assign kopieren
- Alle Messwerte darstellen
- Timer einschalten
- Die Liste zyklisch bereinigen (damit der Speicher nicht vollläuft)

Dann ist die Darstellung der Messwerte praktisch so schnell wie der Rechner das abarbeiten kann (ausgenommen dies kleine Millisekündchen, bis der Timer wieder anspringt)

Matze 9. Dez 2008 20:44

Re: Signalverlauf
 
Ein Timer schafft nie eine Auflösung von 1 Millisekunde. Unter XP maxmimal 10 ms und unter Win9x nur 50 ms.
Gut, wie das bei Vista ist, weiß ich nicht.

Einen normalen TTimer würde ich dafür nicht nutzen, dann schon eher einen Timer, der schneller ist und wie er sicherlich in Andorra 2D zu finden ist, das Andreas bereits erwähnt hat.

Edit: Einen Timer würde ich jedoch nur fürs Einlesen mit einem hohen Intervall nutzen. Die Ausgabe reicht ja langsamer, denn da kommt ein TFT ja sonst eh nicht hinterher.

igel457 9. Dez 2008 20:55

Re: Signalverlauf
 
Ich denke, dass es sinnvoll ist, die Messdaten in einem Thread einzulesen und in eine Art Ringbuffer zu schreiben. Dieser kann dann periodisch von dem Grafiksystem ausgegeben werden.

Damit die Bewegung flüssig erscheinen sollten schon Bildwiederholraten von 60-100FPS langen - mehr schaffen die meisten Monitore sowieso nicht. Von daher muss Hardwarebeschleunigung nicht unbedingt sein.

DerDan 9. Dez 2008 22:38

Re: Signalverlauf
 
Schau doch mal hier vorbei:

http://www.oscilloscope-lib.com/


mfg

DerDan

goalierb 10. Dez 2008 09:28

Re: Signalverlauf
 
Ja das sieht ganz gut aus, ist nur etwas aufwendig für das was ich machen will, so mit Dll und so!
Ich hab mal das mit der Verzögerten Darstellung in einem TChart versucht, hatte da aber wohl gestern Abend schon die
Augen zu beim proggen.!
Also ich lad beim Progstart erstmal die 1000 Werte 3 mal, also insgesamt 3000, in das Chart!
Diese habe ich vorher in ein Array eingelesen!
Zum testen benutze ich jetzt erstmal immer die gleichen 1000 Werte, also ich versuche immer das Array in das Chart zu laden.

Probleme:
Ich komme nicht ganz klar, bspw. links 100 Werte im Chart zu löschen und rechts 100 neue anzufügen! --> völliges Brett vorm Kopf
Und das meinetwegen dann alle 100ms per Timer!

Kennt sich jemend mit TChartValueList aus, geh ich da richtig in der Annahme, dass ich eigentlich meine Werte die ich ins Array schreibe nicht auch gleich darein schreiben könnte, und wenn ja wie kann ich das realisieren, wenn ich die TChartValueList per for Schleife bspw. mit den Arraywerten testweise füllen möchte.
Werden bei jeder Änderung dieser List auch die Werte im Graph geändert?

VD


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:36 Uhr.
Seite 2 von 2     12   

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