' schrieb:Also aus Deinem Bild werde ich nocht richtig schlau. Aber selbstverständlich brauchst Du den Ringpuffer nicht mehrere Male. Einfach alle Elenete die gepuffert werden sollen als Cluster zusammenfassen.
Auch Deine ganz oben beschriebene Aufgabenstellung ist zwar klar, aber unvollständig. Klar ist, daß Du die Werte in den Puffer lesen willst und nur die letzten 800 Werte zu behalten wünschst. Was aber dann mit den Werten weiter geschehen soll, sagst Du nicht. Willst Du den geamten Puffer lesen und ihn dabei jedesmal leeren? Willst Du ihn lesen, ohne ihn zu leeren? Willst Du das älteste Element lesen und dabei aus dem Puffer entfernen. (Es ist bei Puffern üblich, daß das was gelesen wird aus dem Puffer entfernt wird)-
Hi Lucki,
erstmal großes Danke für deine Mühen und Ideen!!!
Mein Ziel ist es, ein Programm mit LV zu schreiben, mit dem ich meinen USB-to-CAN von IXXAT auslesen kann. Dabei ist es wichtig, dass ich die Werte gemäß der ID zuordnen kann. Später will ich einfach eine Tabelle ausgeben können, die aus ausgewählten IDs besteht. Also wenn ich ID 1,2,3 und 4 anwähle, soll meine Tabelle auch aus ID 1,2,3,4 bestehen. Diese Werte will ich dann abspeichern können.
Das war ungefähr die grobe Beschreibung von meinem Ziel.
Aus meinem VI kann man erkennen, dass nach jedem While-Schleifendurchlauf genau 1 Cluster (besteht aus: ID, Timestamp, Data...) gelesen wird. Dabei werden alle 120 sec. (erkennbar am Timestamp) 13 Werte und zwar hintereinander ausgegeben (der Cluster überschreibt bei jeden Durchlauf seine Werte). In meinem VI habe ich deshalb eine Case-Struktur gemacht, die je nach ID den Wert in den passenden Array hineinschreibt, somit kann ich meine ausgelesenen Werte später nutzen (Darstellen, Speichern, evtl. Zeichnen). Nun werden die Arrays natürlich nach kürzester Zeit riesig und dies wollte ich durch einen Ringbuffer auf ca. 8000 (sollte einstellbar sein) Werte pro ID begrenzen, damit ich das Programm auch mal über Nacht laufen lassen kann, ohne dass mir meine PC "abschmiert".
Bevor ich die Werte in meine Arrays hineinschreibe, rechne ich sie noch um.
Ich hoffe, nun ist die Sache etwas klarer. Die Werte möchte ich also auf keinen Fall aus dem Ringbuffer löschen. Ich möchte lediglich die Werte in einer Tabelle darstellen und bei Bedarf abspeichern.
Hier habe ich noch einen Ringbuffer gefunden:
LV8.5
Recent_History_Buffer__DBL_.vi (Größe: 25,04 KB / Downloads: 305)
Dieser ist eingentlich das was ich gesucht habe. Problem ist nur: ich kann nur einzelne Werte abspeichern und dann als Array ausgeben.
Die Idee mit dem Cluster-Ringbuffer ist ziehmlich gut. Denn dann würde ich ja nur einen Ringbuffer für alle Arrays benötigen!
Ich mache mir mal kurz Gedanken und werde mich dann später melden.
Gruß Joe
Ich benötige jedoch, dass ich einen 1D-Array abspeichere und dann einen 2D-Array (enthalten viele 1D-Arrays) ausgebe.