24.01.2013, 12:46
Beitrag #1
|
Aleph1
LVF-Gelegenheitsschreiber
Beiträge: 51
Registriert seit: Sep 2005
7.1 + 8.6.1
2005
de_en
69120
Deutschland
|
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.
Gruß
Karl
|
|
|
24.01.2013, 12:53
Beitrag #2
|
GerdW
______________
Beiträge: 17.469
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
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...
|
|
|
24.01.2013, 13:16
Beitrag #3
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
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!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
24.01.2013, 19:06
Beitrag #6
|
GerdW
______________
Beiträge: 17.469
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Aus *.txt-Datei bei neuen Einträgen diese auslesen
Hallo Aleph,
hier mal ein Link ins MSDN...
Irgendwo bei LAVA oder im NI-Forum hatte ich auch mal VIs gesehen, die diese FileSystemWatcher umsetzen...
|
|
|
| |