LabVIEWForum.de - Werte aus Parameterliste 2D anhand des Namen in unterschiedlichen Cluster schreiben

LabVIEWForum.de

Normale Version: Werte aus Parameterliste 2D anhand des Namen in unterschiedlichen Cluster schreiben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich möchte Werte (DBL) aus einer Parameterdatei anhand des Namens in unterschiedliche Cluster-Elemente schreiben (siehe .txt-Datei im Anhang).

Die einzelnen Cluster sind inhaltlich unterschiedlich, sind fix (z.B. über mehrere TypDefs) und in Ihrer Gesamtanzahl fix (z.B. 4).
Anhand des Namen der Cluster-Elemente und der Beschreibung in der Parameterliste (1. Spalte) soll die Zuordnung erfolgen. In den einzelnen Zeilen stehen die Werte (DBL) für die Cluster.
Die Anzahl der Cluster-Elemente innerhalb des Clusters kann gemäß der TypDef unterschiedlich groß sein.

Da es sich hier um einen Prüfablauf handelt, ist die Reihenfolge zu beachten (1. Zeile = 1. Prüfung; 2 Zeile = 2. Prüfung; usw.).
Zudem können die selben Prüfungen mit unterschiedlichen Werten (DBL) mehrfach vorkommen.

Ziel:
Alle Prüfparameter sollen in einem Gesamt-Cluster mit der Prüfreihenfolge gebündelt sein. Diese sollen in die einzelnen Prüfungen (Cluster) unterteilt sein.
Zuletzt sollen die einzelnen Elemente / Werte (DBL) unterteilt sein.
Prüfreihenfolge (z.b. 1, 2, 3,...) --> Prüfungsart (Wait, ...) --> Parameter (Wert(DBL))

Wie kann das realisiert werden? Undecided

Ich denke es muss über das Zusatzpaket von OpenG und über den Datentyp Variant funktionieren.

Dazu hatte ich mich gemäß unterem Link schon orientiert und mit den einzelnen Funktionsblöcken von OpenG experimentiert.
Leider ohne richtigen Erfolg. :-(
https://www.labviewforum.de/Thread-Clust...i-befeuern

Thomas
Hallo Thomas,

ich würde ein Cluster als Array erstellen.
In dem Cluster ist eine String Variable für den Bezeichner des Prüfungsschrittes und ein DBL Array für die Parameter.
Die Reihenfolge gibt das Array des Clusters vor.
Du bindest das Cluster Array an eine For Next Schleife, die arbeitet schön ein Schritt nach dem Anderen ab.
In der For Next Schleife ist eine IF Anweisung, die alle Prüfungsarten enthält.

Wait ist dann auch eine Prüfungsschritt

Gruß
Freddy
Hallo Freddy,

danke für deinen Vorschlag. Ich hatte das einmal versucht umzusetzen. (siehe Anhang)

Leider sehe ich nicht, wie ich die einzelnen Prüfschritte als Cluster einbinden kann. Hmm

Hintergrund: Da es sich hier um ein komplexeres Projekt handelt, möchte ich zur besseren Lesebarkeit des Quellcodes neben den Prüfungen auch die einzelnen Werte (DBL) mit Namen bündeln (gemäß TypDef der einzelnen Prüfungen).
Hallo t.hipp,

Leider macht deine Festlegung auf typdefinierte Cluster dein Projekt noch komplizierter: du kannst Cluster nicht dynamisch erzeugen, sondern nur vorher definieren. Damit würdest Du deinen Prüfablauf schon fest verdrahten...

Ich würde für den Ablauf ein Array verwenden. Der einzelne Schritt ist ein einfacher Cluster aus enum (Typ) und Variant (Daten).
(Man könnte hier auch auf OOP umsteigen und für jeden Prüftyp eine Klasse definieren. Der Prüfablauf wird dann zu einem Array aus Objekten...)
Hallo Gerd,

ja das stimmt, dass es das Projekt anfangs komplizierter macht, aber für zukünftige & modifizierte Projekte ist es doch dann einfacher/besser lesbarm, oder nicht?

Beim einem Cluster mit einem größeren Array (innerhalb Variant) finde ich die Lesbarkeit mit einer Indizierung nicht so geeignet.
Mit OOP habe ich bisher noch fast keine Erfahrung :-\

Prinzipell mag ich es auch einfach; zumal ich kein Freund von dem Zusatzpacket von OpenG bin.
Gleichzeitig scheinen mir die Funktionsblöcke von OpenG Potential zu haben.
Wegen dem wäre ich auch für den Weg mit OpenG über den Datentyp Variant offen. Nur wie?

Anbei ein funktionierende VI mit OpenG, welches im oben genannten Link am Schluss beschrieben wurde.
So wie ich es aus den SubVi's entnehme, wird doch aus einem Variant ein Cluster gebaut, oder nicht?

Also eher zu OOP umsteigen?

Thomas
Hallo Thomas,

Zitat:So wie ich es aus den SubVi's entnehme, wird doch aus einem Variant ein Cluster gebaut, oder nicht?
Ein beliebiger Datentyp wird als Variant verpackt und in einer INI-Datei gespeichert.
Danach wird das Variant wieder eingelesen und unter Zuhilfenahme des bekannten Cluster-Datentyps auch wieder in den Ursprungscluster zurückkonvertiert.

Das mag lesbar sein, aber du bekommst schnell Probleme, sobald sich der Cluster ändert: dann kannst du nämlich nicht mehr die alten INI-Dateien mit dem neuen Clustertyp einlesen…
Es gibt auch noch die Möglichkeit die Daten in Varianten zu verpacken.
Denn ich kann in Varianten Arrays unterschiedlichem Inhalt packen.
Dabei bleibt das Problem der unterschiedlichen Daten. Aber der Transport der Daten ist einfacher.

Gruß Freddy
Hallo,

ich bin weiterhin an beidenen Varianten interessiert. Variant und OOP - auch wenn es nur für das Verständnis ist.

Zitat:Danach wird das Variant wieder eingelesen und unter Zuhilfenahme des bekannten Cluster-Datentyps auch wieder in den Ursprungscluster zurückkonvertiert.
Das ist doch genau das was ich machen möchte. Einlesen von 2D-Parametern in feste Cluster. Nur, dass das Beispiel vom oberen Link auf einen Parametersatz (1D) zugreift - ich möchte aber auf 2D zugreifen.
Und mit den zahlreichen SubVi's von OpenG tue ich mir momentan schwer (siehe Bild) :-\
Wie muss die Variant-Struktur aufgebaut sein/werden, damit ich 2D-Paramter (siehe Beispiel) mit fixen Cluster einlesen kann?

Zitat:Das mag lesbar sein, aber du bekommst schnell Probleme, sobald sich der Cluster ändert: dann kannst du nämlich nicht mehr die alten INI-Dateien mit dem neuen Clustertyp einlesen…
Das wäre okay für mich, das der Cluster zur INI-Datei passen muss.

Zitat:Es gibt auch noch die Möglichkeit die Daten in Varianten zu verpacken.
Das umgekehrte interessiert mich eher. Variant --> Cluster

Wie würde eine äquivalente Lösung in OOP aussehen?

Thomas
Hallo Thomas,

Zitat:Einlesen von 2D-Parametern
So einfach kann das Aussehen:
[attachment=59631]
Das 2D-Array kann natürlich auch einen Cluster enthalten. Aber wie bei Arrays üblich, muss jedes Element denselben Datentyp verwenden…
Referenz-URLs