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 Zusammen,
seit ein paar Wochen beschäftige ich mich jetzt schon mit Labview, bin also noch ein ziemlicher Anfänger.
Im Forum hier habe ich schon mehrmals einen passenden Beitrag gefunden, der mir bei einem Problem weitergeholfen hat.
Jetzt habe ich aber einen Fall, wo ich irgendwie nicht weiter komme, wäre nett wenn mir da jemand weiterhelfen könnte.
Ich habe ein Programm erstellt das bei einem Ereignis (schalten eines Sensors) 2 Messwerte (Strings) einließt. Diese werden dann sofort mit der Funktion: In Textdatei schreiben in ein zuvor erstelltes txt Dokument gespeichert. Das funktioniert auch soweit.
Jetzt möchte ich dies aber ändern so dass die Strings anstatt in die txt Datei in ein Array geschrieben werden. Außerdem will ich die letzten 5 Messwerte immer auf dem Frontpanel angezeigt bekommen.
Bis jetzt hab ich es nur hinbekommen die Werte per While Schleife in ein Array zu schreiben (will aber eigentlich nur bei einem Ereignis in das Array schreiben). Außerdem werden mir nach dem 5. Wert nicht mehr die aktuellen Werte angezeigt sondern das Array wird einfach weiter nach unten beschrieben.
Habe hierzu mal ein kleines Beispiel gemacht.
Wäre nett wenn mir jemand ein paar Tipps geben könnte wie ich das Problem lösen kann.
Gruß
Js89
Anzeige
14.08.2013, 16:59 (Dieser Beitrag wurde zuletzt bearbeitet: 14.08.2013 17:06 von Trinitatis.)
hier mal dein VI auf die Schnelle angepasst, so dass immer 5 Werte im Array stehen - der neueste Wert steht dabei in der ersten Zeile.
Die Art, das mit einem 2D-Array zu machen, kann allerdings bei vielen Daten recht schnell recht langsam werden --> Da ist die LossyQueue sicher besser geeignet.
Gruß, Marko
Hier nochmal die LossyQueue-Variante (nun allerdings anders herum)
vielen dank schon mal, die LossyQueue Variante sieht schon mal sehr gut aus.
Bin aber immer noch am Rätseln wie ich das hinbekommen soll dass z.B. nur bei einem Tastendruck die Werte ins Array geschrieben werden.
Wäre für weitere Hilfe echt dankbar.
hab es jetzt mal nach dem Vorschlag von GerdW mit einer Case-Struktur aufgebaut, funktioniert auch ganz gut.
Jetzt will ich auch noch das Array auf Tastendruck in eine txt Datei schreiben, hab das auch schon mal mit der Funktion In Tabellenkalkulationsdatei schreiben ausprobiert, jedoch scheint das noch nicht zu funktionieren, hat mir noch jemand einen Tipp wie das gehen könnte?
Gruß
14.08.2013, 20:36 (Dieser Beitrag wurde zuletzt bearbeitet: 14.08.2013 20:38 von GerdW.)
das Programm macht genau das, was du programmiert hast! Das es nicht das macht, was du im Sinn hattest, kannst du nicht dem VI anlasten...
Einfache Lösung: Guck dir an, was das VI macht - und zwar mit Highlight-Debugging!
Tipp1: Wenn du "Speichern in TXT" aktivierst, ist leider nicht "Speichern in Array" aktiv...
Tipp2: Daten speichert man sehr effektiv in Schieberegistern!
Tipp3: Einer Polling-Schleife tut etwas Bremsen mit Wait sehr gut!
mit Hilfe deiner Tipps hab ich es soweit hinbekommen das die Werte in eine txt Datei geschrieben werden. Jedoch habe ich jetzt noch das Problem das nur die letzten 5 Werte reingeschrieben werden, also die die auch auf dem Frontpanel angezeigt werden.
Will zwar nur die letzten 5 Werte auf dem Frontpanel sehen, jedoch sollen natürlich alle Werte abgespeichert werden.
Zitat:Will zwar nur die letzten 5 Werte auf dem Frontpanel sehen, jedoch sollen natürlich alle Werte abgespeichert werden.
Und warum verbindest du dann den Draht, der nur die letzten 5 Werte speichert, mit der Write-Funktion?
Pragmatische Lösung: Im Schieberegister werden alle Daten gesammelt (für die Speicherung), die Queue übernimmt das Puffern der letzten 5 Werte für die Anzeige...
zum einen verwendest du ein uninitialisiertes Shiftregister, was bei Mehrfachaufrufen dieses VIs zu (wahrscheinlich) unerwünschten Resultaten führt. Und zum anderen speicherst du im Shiftregister immer nur die letzten 5 Werte - du könntest z. B. jeden gelesenen Wert in die Datei schreiben (Haken bei "an Datei anhängen) machen. Dann würde ich dir aber nicht zu diesem VI raten, da es die Datei immer wieder öffnet und schließt, sowas gehört außerhalb der Schleife.