Einzelnen Beitrag anzeigen

Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: kontinuierlichen Messdaten speichern

  Alt 12. Dez 2007, 14:42
Du kannst auch nochmal über Festkommawerte nachdenken. Unter Umständen kommst du dann auf 2 Bytes runter. Wenn du z.B. eine Genauigkeit von 2 Nachkommastellen haben willst, dann schaffst du damit einen Temperaturbereich von 0 bis 650 Kelvin. (wenn du z.B. eine 24533 abspeicherst, bedeutet dies 245.22) Festkommawerte entsprechen ja auch eher dem Verhalten von A/D-Wandlern.

TFileStream ist ganz einfach. (ungetestet)
Delphi-Quellcode:
const Dateiname='xyz.dat';
var Datei:TfileStream;
...
if fileexists(Dateiname) then
begin
  Datei:=Tfilestream.create(Dateiname,fmopenread);
  Datei.seek(0,sofromend);
end
else
begin
  Datei:=Tfilestream.create(Dateiname,fmopenread);
  //Header schreiben, z.B.
  Datei.write(zeit,sizeof(zeit)); //zeit ist z.B. TDateTime
end;
try

  //Messwert schreiben
  Datei.write(Messwert,sizeof(Messwert);
  ...

finally
  Datei.free;
end;
Wahrscheinlich ist es güntstiger das Auslesen der Messwerte in einem Thread zu gestalten, damit du wirklich jede Sekunde lesen kannst, falls mal das Speichern (oder das GUI) etwas länger dauert.

Edit: himitsus Variante wird auch von vielen Messgeräteherstellern genutzt. Du hast eben Blöcke, die am Anfang einen Zeitstempel und eine Länge haben. Dadurch kannst du auch nach einer Pause in derselben Datei weiterschreiben und einfach einen neuen Block anfangen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat