Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi kontinuierlichen Messdaten speichern (https://www.delphipraxis.net/104894-kontinuierlichen-messdaten-speichern.html)

himitsu 12. Dez 2007 16:53

Re: kontinuierlichen Messdaten speichern
 
Zitat:

Zitat von DeddyH
Dann ist das aber auch keine typisierte Datei ;)

Wer sagt das?

wenn die Datei als File of Word definiert ist und [Word=$FFFF][Double] = 3 * [Word],
dann paßt das auch in eine derart typisierte Datei rein, nur weiß man dann noch nicht wie oft die Zeit in der Datei vorkommt.

Jelly 12. Dez 2007 17:00

Re: kontinuierlichen Messdaten speichern
 
@Himitsu:
Das, was du über paar Seiten Code schreibst, sähe bei mir so:

SQL-Code:
Insert into Messwerte (SensorId, Creation, Temperatur) values (1,'2007-12-12 17:58:03',23.2)
und so
SQL-Code:
Select Creation, Temperatur from Messwerte where SensorId = 1 order by Creation
Ich will damit nur sagen, warum bis jetzt hier keinen ausser mir eine Datenbanklösung interessiert.

DeddyH 12. Dez 2007 17:01

Re: kontinuierlichen Messdaten speichern
 
Zitat:

Zitat:

Zitat von DeddyH
Dann ist das aber auch keine typisierte Datei ;)

Wer sagt das?

wenn die Datei als File of Word definiert ist und [Word=$FFFF][Double] = 3 * [Word],
dann paßt das auch in eine derart typisierte Datei rein, nur weiß man dann noch nicht wie oft die Zeit in der Datei vorkommt.
Wenn Du davon ausgehst, ist jede Datei typisiert, notfalls als File of Byte.

sirius 12. Dez 2007 17:02

Re: kontinuierlichen Messdaten speichern
 
Zitat:

Zitat von Jelly
Ich will damit nur sagen, warum bis jetzt hier keinen ausser mir eine Datenbanklösung interessiert.

Zitat:

Zitat von Sirius
Wenn du die Sache mit der Datenbank ausgeschlossen hast, dann ...


Edit: Sch*** QuoteTag-Fehler
Edit2: Nun aber :wall:

Jelly 12. Dez 2007 17:08

Re: kontinuierlichen Messdaten speichern
 
Zitat:

Zitat von sirius
Zitat:

Zitat von Sirius
Wenn du die Sache mit der Datenbank ausgeschlossen hast, dann ...

Edit2: Nun aber :wall:

Das hast bislang nur du behauptet. Oracle hat nirgends geschrieben, dass er das ausschliesst. Und deshalb wunderts ich, dass hier alle kompliziert mit irgendwelchen typisierten Dateien hantieren, wenn auch anders und in meinen Augen leichter, ausfallsicherer geht.

sirius 12. Dez 2007 17:38

Re: kontinuierlichen Messdaten speichern
 
najajaja. Du hast gesagt, dass keiner außer du sich für DB interessiert. Das stimmte ja so nicht :zwinker:
Ich hatte es allerdings nur kurz erwähnt, da aber Oracle (man könnte sogar beinahe am Namen vermuten, dass er Datenbanken kennt :angel2: ) nicht drauf eingegangen ist, habe ich (und wahrscheinlich nicht nur ich) gedacht, dass er diese Lösung aus irgendwelchen Gründen schon ausgeschlossen hat.

Jelly 12. Dez 2007 18:52

Re: kontinuierlichen Messdaten speichern
 
Zitat:

Zitat von sirius
Ich hatte es allerdings nur kurz erwähnt, da aber Oracle (man könnte sogar beinahe am Namen vermuten, dass er Datenbanken kennt :angel2: ) nicht drauf eingegangen ist, habe ich (und wahrscheinlich nicht nur ich) gedacht, dass er diese Lösung aus irgendwelchen Gründen schon ausgeschlossen hat.

Es gibt viele Oracle: In der Matrix kam auch eins vor :zwinker:

Wie dem auch sei... Ich finde wir sollten hier einfach mal beide Lösungsvorschläge betrachten.

sirius 12. Dez 2007 18:53

Re: kontinuierlichen Messdaten speichern
 
Zitat:

Zitat von Jelly
Wie dem auch sei... Ich finde wir sollten hier einfach mal beide Lösungsvorschläge betrachten.

jo :bouncing4:

messie 12. Dez 2007 19:31

Re: kontinuierlichen Messdaten speichern
 
Zitat:

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

Chemiker 12. Dez 2007 20:10

Re: kontinuierlichen Messdaten speichern
 
Hallo Oracle,

ich stelle einfach mal eine Frage, warum willst Du Temperaturwerte jede Sekunde messen und abspeichern und das eine ganze Woche, für 16 Messpunkte kommen da 9.676.800 Messwerte zusammen. Ich finde bei der Messdatenflut ist nicht das abspeichern das Problem, sondern was fängst Du anschließend mit diesen Messwerten an. Was zu überlegen ist, sind so viele Messwerte notwendig? Wenn ja, ist die Temperaturabweichung innerhalb einer sek. so groß das man sie abspeichern muss?
Mein Ansatz währe, die einzelnen Messwerte in einem Ringbuffer zu schreiben, sagen wir mal 60 Messwerte (also 1 min.), wenn der Ringbuffer voll ist würde ich einen Durchschnittswert errechen und diesen Wert dann mit dem Zeitstempel abspeichern. Ich würde dann auch alle 16 Messstellen mit den Zeitstempel abspeichern und dann so vorgehen wie es Messie beschrieben hat.

Bis bald Chemiker


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 Uhr.
Seite 3 von 5     123 45      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz