mikrocontroller.net

Forum: PC-Programmierung Frage zu Datenvisualisierung - oder so.


Autor: Santiago m. H. (mausschubser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

zwischendurch muss ich auch mal wieder mit dem PC spielen und dachte 
mir, ich schnitze ein netzwerkfähiges Datenanzeigesystem (in Java). Zum 
Test habe ich einen Systemtreiber geschrieben, der Messdaten von 
AD-Wandlungen im Netz anbietet.
Dann habe ein ein kleines Gui geschrieben, das diese Daten anzeigt.

So weit, so gut. Nur kommen die Daten viel schneller, als man sie mit 
dem Auge erfassen könnte. Wie kann ich denn zu einer sinnvollen (?) 
Anzeige kommen, bzw. wie wird denn die Zeitabtastung für Signale 
gemacht, bei denen die Frequenz höher ist, als die Aufnahmefähigkeit des 
Auges?

Werden die Zwischenwerte einfach verworfen und nur ein Teil des 
Datenstromes angezeigt, oder wie geht man(n) mit schnelleren Daten um?

Habe jetzt schon so einiges über Oszilloskope und Co gelesen, aber der 
Groschen ist noch nicht so wirklich gefallen.
Ach ja, es geht um die Darstellung von live-Daten, nicht von 
irgendwelchen Aufnahmen.

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Messdaten von AD-Wandlungen

Mittelwert über mehrere Messungen?

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kommt darauf an, was du aus den Daten herauslesen willst bzw. wie 
die Daten aussehen. Du kannst da ziemlich kreativ werden.

Beispiel 1 - Langzeitverfolgung der Windgeschwindigkeit

Die gemessene Windgeschwindigkeit wird in einen klassischen XY-Plot 
aufgetragen. Die Y-Achse ist logischerweise der Messwert und die X-Achse 
ist die Zeit. Die Zeitachse kann man umschaltbar machen - Jahre, Monate, 
Tage, Stunden, ... um bestimmte Trends zu sehen.

Beispiel 2 . Spitzenwertanzeige einer Lautstärke

Die gemessene Lautstärke wird in einem VU-Meter auf einer Skala 0..10 
anhezeit und der aktuelle Spitzenwert wird paar Sekunden als extra 
Strich angeiegt. Die Skala kann man grün (gut), gelb (an der Grenze), 
rot (übersteuert) gestalten.

Progrmmiertechnisch kann man die verschienden Anzeigemodule in je eine 
Klasse packen und der Klasse dann die Rohdaten zur Darstellung 
vorwerfen. Es hat Vorteile, wenn es eine einheitliche Schnittstelle 
gibt, weil man dann einfach zwischen verschiedenen Darstellungen 
umschalten kann. Eventuell kann man sich da an vorhandenen Klassen 
orientieren, denn ich schätze, dasss es solche Darstellungsbibliotheken 
schon frei und kommerziell gibt.

Autor: Christian Böge (schlebinski)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn man niedrige Frequenzen hat, kann man die Daten im Rollmodus 
anzeigen (EKG Style), d.h. die neuesten Werte kommen links ins Bild und 
wandern dann mit zunehmendem Alter nach rechts.

Wenn man hohe Frequenzen darstellen will, gibt es die Möglichkeit des 
Triggerns. Man legt einen bestimmten Grenzwert fest und eine Richtung 
der Werteentwicklung (z.B. sobald der Wert 5 überschritten wird) beginnt 
die Darstellung von links nach rechts bis der Bildschirm voll ist. Dann 
beginnt der Zyklus von vorne. Man kann dann zB einstellen, dass man 
immer eine Schwingungsperdiode (konstante Frequenz vorausgesetzt) 
angezeigt bekommt.

Ausserdem kann man eine Fourier Tranformation durchführen und sich das 
Frequenzspektrum anzeigen lassen, auch für tiefe Frequenzen interessant.

Gibt bestimmt noch genug andere Möglichkeiten, aber das wären so die 
gängigsten denke ich.

Autor: Santiago m. H. (mausschubser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

danke für Eure Aufmerksamkeit.

Wie befürchtet, konnte ich nicht vermitteln, was ich wissen möchte.

Garnicht so einfach. Wie formuliere ich es ...

Also mir geht es nicht darum, wie kreativ ich mit den Daten umgehen 
könnte (was ja streng genommen zu einer Verfälschung führt).
Für statistische Auswertungen brauche ich im Moment keinen Input - denke 
das bekomme ich dann schon hin, wenn es ansteht.

Im Augenblick geht es mir darum, die Echtdaten anzuzeigen. Genau 
genommen tut die Anzeige ja bereits, mir ist die Darstellung aber zu 
unruhig.
Mir gefällt der Netzwerk-Gedanke und dann soll es auch eine Fingerübung 
als Vorbereitung für eine Oszi-Anwendung sein.

Beispiel:
Ich setze dem AD-Wandler einen 1 kHz Sinus vor. Der landet dann auch in 
der GUI als Sinus, allerdings wandert die Welle "durchs Bild". Bei einem 
Sinus ist es jetzt rel. einfach den zu synchronisieren. Die Nullstellen 
lassen sich finden und darauf könnte ich triggern.

Wie kann ich eine "Synchronisation" bei unbekannten Daten erreichen? 
Also beispielsweise zufällige Meßwerte.

> Progrmmiertechnisch kann man die verschienden Anzeigemodule in je eine
> Klasse packen und der Klasse dann die Rohdaten zur Darstellung
> vorwerfen.

Programmiertechnisch habe ich es genauso gelöst. Eine Basisklasse und 
davon div. Anzeigeelemente abgeleitet, die die Rohdaten verarbeiten. Das 
passt schon.

> Eventuell kann man sich da an vorhandenen Klassen
> orientieren, denn ich schätze, dasss es solche Darstellungsbibliotheken
> schon frei und kommerziell gibt.

Hm - ich habe schon nach sowas gesucht, aber in der freien Welt (also 
kein Basic, bzw. kein Windows) konnte ich nix derartiges finden.

Autor: Santiago m. H. (mausschubser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Christian,

habe Deinen Beitrag garnicht gesehen.
Ja, Du hast meine Frage verstanden :)

> Wenn man niedrige Frequenzen hat, kann man die Daten im Rollmodus
> anzeigen (EKG Style), d.h. die neuesten Werte kommen links ins Bild und
> wandern dann mit zunehmendem Alter nach rechts.

Ja, das ist ungefär der Status quo. Nur habe ich die Richtung falsch 
gewählt. Aber das umzudrehen ist nicht die Welt.

> Wenn man hohe Frequenzen darstellen will, gibt es die Möglichkeit des
> Triggerns. Man legt einen bestimmten Grenzwert fest und eine Richtung
> der Werteentwicklung

Verstehe ich das richtig - das entspricht kwasi der Nullpunktsuche bei 
einem Sinus?
Wie ist das denn bei einem echten Oszi? Kann man da den 
"Unschärfebereich" auswählen?

Der Schwellwert ist dann ein benutzer-definierbarer Wert?

Autor: mitwisser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Beispiel:
>Ich setze dem AD-Wandler einen 1 kHz Sinus vor. Der landet dann auch in
>der GUI als Sinus, allerdings wandert die Welle "durchs Bild". Bei einem
>Sinus ist es jetzt rel. einfach den zu synchronisieren. Die Nullstellen
>lassen sich finden und darauf könnte ich triggern.

>Wie kann ich eine "Synchronisation" bei unbekannten Daten erreichen?
>Also beispielsweise zufällige Meßwerte.


Bei dem Sinus funktionierts natürlich, weil das Signal periodisch ist. 
Aber "unbekannte Daten"/"zufällige Messwerte"  und eine "ruhige" Anzeige 
widersprechen sich doch.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Santiago m. H. wrote:

> Hm - ich habe schon nach sowas gesucht, aber in der freien Welt (also
> kein Basic, bzw. kein Windows) konnte ich nix derartiges finden.

Suche "instrumentation java widget OR applet" oder "diagramm java widget 
OR applet"

JFreechart
http://www.jfree.org/jfreechart/
http://www.linux-magazin.de/heft_abo/ausgaben/2004...
(sehr gemischt u.a. XY-Plot und Kuchen/Balken...)

Bode Plot Java Applet
http://www.uwm.edu/People/msw/BodePlot/

Brainstorming "was geht"
http://www.genlogic.com/demos.html

Leider Windows-Abhängig:

Universal Real-Time Software Oscilloscope GUI DLL Library for data 
acquisition and logging, computer simulation and debugging programs
http://www.oscilloscope-lib.com/


Edit: Cool was man da so findet. Entspannung für den Freitagnachmittag 
;-)
http://jas.eng.buffalo.edu/
http://www.schulphysik.de/java/physlet/

Autor: Santiago m. H. (mausschubser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Stefan,

danke für Deinen Zeiteinsatz!

Richtige Suchbegriffe sind schon Gold wert :)

Danke für den reichhaltigen Lesestoff für's WE.
Die Osci-Lib würde mich sehr interessieren tun, scheint aber closed 
source zu sein. Kammer also nix von lernen.

Beim Rest scheint es aber auch kuhl ab zu gehen :D

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.