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.
> Messdaten von AD-Wandlungen
Mittelwert über mehrere Messungen?
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.
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.
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.
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?
>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.
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/05/malen_nach_zahlen (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/
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.