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!
13.02.2008, 14:51 (Dieser Beitrag wurde zuletzt bearbeitet: 13.02.2008 20:52 von jg.)
ich befass mich erst seit einigen Tagen mit LabVIEW und habe ein Problem:
ich soll ein kleine Programm mit LabVIEW(Version 8) erstellen das eine Datei ausliest die von einem anderen LabVIEW-Programm erstellt wurde(ASCII). Die Dateien sind Tabelarisch aufgebaut und enthalten 3 Verschiedene Messwert 2 X Strom 1 X Spannung zu 10000 verschieden Zeiten.
Leider kommt beim Lesen immer ein Fehler "EOF ist erreicht". Wenn ich auf Fortsetzen drücke kommt der Fehler wieder.
Drücke ich Stop kann ich die Daten zwar sehen(in meiner Anzeige) aber mein Programm bricht ab. Ich hab schon versuch den Dateiende? Ausgang meines "Auslese Objekts"(?) negiert an den Aktiv Eingang an zu schliessen, so dass es Abbricht sobald EOF erreicht ist. Leider bringt das nix.
über eure Hilfe wäre ich sehr dankbar
mfG
Stefan
13.02.2008, 15:08 (Dieser Beitrag wurde zuletzt bearbeitet: 13.02.2008 15:11 von RoLe.)
Nimm doch das "Read from Text File" ein kleines gelbes anstelle dieses ExpressVi.
Rechte Taste aufs VI gibt es noch die Option "Convert EOF"
Hoffe das geht, sehe es auch zum ersten mal in LV7 war das anders
Gruss
Roland
EDIT: Sehe gerade das du ein MesswerteFile nicht ein normales File lesen möchtest, dann wird es wohl etwas komplizierter.
Sorry muss dieses LV8 auch mal kennenlernen, ist irgendwie alles anders als früher. Mist.
.·´¯)--> Leben ist das, was dir passiert, wenn du eifrig dabei bist andere Pläne zu machen <--(¯`·.
' schrieb:Leider kommt beim Lesen immer ein Fehler "EOF ist erreicht". Wenn ich auf Fortsetzen drücke kommt der Fehler wieder.
Das wirst du nicht wegkriegen, dass liegt an dem ExpressVI...das ist irgendwie tief drinnen so programmiert, dass es bei wiederholtem Aufruf immer diese Meldung bringt! Nach diesem "Fehler" (Feature?) haben sich hier im Forum schon einige erkundigt...
Ich empfehle dir, die zu deinen Daten passenden "richtigen" VI's zu verwenden, dann gibts normalerweise keine Probleme!
Viel Erfolg!
A.
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
13.02.2008, 16:51 (Dieser Beitrag wurde zuletzt bearbeitet: 13.02.2008 16:51 von Y-P.)
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
13.02.2008, 16:56 (Dieser Beitrag wurde zuletzt bearbeitet: 13.02.2008 16:57 von RoLe.)
' schrieb:Das wirst du nicht wegkriegen, dass liegt an dem ExpressVI...das ist irgendwie tief drinnen so programmiert, dass es bei wiederholtem Aufruf immer diese Meldung bringt! Nach diesem "Fehler" (Feature?) haben sich hier im Forum schon einige erkundigt...
Da ich im Moment nicht schlaues zu tun habe, schaute ich mir das einmal an.
Es ist tatsächlich etwas tief im ExpressVi, der Fehler, und wäre relativ einfach zu beheben. (eine True Konstante anschliessen)
Tatsächlich wird die Datei mit dem "alten Read Characters From File" eingelesen, das gem. Hilfe gar nicht mehr unterstützt wird.
Dieses Vi hat einen Eingang "convert eol?" dass, wenn true das EOF in ein EOL wandelt.
Dieser steht auf False (standart, nicht konvertieren)
Ich denke mal das es damit geht, hab es aber nicht geprüft, da ich keine solche MessDatei zum einlesen habe.
@evildead: Ich würde es so machen wie Achim sagt, und die "original" VI verwenden, oder kontakt zum Ersteller der Datei aufnehmen. Mein Vorschlag ist nichts für Einsteiger.
Gruss
Roland
.·´¯)--> Leben ist das, was dir passiert, wenn du eifrig dabei bist andere Pläne zu machen <--(¯`·.
13.02.2008, 18:37 (Dieser Beitrag wurde zuletzt bearbeitet: 13.02.2008 18:52 von Lucki.)
Das ganze VI ist ja Nonsens, aber trotzdem ist die Frage berechtigt, warum der Fehler auftritt, und ich habe mir das mal angesehen.
Es wird beim ersten Aufruf mit Aktivierung=true die gesamte Datei eingelesen und richtig im Diagramm dargestellt. Gleichzeitig erscheint am Ausgabg EOF =true. Keine Fehlermeldung, alles OK.
Beim nächsten Aufruf ist Aktivierung=false. Man sollte meinen, daß dann das VI im nicht aktiven Zustand eben nichts tun, also auch keinen Fehler verursachen kann. Dem ist aber nicht so. Es wird dann der von Dir beschriebene Fehler ausgegeben.
Ob man dieses Verhalten nun als Bug oder Feature bezeichnet, will ich jetzt nicht sagen. Auf jeden Fall hat man die Möglichkeit, wenn man das Verhalten kennt, einen work around zu basteln. Beispielsweise mit einem Case im das VI herum. Man muß also vermeiden, wenn die Datei ausgelesen worden ist, das VI überhaupt noch mal anzusprechen. Deaktivierung genügt nicht.
Edit: Roland, Du warst schneller und tiefgründiger, ich habe nur die Oberfläche untersucht.
Edit2: Habe es mal mit V8.5 untersucht. Dort gibt es einen zusätzlichen Input "Reopen File", und wenn man das einfach true setzt, dann ist das Problem gelöst. (Was Sinn macht, wenn die gesamte Datei sowieso beim ersten Aufruf gelesen wird, dann macht doch, wenn überhaupt, ein wiederholter Zugriff nur Sinn, wenn man wieder von Anfang an liest)
Genau, milde ausgedrückt.
Je tiefer man geht ... ich habe jetzt eine Ahnung wie sich Frodo auf dem Weg nach Mordor fühlte.
' schrieb:Es wird beim ersten Aufruf mit Aktivierung=true die gesamte Datei eingelesen und richtig im Diagramm dargestellt. Gleichzeitig erscheint am Ausgabg EOF =true. Keine Fehlermeldung, alles OK.
Beim nächsten Aufruf ist Aktivierung=false. Man sollte meinen, daß dann das VI im nicht aktiven Zustand eben nichts tun, also auch keinen Fehler verursachen kann. Dem ist aber nicht so. Es wird dann der von Dir beschriebene Fehler ausgegeben.
D.h wenn die Datei nur ein EOF am ende hat, geht es.
Was auch nco ein Problem darstellt, ist das uninitialisierte SR für das EOF Signal im ex_subFileRead.vi.
Das ist bei jedem weiteren aufruf TRUE, mit der AND-NOT Verknüpfung.
' schrieb:Ob man dieses Verhalten nun als Bug oder Feature bezeichnet, will ich jetzt nicht sagen.
Ich auch nicht.
' schrieb:Edit: Roland, Du warst schneller und tiefgründiger, ich habe nur die Oberfläche untersucht.
Zu schnell. Wenn ich heute nochmal lese, muss ich sagen stimmt nicht so ganz.
Ich ging ja davon aus das dieses Dateiformat (welches überhaupt) massenhaft EOF drin hat.
So wie ichs heute verstehe ist das nicht der Fall. Daher ist der von mir gemachte Vorschlag auch Nonsens.
OK, ev. als optionaler Eingang.
' schrieb:Edit2: Habe es mal mit V8.5 untersucht. Dort gibt es einen zusätzlichen Input "Reopen File", und wenn man das einfach true setzt, dann ist das Problem gelöst. (Was Sinn macht, wenn die gesamte Datei sowieso beim ersten Aufruf gelesen wird, dann macht doch, wenn überhaupt, ein wiederholter Zugriff nur Sinn, wenn man wieder von Anfang an liest)
Tja, ob das was nützt, wenn das SR nicht initialisiert wird.....
Schlussendlich egal, wir werden es ja eh nie einsetzen, diese ExVI.
Gruss
Roland
.·´¯)--> Leben ist das, was dir passiert, wenn du eifrig dabei bist andere Pläne zu machen <--(¯`·.
' schrieb:ich soll ein kleine Programm mit LabVIEW(Version 8) erstellen das eine Datei ausliest die von einem anderen LabVIEW-Programm erstellt wurde(ASCII). Die Dateien sind Tabelarisch aufgebaut und enthalten 3 Verschiedene Messwert 2 X Strom 1 X Spannung zu 10000 verschieden Zeiten.
Eigentlich möchtes du ja eine Hilfe.
Schau mal das Example "Read Datalog File Example.vi" an.
Das zeigt auch einen Weg, ohne das fehlerhafte ExVi.
Ob es geht hängt halt einwenig von deiner Datei ab.
Viel Glück
Gruss
Roland
.·´¯)--> Leben ist das, was dir passiert, wenn du eifrig dabei bist andere Pläne zu machen <--(¯`·.
' schrieb:Ich ging ja davon aus das dieses Dateiformat (welches überhaupt) massenhaft EOF drin hat.
EOF ist eigentlich kein Character. Sondern ein Status der ganz allgemein dem Stream zugeordnet wird. Stream deshalb weil es neben Files auch noch pipes, sockets und dergleichen gibt die alle mit den C runtime Funktionen read und write angesprochen werden und eben eine EOF Status erzeugen können wenn nichts mehr zu lesen ist.