Einzelnen Beitrag anzeigen

messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#29

Re: kontinuierlichen Messdaten speichern

  Alt 12. Dez 2007, 20:31
Zitat von Reinhard Kern:
das mit binär oder Text würde ich mir nochmal überlegen. Ich habe das zwar jahrzehntelang auch so gemacht, komme aber immer mehr davon ab. Binäre Dateien sind eben nicht offen lesbar (was das Debuggen erschwert), nicht reparierbar und können auch ohne die zugehörige Software überhaupt nicht gelesen werden. Daher geht der Trend in der IT ganz allgemein zu lesbaren Protokollen (FTP,HTTP) und lesbaren Dateien (XML). Eine XML-formatierte Datei mit Messwerten ist auch noch lesbar, wenn deine Software längst untergegangen ist.

Ich weiss natürlich nicht, ob du das überhaupt willst, aber meiner Meinung nach ist Verschleierung von Daten nicht Aufgabe eines Programmierers, im Gegenteil. Meine Kunden dürfen meine Dateien gerne auch noch lesen, wenn ich tot bin. Ich weiss aber, dass nicht jeder Programmierer so denkt.

Die Datenmenge kannst du ja nachrechenen, lohnt sich aber nicht: je Sekunde 2 Doubles geben nicht mal 2 MByte am Tag. Eine durchschnittliche heutige Festplatte reicht also ein paar Jahre. Ich würde wegen der leichteren Handhabung Monatsdateien anlegen.
Das finde ich witzig: ich bin gerade von der Textdatei abgekommen und zur binären gegangen. Davor habe ich "jahrzehntelang" jedem erklärt, wie vorteilhaft ASCII-Dateien sind. Da habe ich mir so manche blutige Nase geholt...
Ich denke, es hängt von der Aufgabenstellung ab. Im Moment schreibe ich binär, weil es um normkonforme Messungen geht, bei denen die Originaldaten möglichst manipulationsfrei aufbewahrt werden sollen. Für Anwendungen, bei denen es nur um die Informationen geht (ich habe lange Servicetools gewartet und weiterentwickelt) würde ich uneingeschränkt ASCII empfehlen: den Speicherverbrauch bestimmst Du selbst (1 Byte pro gespeichertem Zeichen), eine Datei kann auch nach irgendwelchen Fehlern mal restauriert werden (das ist bei binären Daten sehr aufwendig).
Zudem würde ich (habe nicht alle Posts vollständig gelesen) den Speicherzyklus an der Aufgabe orientieren. Temperaturen müssen oft nicht pro s gemessen bzw. geschrieben werden. meist reichen 10-15s aus. Das direkte Schreiben bei so "langsamen" Vorgängen ist auf jeden Fall zu bevorzugen - bei einem Stromausfall hast Du dann meist die aufgelaufenen Daten verfügbar. Von einer Datenbanklösung würde ich gar nichts halten, es sei denn, Du willst auf die Daten ca. 10mal pro Sekunde von zehn unterschiedlichen Stellen zugreifen und zehn unterschiedliche Auswertungen damit machen.
Wenn die Messungen ungefähr eine Woche dauern, kann man täglich eine Datei anlegen. Das hat den Vorteil, daß das Datum im Dateinamen erscheinen und somit zur Übersicht beitragen kann.
Ach ja, Du solltest das Auslesen und Speichern wirklich als Thread anlegen. Und zwar nicht, um auf eventuelle ausgedehnte Speichervorgänge zu warten wie sirius meint sondern um Deinen Rechner während des Messens freizustellen. Nochmal: Temperaturvorgänge sind relativ langsame Vorgänge, das Warten auf die Ergebnisse kann Deinen Rechner sehr langsam machen.

Grüße, Messie
  Mit Zitat antworten Zitat