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!
Hallo...
Einleitende Bemerkung: Mein LabVIEW Programm nimmt Messdaten von einem Messgerät auf. Um eine kontinuierliche Messwerterfassung zu garantieren, ist das gesamte Programm innerhalb einer While-Schleife. D.h. pro Schleifendurchlauf wird ein Wert erfasst. Diese Daten möchte ich gerne abspeichern. Wenn ein Knopf gedrückt wird, sollen die Daten in ein txt-File geschrieben werden. Wird der Knopf wieder ausgeschaltet, soll das txt-File geschlossenen werden. Erneutes Drücken neues txt-File, usw. Habe die Datenaufzeichnung auch schon mit diversen CASE-Strukturen versehen, um Bedingungen festzulegen, wann Daten aufgezeichnet werden sollen und wann nicht. Mein spezielles Problem ist nun. Die "Refnum" wird am Ausgang der CASE-Strukturen wieder auf null zurück gesetzt: Daraus folgt erstens: Information zur Textdatei geht verloren und Werte können nicht aufgenommen werden. Zweitens: Fehlermeldung - kein vollständiger Pfad. Schieberegister hatten auch keinen Erfolg. Kann mir also jemand bitte helfen, wie ich innerhalb einer While-Schleife in Abhängigkeit eines Knopfes Daten in einem Text-File abspeichern kann?
Besten Dank im Voraus
Fabian
ich glaube, du sollest mal entweder (Teil-)Screenshots deines VI's oder das VI selber hochladen.
Ich kann mit nämlich bei korrekter Verdrahtung nicht erklären, wie die "Refnum" auf einen geöffneten File verloren geht. Das sollte eigentlich schon funktionieren (Außer das ist einer der ominösen kleinen Fehler, die mit Version 8.01 gegenüber 8.0 behoben wurden :angry2:?! Denn wie schon mehrfach in diesem Forum erwähnt, das Update auf Version 8.01 wird auch von NI dringend empfohlen).
MfG, Jens</div>
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!
Hi Jens,
erstenmal danke, dass du mir helfen willst . Anbei schicke ich mein VI. Im Blockdiagramm habe ich auch noch einige Anmerkungen bezüglich des Programms hineingeschrieben.
Gruß Fabian
ohweh;)das dauert länger da durchzusteigen...
was mir auf anhieb auffiel, ist das die Schiftregister für das Refnum fehlen, den aktuellen "File-pointer" solltest du schon mitführen...
Hi,
ich denke nicht, dass ich ein Schieberegister für die Refnum brauche, da ich ja den Pfad mittels Schieberegister übergebe. Wüsste auch garnicht wie ich die Schieberegister mit der Refnum anständig verknüpfen sollte.
Ich weiß, dass das Programm auf den ersten Blick schwierig aussieht. Ist aber garnicht so schwer, wenn man gedanklich mal 3 bis 4 Schleifendurchläufe in Abhängigkeit des Protokollierknopfes durchspielt.
Über eine einfachere Lösung meines Problems wäre ich natürlich auch dankbar!
Gruß Fabi
ne allgemeine Anmerkung: Wenn du den Protokollieren-Knopf drückst und er Dateidialog aufpoppt: Was passiert mit deinen Daten? Nichts, oder? Dein Programm wird nämlich angehalten. Das ist für die Aufzeichnung wohl nicht relevant, da vorher und nach Aufzeichnung eh die Daten flöten gehen. Aber für dein Erfassungsgerät könnte es eine Rolle spielen, nämlich wenn evtl. irgendwo ein Puffer überläuft, weil die Daten nicht abgeholt werden.
Und du solltest es auch abfangen, wenn der Bediener im Dateidialog "Abbrechen" drückt, da gibts nämlich sonst ne Fehlermeldung!
Und du solltest nach jedem "Write" noch ein "Flush File" einfügen, um die Daten jeweils sofort auf Platte zu schreiben. Ansonsten werden die die zu schreibenden Daten nämlich evtl. in nem Puffer gehalten und erst beim Schließen des Files wirklich geschrieben. Bei nem Rechner/Programmhänger könnten deine Daten dann verloren sein!
Zum Problem: Die RefNum sollte im Schieberegister erhalten bleiben, du musst also nicht den Pfad ständig mit Rumschleppen! Da wird nämlich jedes mal ne neue Refnum erzeugt (Speicher!) Evtl. hat das zurücksetzen auch was damit zu tun, dass du an die Case-Ausgänge "Use default if unwired" aktiviert hast (rechtsklick!). Oder rufst du dein VI als SubVI auf und die Schieberegister mit der Refnum werden überschrieben bzw. neu initialisiert?
Kann grad nicht weitermachen...sorry!
Gruss
Achim
"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)
Hi Achim,
kein Thema, dass du gerade nicht weiter an meinem Problem arbeiten kannst. Wenn du Zeit findest könntest du mir deine Vorschläge in das Programm direkt einbauen (wenn es keine allzu großen Umstände macht). Habe nämlich viele deiner Ratschläge nicht ganz verstanden. Bin kein Informatiker. Andere Idee von mir: Vielleicht noch eine Schleife außen herum bauen um das Problem ganz andrs zu lösen!?
Gruß Fabian