AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Signalverlauf

Ein Thema von goalierb · begonnen am 9. Dez 2008 · letzter Beitrag vom 10. Dez 2008
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#11

Re: Signalverlauf

  Alt 9. Dez 2008, 21:30
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.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

Re: Signalverlauf

  Alt 9. Dez 2008, 21:37
- 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)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: Signalverlauf

  Alt 9. Dez 2008, 21:44
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.
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#14

Re: Signalverlauf

  Alt 9. Dez 2008, 21:55
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.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
DerDan

Registriert seit: 15. Nov 2004
Ort: Donaueschingen
251 Beiträge
 
Delphi XE3 Professional
 
#15

Re: Signalverlauf

  Alt 9. Dez 2008, 23:38
Schau doch mal hier vorbei:

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


mfg

DerDan
nichts ist so schön wie man es sich vorstellt
  Mit Zitat antworten Zitat
goalierb

Registriert seit: 9. Dez 2008
6 Beiträge
 
#16

Re: Signalverlauf

  Alt 10. Dez 2008, 10:28
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 09:47 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