Registriert seit: 5. Feb 2007
174 Beiträge
FreePascal / Lazarus
|
AW: Chart-Komponente die 1000 Werte / sec verträgt
17. Jun 2012, 22:35
Wie bekommst du denn die Daten? USB? Ethernet? Und kannst du dir sicher sein, daß das nur 4-5 Sekunden dauert?
Denn das spannende wird bei der Geschichte nicht das Anzeigen, sondern das aufzeichnen der Daten.
Das sollte in einem möglichst kurzen und knackigen Thread passieren und bitte, bitte ohne synchronize! Damit hältst du diesen Thread nämlich an.
Ich würde in dem Aufzeichnungsthread mich nur darum kümmern, die Daten entgegenzunehmen, evtl. eine erste Prüfung durchzuführen und sie dann (wenn's echt nur 5000 Werte insgesamt werden) in einen Buffer im Speicher schreiben. Ein weiterer Thread (evtl. im Hauptthread) holt die Daten dann wenn er Zeit hat aus diesem Buffer (für den du eine Critical Section brauchst), schreibt ihn in eine Datenbank oder eine Datei und kümmert sich dann darum, die Daten anzuzeigen. Dabei bietet sich an, nur die auch Darstellbaren Punkte vorher zu bestimmen. Die einfachste Form davon wäre, immer so viele Punkte zwischen zwei anzuzeigenden auszulassen, daß du im endeffekt soviele Punkte anzeigst wie du Pixel am Schirm hast. Bei 4000 Punkten und 1024 Pixel am Schirm wär das also ca. jeder 4. Punkt - alles andere siehst du eh nicht.
Wenn du's so machst ist die Chart-Komponente weitgehend unerheblich, außer du willst dann noch irgendwelche Interaktion mit dem Betrachter, also Teile des Charts auswählen, zoomen, irgendwas dran rumrechnen oder sowas.
Schlüsselstelle ist und bleibt die Übernahme der Daten in das System und wie du sie da in einen Speicher schreibst...
Gruß
Luggi
|