LabVIEWForum.de - String zwischenspeichern

LabVIEWForum.de

Normale Version: String zwischenspeichern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Forum!

Ich möchte gerne eine Textdatei in einem bestimmten zeitlichen Abstand auslesen, den String der dabei rauskommt möchte ich gerne so lange zwischenspeichern und anzeigen lassen bis ein neuer String ausgegeben wird. Ich komm einfach nicht auf die Lösung, wie das gehen kann.

Vielen Dank!
Flo
Hallo Flo,

wenn man wissen will, was im VI passiert, dann nutzt man Debuggingtools wie Highlighting oder Sonden.

Und wenn man Dinge nur zu bestimmten Zeitpunkten/Bedingungen erledigen will, dann packt man diese Dinge in eine Case-Struktur.

Frage:
Wenn du den String nur alle 10s neu setzen/beschreiben willst, warum machst du das dann in jeder Iteration?

THINK DATAFLOW!

P.S.:
Die Nutzung des AutoCleanup-Tools würde hier nicht schaden.
Warum hast du keine Wartezeit in der Schleife?
Hallo Flo,

noch ein Nachtrag:
Du öffnest in jeder Iteration eine Referenz auf dieselbe Datei, schließt diese aber nicht wieder. Das könnte irgendwann zu Problemen führen.



Gruß, Marko
(27.02.2014 09:40 )floeteee schrieb: [ -> ]... den String der dabei rauskommt möchte ich gerne so lange zwischenspeichern und anzeigen lassen bis ein neuer String ausgegeben wird.
Aber das macht doch jede Anzeige (und natürlich auch Textanzeige) so: Sie zeigt den Wert (z.B. einen Text) so lange an, bis der durch etwas Aktuelleres überschrieben wird. Da muß man doch nichts extra programmieren...
Danke für die Antworten!
Bei mir wird aber gar nichts angezeigt, wenn die Case-Struktur mit dem Timer verbunden ist. Es wird nur ein Text-String angezeigt, wenn ich die Case-Struktur mit einem konstanten TRUE verknüpfe.
Gibt es eine andere Möglichkeit, eine Textdatei zyklisch auszulesen?

Vielen Dank,
Flo
Hallo Flo,

Zitat:Es wird nur ein Text-String angezeigt, wenn ich die Case-Struktur mit einem konstanten TRUE verknüpfe.
Um es noch einmal in GANZ DEUTLICHEN Worten zu sagen:
Was passiert im FALSE-Case? Welcher Wert wird dann ausgegeben? Wieso erscheint dann kein Text im Indicator?

Und noch einmal:
Wenn etwas nur zu bestimmten Bedingungen getan werden soll, dann erledigt man das innerhalb einer Case-Struktur.
Wenn du nur zu bestimmten Bedingungen einen Text lesen und dessen Darstellung veranlassen willst, dann erledige das innerhalb der Case-Struktur!

THINK DATAFLOW!
OMG jetzt hab ichs verstanden! Wenn ich alles in die CASE reinpack funktionierts!
Danke
Mal salopp vermutet was das Prob war:

Wenn ich den Knoten richtig deute ist der False Case leer. Die Lösung für das Labview das so nicht ausführen möchte war: Standard wenn nicht verbunden (das ist ein leerer String). Verstriche Zeit misst offenbar nur ob schon so viel Zeit wie angegeben vergangen ist seit dem letzten TRUE und gibt dann TRUE aus (nutze das VI nicht deswegen mal blind geraten).

Was passiert jetzt? Deine Schleife rennt ungebremst, lastet einen Prozessorkern aus und kriegt ab und zu mal ein TRUE in den Case - dann wird dein String gesetzt aufs Bedienelement. Dummerweise rennt die Schleife weiter und dein Verstrichene Zeit gibt jetzt FALSE aus. Damit wird der FALSE Case ausgeführt, der Standardstring "" (also der Leere String) wird ausgegeben und das was vorher im Bedienelement stand sofort überschrieben. (der rennt schneller als du kucken kannst und überschreibt deswegen auch entsprechend schnell).

Was lernen wir daraus: Du hast dein Problem offenbar trotz Unkenntnis des eigentlichen Problems immerhin ganz gut gelöst; denn wenn das Bedienelement im TRUE Case sitzt dann wird es eben nur noch im TRUE Case beschrieben.

Gruß Kiesch

P.S: Ein Wait mit 10 / 100ms (oder was auch immer du gerne hättest) in der Schleife wäre sicher noch sinnvoll. Sonst rennt die wie gesagt ungebremst und lastet einen Prozessorkern aus. Noch besser wäre vermutlich die verstrichene Zeit durch eine Eventstruktur zu ersetzen. Die wartet dann auch wirklich genau deine 10s wenn du die mit dem Timeout verbindest. Sieht dann so aus:

[attachment=48770]

Kannste dann auch zu nem beliebigem Zeitpunkt stoppen und läuft nicht als Endlosschleife wie oben *hust*

[attachment=48771]
Referenz-URLs