Hallo,
kennt jemand eine, am liebsten lesbares, Dateiformat für die Speicherung
von Messdaten mehrerer analoger/binärer Kanäle? Am liebsten eines, für
das es ein freies Darstellungstool gibt. Notfalls würde ich das aber
auch selbst implementieren. Nur das Dateiformat möchte ich eben nicht
neu erfinden, denn über sowas haben sich bestimmt schon viele Leute
Gedanken gemacht. Allerdings sollte es auch nicht zu aufgebläht sein.
Gefunden habe ich bisher das LabVIEW Measurement File (.lvm)...
Was ist den der unterschied zwischen Messdaten die analog und binär
gespeichert sind? Sobald es irgendwie auf dem Chip ist sind alle Werte
binär sprich Digital
Enfach und schnell: CSV
Comma-separated values
1
Winkel,Temperatur,Ausgangsregister,Zeichenkette
2
3.1415,-15,0x23,'Mein Pferd ist eine Lasagne'
3
0,15,0xFA,'Mein Pferd ist ein Schimmel!'
Darstellbar mit so ziemlich allem was "Dateiimport" und "Graph zeichnen"
kann, bei hexadezimalen Zahlen eventuell in dezimaler Schreibweise
umwandeln
XML:
Extensible Markup Language
<zeichenkette>Mein Pferd ist eine Lasagne</zeichenkette>
9
</eintrag>
10
<eintrag>
11
.....
12
</eintrag>
13
.....
14
</messreihe>
Können auch viele Programme, musst schauen wie die das haben wollen,
vorteil ist das es viele Programme gibt die auch in einer Art SQL
Messdaten sortieren abfragen filtern etc können.
Naja, das mit dem freien Viewer ist nur ein nice-to-have. Ich hab eh
Spaß daran sowas selbst zu coden. Wichtig wäre mir aber eben ein
verbreitetes offenes Dateiformat, das ich nicht selbst definieren muss
und ggf. auch mit anderen(auch kommerziellen) Tools öffnen kann.
Christian R. schrieb:> Matlab Files sind auch gut, da gibts Libs zum Erstellen und Lesen. Aber> so komplett frei ist wohl nur CSV, XML usw.
Ja bei Matlab muss man aber sagen das es Lesbar sein soll sonst klatscht
der einem nur Binärdaten hin ;)
Busbauer schrieb:> Darstellbar mit so ziemlich allem was "Dateiimport" und "Graph zeichnen"> kann,
Zum Beispiel? Von Excel mal abgesehen.
Busbauer schrieb:> Was ist den der unterschied zwischen Messdaten die analog und binär> gespeichert sind?
Ich meinte in diesem Fall mit Binär Statuswerte, also welche mit 1-Bit
Information.
Schau dir mal http://www.logview.info/vBulletin/ an, ist eigentlich zur
Akkulade-/ Entladeprotokollierung entwickelt worden, kann aber durch
sein offenen Format leicht an viele Zwecke angepaßt werden.
Gruß Bussard
pks schrieb:> Zum Beispiel? Von Excel mal abgesehen.
OpenOffice Calc (free
Matlab (kostet "etwas")
Scilab (free)
GNUplot (free)
sicherlich noch 1000 andere Programme
pks schrieb:> Hallo,>> kennt jemand eine, am liebsten lesbares, Dateiformat für die Speicherung> von Messdaten mehrerer analoger/binärer Kanäle? Am liebsten eines, für> das es ein freies Darstellungstool gibt.
.csv Das können fast alle lesen und schreiben. Ob nun Linux Windows oder
...
Die Dateien sind per Texteditor lesbar und einen Header mit
Feldbezeichnungen können die meisten Tools auch verarbeiten.
Falls es auch um die Übertragung geht. Da kann man logview für nehmen.
Gesicherte oder ungesicherte Übertragung und direkte grafischer Online
Darstellung. Das Protokoll nennt sich openformat (s. post weiter oben).
Das kann auch als csv speichern.
+1 zum csv-Format. Was noch nicht explizit gesagt wurde: In der ersten
Spalte speichert man üblicherweise den Zeitstempel, in den folgenden
Spalten je einen Messwert zu diesem Zeitpunkt.
Datensatz schreiben geht in C einfach mit fprintf(), lesen und
verarbeiten wie schon gesagt mit so ziemlich allen Programmen.
CSV. XML ist ein Scheiß für sowas (hust wie für das meiste hust)
weil man einfach fünfzig mal so viel Speicherplatz braucht.
Den CSV-Kram kann eigentlich jedes Programm lesen, und ist auch gut von
Hand anzuschauen.
Gnuplot kann das auch in null komma nix plotten, zum Beispiel.
csv und xml sind allenfalls "Container" für Messdaten, aber keine
Dateiformate für Messdaten. Dazu bedarf es schon einer Vorschrift, wie,
z.B. in welcher Reihenfolge die Messdaten stehen und welcher
physikalischer Einheit sie entsprechen. Sowie Zusatzinformationen.
Die Konvention, z.B. die erste Spalte als Zeitreihe und die ersten
beiden Zeilen als Bezeichner und phys. Einheit zu benutzen, hat nichts
mit dem csv-Format zu tun.
gk
Busbauer schrieb:> Naja das kannst du mit XML schon lösten
Natürlich kannst Du das, dann hast Du aber Dein eigenes Dateiformat
kreiert, mit dem Container XML. Und das wollte der TO erstmal nicht,
sondern hat gefragt, ob es einen freien Standard gibt.
Mir fällt da höchstens ASAM ein. http://www.asam.net/
gk
Danke erstmal für die Antworten. Ich habs jetzt mal Probeweise als
simples CSV geschrieben und mit SciLab geplottet. Allerdings bin ich mit
dem Flow nicht besonders zufrieden und SciLab ist im Handling irgendwie
schleppend langsam. Für tatsächliche Messdaten fände ich das noch ok,
allerdings möchte ich auch Daten aus SW-Simulationen darstellen, wo ich
zig Durchläufe mache und es schön wäre das Ergebnis direkt zu sehen.
Ich werd mir wohl eine kleine Bibliothek implementieren, die Datensätze
speichert und neben eine Export/Import-Funktion für verschiedene Formate
auch eine eigene Plotfunktion bietet.
Sehr viele Messgeräte speihern ihre Daten in Formaten, die eigentlich
CSV sind. Öfters sind die Dateiendungen einfach anders, aber wenn man
die dann mit einem Texteditor öffnet, sieht man dann eine geordnete
Struktur, wie man es eben als CSV kennt. Häufiger habe ich auch den
Tabulator als Trennzeichen gesehen. Unser Massenspektrometer
beispielsweise speichert .msdat Dateien, die aber reinen ASCII-Text
enthalten. Ebenso ein EEG-Gerät, welches als .bis speichert, da muss man
sich eben für beispielsweise Matlab oder Origin einen kleinen
Importfilter schreiben und dann kommt man schnell an die Daten ran. Du
solltest dir für ein eigenes Format auch überlegen, ob du als
Dezimaltrennzeichen das Komma oder den Punkt verwendest.
Warum hat noch keiner das .vcd-Format (Value Change Dump) genannt? Kann
man sehr schnell selbst programmieren, ansonsten gibts ne Menge
Code-Beispiele.
Kritisch wird's allerdings, wenn riesige Datenmengen anfallen.
Da gibts diverse komprimierte Formate. Siehe GTKwave-Dokumentation.
Läuft auch alles unter Windows.
Gnuplot mittels Skripte ist, sofern man es mal kann, schnell und
einfach. Gnuplot macht aber erst so richtig Spaß unter Linux mit der
Shell.
Ansonsten kannst du dir auch mal http://kst-plot.kde.org/ für die
Visualisierung anschauen.
Zur Speicherung genügt ein Textdokument mit einem Eindeutigen
Trennzeichen für die Spalten, Zeilen durch neue Zeile. JEDES
Visualisierungsprogramm unterstützt dies und so ein Textdokument enthält
alle Information die du messen kannst.
Ein proprietäres Dateiformat kommt erst durch die Visualisierungsoftware
zustande, in dem dann die Daten aufbereitet werden und Formatierung etc.
gespeichert werden. (in Gnuplot in Form eines Skripts, bei anderen
Programmen eben ein spezielles Dateiformat)
Für reine Messwerte ist ein CSV aber das einzige Format das du nehmen
solltest.
Einarbeiten musst du dich aber in jedes Visualisierungs-Programm, da
jedes ein bisschen anders bedient wird. Auf Anhieb von alleine klappt
das nicht.
Desto umfangreicher die Software, desto länger die Einarbeitungsphase
und desto unwahrscheinlich, dass es kostenlos ist.
Also kommt es stark auch drauf an wie komplex deine Messwerte sind und
wie komplex deine Diagramme später sein sollen.
Gnuplot ist zwar eine gute Idee, aber für alignierte zeitgenaue
Mehrkanaldarstellung von ganz unterschiedlichen Messdaten (analog,
digital, States, etc.) nur bedingt zu gebrauchen.
Wird auch wie angeklungen fürchterlich langsam, wenn man z.B. in
Mehrkanalmesswerten im Bereich von 20'000 Samples und mehr herumzoomen
will. Das Problem hat GTKwave weniger, allerdings gibt es beim
VCD-Format irgendwann overflows.
Wo sind die Fragen...
Wie viele Daten und in welcher Zeit?
Wie muss auf die Daten zugegriffen werden können (optimiert für
wahlfreien Zugriff vs. optimiert für sequentiellen etc.)?
Was davon muss in welcher Zeit wieder dargestellt/umgewandelt werden?
Welche und wie viele Zusatzinformationen werden/sollen mitgespeichert
werden?
Gregor B. schrieb:> Eine Möglichkeit wäre HDF5>> http://www.hdfgroup.org/
Eventuell kommt auch eine ältere Version (3.6 o.ä) von NetCDF [1] in
Frage. Da ist der Aufwand dann etwas geringer. Es gibt gute
Dokumentation und viele unterstützte Programmiersprachen.
Ab Version 4 wird auch das o.g. HDF5 Datenformat unterstützt!
[1] http://www.unidata.ucar.edu/software/netcdf/