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!
Unten befindliches puffer.vi bekommt Messdaten geliefert (2D Array ''Readblock") und soll immer die neuesten Datensätze speichern.
Mithilfe der Queue einfach zu realisieren, aber was mir seit Stunden nicht gelingt ist, die Queue-Elemente als Array anzuzeigen.
Wenn ich also beispielsweise "max. Größe" auf 20 setze, sollen die neuesten 20 Werte, welche sich ja dann immer in der Queue befinden, in einem Array angezeigt werden.
(06.08.2013 18:25 )Julian S schrieb: Wer kann mir weiterhelfen?
Guten Morgen Julian,
du liest mit dem VI 'Dequeue Element' immer nur ein Element aus, wenn du es aufrufst. Willst du also mehrere Element aus der Queue auslesen, muss du öfters auslesen und die Werte sammeln, z.B:
Dann bekommst du die letzten 20 Elemente der Queue in einem Array gesammelt (In deinem Fall ein 3D-Array, da deine Queue bereits 2D-Arrays beinhalten
Beste Grüße,
NWO
9 von 10 Stimmen in meinem Kopf sagen: Ich bin nicht verrückt,
die andere summt die Melodie von Tetris.
NI schrieb:To use the abort button is like using a tree to stop a car!
Zitat:wie bekomme ich daraus dann wieder mein 2D-Double Array?
Wie oben schon gesagt wurde: wenn du in einer Queue 20mal ein 2D-Array speicherst und alle Elemente aus dieser Queue wieder ausliest, dann bekommst du je nach Lösung entweder ein 3D-Array oder ein 1D-Array of Cluster of 2D-Array.
Wenn du dagegen ein (größeres) 2D-Array als Ergebnis haben willst, dann musst du bei NWOs Lösung auf die Autoindizierung verzichten und dir dein Ergebnisarray selbst zusammenbauen - mit BuildArray im Concat-Modus...
Wenn man als Queue-Element ein 2D-Array definiert, dann kann die Queue nicht wissen, ob das Array immer die gleiche Zeilen- und Spaltenzahl hat. Deshalb müssen die Elemente in der Queue geclustert werden. Nach meinen Erkenntnissen nagt das an der Performance, so dass ich es bevorzuge, die Arrays in Elemente zu zerlegen und die Elemente als einfache DBL-Zahlen zu speichern. Das ist etwas mehr Code und sieht auf den ersten Bllick wegen der notwendigen for-Schleife auch langsamer aus, ist es aber nicht.
Für das folgende Beispiel habe ich der Einfachheit halber das "Data Queue Pnkt zu Punkt"-VI verwendet. Die Anpassung der Idee auf die "richtige" Queue, falls gewünscht, ist aber ein Klaks.
Nochmals vielen Dank für die große und professionelle Resonanz, das ist wirklich beeindruckend in diesem Forum!
Leider brauche ich als Labview Anfänger recht viel Zeit, um eure Ideen nachzuvollziehen und anzuwenden, ich hab daher zunächst nochmal meinen mitternächtlichen Einfall aufgearbeitet und wäre sehr dankbar, wenn ihr was dazu sagt.
Soweit ich das sehe ähnelt es dem Vorschlag von GerdW, nur dass ich das Pufferarray nicht über den QueueStatus fülle sondern direkt über den Datenstream.