Aus *.txt-Datei bei neuen Einträgen diese auslesen
Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Aus *.txt-Datei bei neuen Einträgen diese auslesen
Hallo zusammen,
Das Problem das ich gerade vor mir sehe ist folgendes:
Ich habe eine *.exe (LV7.1, nicht selbst programmiert, kein Quellcode vorhanden), die mir aus einem Messgerät "kontinuierlich" Daten in eine *.txt-Datei schreibt und diesen Wert jeweils in einer neuen Zeile anhängt. Jetzt würde ich gern, dass dieser neue Wert mittels einem parallel laufenden Labview-Programm gelesen wird, so dass ich ihn weiterverarbeiten kann. Wenn möglich immer dann, wenn der neue Wert in die Datei geschrieben wird.
Die Datei immer wieder zum Werte einlesen öffnen, prüfen ob ein neuer Eintrag vorhanden ist, Wert auslesen und schließen ist nicht praktikabel, da die Datei immer größer und größer wird. Dazu fehlt mir leider schon die Idee, wie ich die Datei auf neue Einträge prüfen kann. Eventuell könnte ich das über eine "kontinuierliche" Abfrage der Dateigröße realisieren. Nur weiß ich dann nicht, wie viele Werte seit dem letzten Durchlauf in die Datei geschrieben wurden.
Hat jemand eine Idee oder Lösung? Ich steh grad voll auf dem Schlauch.
Momentan verwende ich LV 7.1, was neueres gibt's leider in der Firma nicht.
Bin wie immer für jeden Vorschlag sehr dankbar.
RE: Aus *.txt-Datei bei neuen Einträgen diese auslesen
Hallo Karl,
Zitat:Eventuell könnte ich das über eine "kontinuierliche" Abfrage der Dateigröße realisieren.
Das wäre der einfachste Weg.
Ein anderer wäre die Nutzung des Windows/DotNet-API, um sich von dort mitteilen zu lassen, wann Schreibzugriffe auf diese Datei erfolgen...
Zitat:die mir aus einem Messgerät "kontinuierlich" Daten in eine *.txt-Datei schreibt
Hier sehe ich ein Problem: je nachdem, wie das Alt-Programm die Datei geöffnet hat (exklusiv?), bekommst du gar nicht die Möglichkeit, diese Datei parallel ein zweites Mal (wenn auch nur lesend) zu öffnen. Außerdem: wenn du die Datei mit deinem Neu-Programm exklusiv öffnest, könnte das Alt-Programm aus dem Tritt kommen, da es dann selbst keinen Zugriff mehr bekommt...
Zitat:Nur weiß ich dann nicht, wie viele Werte seit dem letzten Durchlauf in die Datei geschrieben wurden.
Wenn du Glück hast, hast du in der Text-Datei Einträge mit fester Länge. Dann weißt du aus der Dateigröße automatisch die Anzahl der Werte...
Ansonsten: Dateigröße vom letzten Zugriff merken, Dateigröße mitsamt neuer Werte ermitteln, Differenz bilden und nur diesen Teil der Datei laden und auswerten...
RE: Aus *.txt-Datei bei neuen Einträgen diese auslesen
Was macht dein Alt-Programm, wenn die txt-Datei plötzlich nicht mehr vorhanden ist? Legt es automatisch die Datei neu an oder kommt dann ein schwerer Fehler?
Dann funktioniert vielleicht folgendes: Nach Auslesen der Datei diese löschen/verschieben/umbennen?! Nicht ungefährlich, aber vielleicht geht es.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
RE: Aus *.txt-Datei bei neuen Einträgen diese auslesen
Leider ist es nicht Usus, bei einer DAQ-Anfrage etwas mit über die Datenrate zu verraten. Es macht nämlich einen großen Unterschied, ob die Datenrate 10 kSamples/s oder 1 Sample/Min beträgt. Im letzgenannten Fall würde die Datei bei dem Alt-Programm wahrscheinlich bei jedemZugriff geöffnet und wieder geschlossen, und Deinen Chancen stehen gut, dass Du mit einem zweiten Programm auf die Daten zugreifen kannst.
Ansonsten ist meine Einschätzung, dass Du ohne Quellcode verraten und verkauft bist. Da wirst Du wohl um ein "Reverse Engineering" nicht herumkommen.
Dass Programme dem Auftraggeber ohne Quellcode geliefert werden ist mir sehr gut vertraut. Das wird gewöhnlich nur dann getan, wenn der Auftraggeber so schlau war das ausdrücklich zu vereinbaren. Aber auch interne Mitarbeiter dokumentieren nicht gern ihr Programm zur öffentlichen Einsicht. Das hätte ja zur Folge, dass eine Kündigung des Mitarbeiters keine Katastropphe hinterlässt, und das wäre unklug.
RE: Aus *.txt-Datei bei neuen Einträgen diese auslesen
Danke für Eure Antworten,
ich seh schon, dass wird n rechter Sch... .
Die Daten werden in des File mit höchstens 1Hz geschrieben, eher mit 0.1Hz. Zugriffszeiten auf die Datei sollten daher kein Probelm darstellen. Nur wird die Datei einfach im laufe einer Nacht oder ein paar Tagen doch recht groß.
Ich denke, das man die Datei parallel öffnen kann, zumindest erlaubt mir Notepad++ die Betrachtung der Dateieinträge und meldet sich, wenn die Datei neu beschrieben wurde. Diese Meldung an Notepad++ geht wohl über über die Windows/DotNet-API, oder? Weiß jemand etwas genaueres dazu (nur rein interessehalber). Die Idee mit dem Vergleich durch die Bytegrößen und die daraus erfolgte Ermittlung der Neueinträge find ich gut, vielen Dank.
ich schau mal was sich daraus entwickelt und sag Bescheid wenn ichs irgendwie gelöst hab, oder die Nerven verloren hab.