Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Chart-Komponente die 1000 Werte / sec verträgt (https://www.delphipraxis.net/168905-chart-komponente-die-1000-werte-sec-vertraegt.html)

EWeiss 18. Jun 2012 10:56

AW: Chart-Komponente die 1000 Werte / sec verträgt
 
Meines erachtens sollte das mit OpenGl / DirectX doch ohne weiteres möglich sein.
Nur eine komponente dafür kenn ich nicht.

gruss

Jens01 18. Jun 2012 11:25

AW: Chart-Komponente die 1000 Werte / sec verträgt
 
Sowas? Oder hier.

himitsu 18. Jun 2012 12:50

AW: Chart-Komponente die 1000 Werte / sec verträgt
 
Im Delphi 7 gibt es bei mir 2 ActiveX-Chart-Komponenten
und ab D2007 liegt ein einfaches TChart bei.

Da sollte es auch so schon Einiges zum ausprobieren geben.

Medium 18. Jun 2012 13:01

AW: Chart-Komponente die 1000 Werte / sec verträgt
 
Das Zeichnen selbst ist hier wirklich weniger der Knackpunkt. Eher die Vorstufe: Was übergebe ich an "was auch immer nachher zeichnet", bzw. wie viel davon, und ist das sinnvoll. Eine 3D API würde ich dafür jetzt allerdings eher nicht in den Raum werfen, für den putzigen Unterschied den das machen dürfte (zumal man an ganz anderen Stellen genau so ineffiziente Dinge tun könnte, da sie halt gleich zu handhaben wären (Speicherung, Übertragungsweg, Puffer füllen, etc.)) wäre das den doch nicht ganz kleinen Mehraufwand kaum wert (vor allem die Lernerei wenn man da noch nie was mit gemacht hat).

Erfahrungsgemäß ist es fast immer sehr sinnvoll, wirklich auch nur die Daten in einen Darstellungsmechanismus zu füttern, die tatsächlich angezeigt werden (können). Wie die Daten in den PC kommen, und wie sie dort gespeichert sind ist allein für's zeichnen zweitrangig. Man könnte eine Vermittlerschicht einführen, die berechnet für was für einen Zeitraum wie viele Werte auf wie viele Zielpixel gebracht werden müssen, und diese gräbt dann die nötigen Werte aus dem Datenbestand und reicht sie an ein Chart oder was auch immer weiter. Entsprechend dynamisch aufgebaut ist damit auch zoomen und scrollen effizient möglich denke ich.

Ich glaub aber immer noch, dass die echte Schwierigkeit das Aufzeichnen wird.

EWeiss 18. Jun 2012 13:05

AW: Chart-Komponente die 1000 Werte / sec verträgt
 
Zitat:

Eine 3D API würde ich dafür jetzt allerdings eher nicht in den Raum werfen, für den putzigen Unterschied den das machen dürfte
Na ja putzig ist das nicht gerade da in dem Fall die CPU Auslastung seitens der GPU bei so hohem rechenaufwand doch sehr reduziert würde.
Was dann noch Raum für andere Anwendungen übrig ließe.

gruss

Iwo Asnet 18. Jun 2012 13:14

AW: Chart-Komponente die 1000 Werte / sec verträgt
 
Zitat:

Zitat von Medium (Beitrag 1171411)
Ich glaub aber immer noch, dass die echte Schwierigkeit das Aufzeichnen wird.

Das Ablegen auf Platte geht schnell genug. Eine SQL-DB wird da schon eine kleine Herausforderung, sollte aber möglich sein, denn 1000 Werte sind gerade mal 20k (Double + Zeitstempel+PK), lass es 30k sein.

Wäre auch denkbar, die Daten zunächst in eine Textdatei zu ballern und später per bulk insert in die DB zu pusten. Ist überhaupt eine DB am Start?

Medium 18. Jun 2012 13:15

AW: Chart-Komponente die 1000 Werte / sec verträgt
 
Der Anteil des reinen Datenrumgeschaufels sollte den des eigentlichen Zeichnens um ein vielfaches übersteigen. Das wollte ich damit ausdrücken :) Und ob die Daten nun durchs RAM oder durch den Texturspeicher gejagt werden ist dann auch fast egal. Genau genommen ist das gerade wegen des sich ständig und in so großem Umfang ändernden Puffers eher GPU-feindlich. Man muss ja doch immer und immer wieder mit der CPU ran fürs Nachladen. Was dann noch für's Malen drauf geht sollte in beiden Fällen weitgehend vernachlässigbar sein, vorausgesetzt man beschränkt sich wirklich auf einfache Linien.

@Iwo: Problematisch ist sowas halt immer, wenn man Einzelwerte versucht zu verarbeiten. Im Bulk sind das kleine Mengen, ja. Da wäre es dann toll, wenn das Messgerät einen Puffer böte. Sowas wie "gib mal Daten der letzten Sekunde" statt 1000x in der Sekunde "gib mal das Datum".

Daniel 18. Jun 2012 13:37

AW: Chart-Komponente die 1000 Werte / sec verträgt
 
Ich denke, dass der Ball vorerst bei "DelphiManiac" liegt. Vielleicht haben ihm die bisherigen Infos ja bereits geholfen. Alles Weitere ist nur ein Rühren in einer trüben Suppe.

shmia 18. Jun 2012 15:35

AW: Chart-Komponente die 1000 Werte / sec verträgt
 
Zitat:

Zitat von ChrisE (Beitrag 1171329)
Anders formuliert: Versuche Deine Anforderungen der Messtechnik / Datenverarbeitung von denen der Visualisierung getrennt zu betrachten und auch getrennt um zu setzten. Ich denke, dass könnte Dich weiter bringen.

Das halte ich auch für den richtigen Ansatz. :thumb:
Ich würde eine Klasse erzeugen um die Samples zu verarbeiten.
Diese Klasse bekommt als Input die ~5000-7000 Samples.
Als Output werden vorverarbeitete Daten erzeugt, die dann stressfrei angezeigt werden können.
Wenn z.B. der Oversampling-Faktor = 100 ist, dann werden immer 100 Samples aus dem Input zu einem Wert des Outputs (Durchschnitt bilden).
Desweiteren wird gleichzeitig noch der Minimum- und der Maximumwert berechnet.

Diese Daten (Durchschnitt, Minimum und Maximum) werden dann mit verschiedenen Farben zur Anzeige gebracht.
Wenn man mag kann man auch noch gleich den Median berechnen.

Durch diese Vorverdichtung der Daten (einstellbar über den OversamplingFaktor) kann man die Datenmenge immer so reduzieren, dass man sie ohne das System zu überfordern anzeigen kann.


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

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