LabVIEWForum.de - Cluster als Referenz - Daten ändern

LabVIEWForum.de

Normale Version: Cluster als Referenz - Daten ändern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo

Dem Sub-Vi im Anhang übergebe ich einen Cluster als Referenz. Ich kann zwar die Daten des Clusters im Sub-Vi anzeigen oder auf sie zugreifen, gibt es auch eine Möglichkeit, einzelne Werte im Cluster zu verändern, so dass die im aufrufenden Vi angezeigt werden?

Vielen Dank und Gruss

Hans
Hallo Hans,

wenn du im subVI schon den Cluster aus dem Variant aufdröselst, dann kannst du doch auch dessen Daten bearbeiten!
[attachment=43437]
Hab mir das mal angeschaut. Funktionieren tut das vertauschen ja. Jetzt musst du eigentlich nur den Schritt weitergehen und deinen Cluster 3 modifizieren (im SubVI) und dann wieder nach Variant wandeln und als Wert in die Referenz reinschreiben in der du den gerne hättest.


Was du hier machst ist ja grade das Gegenteil von dem was man in anderen Programmiersprachen machen würde (was Labview wohl auch nicht anders zulässt):

Statt einfach die Referenzen zu vertauschen schreibst du in die jeweiligen Referenzen einfach neue Daten. Heist auch: Statt einfach nur die Daten aus beiden Referenzen zu lesen und anschließend vertauscht zurückzuschreiben, kannst du auch du vorher modifizieren und dann erst zurückschreiben (oder eben wenn du nur eine einzelne Refernz bearbeiten willst die Übergeben, Wert auslesen (an der Stelle sollte intern ne Kopie erstellt werden), von Variant in den eigentlichen Cluster Wandeln (was du bei Cluster 3 ja auch machst), dann ganz normal wie jeden anderen Cluster auch bearbeiten und in die Referenz schreiben (die Konversion nach Variant erfolgt automatisch). Da du die neuen Daten damit unter der Referenz ablegst sollte das dann auch entsprechend im Hauptprog.

Beispiel siehe Anhang. Habe mal einfach das SubVI das Alter um eins Incrementieren lassen, Rest gleich. Und ich schreibe zu Demozwecken nicht in die Originalreferenz zurück (damit man den Unterschied sieht), allerdings ist das natürlich auch möglich.

Achja, die Sequenz im SubVI dürfte überflüssig sein, da durch den Datenfluss gewährleistet ist, dass vor den Schreiboperationen die Leseoperationen abgeschlossen sind (die Referenz die du benutzt kommt (hier GANZ wichtig für die Ablaufsteuerung) aus dem Auslesen des Wertes. Daher: erst wird der erste Wert gelesen, damit steht für die eine Schreiboperation nur der Wert für die andere nur die Referenz zur Verfügung; anschließend wird der andere Wert gelesen, damit stehen dann erst (nachdem die kopien beider Datensätze erstellt sind) beide Eingänge der Schreiboperationen zur Verfügung (und die können auch dann erst ausgeführt werden). Think Dataflow ^^

*edit*
Achja, ich habs zwar nicht verändert, aber es wird angeraten alle VIs im 4-2-2-4 Connector Design zu gestalten (das SubVI ist nicht so gestaltet da wahrscheinlich automatisch erstellt; der nachteil liegt dabei vor allem in der Lesbarkeit: In der Regel nimmt man 4-2-2-4 und benutzt dann die linke Seite für alle Eingänge die man braucht, die Rechte für alle Ausgänge, was man nicht braucht bleibt einfach frei. Gibt dann im Blockdiagram ein schöneres Bild, lesbareres Bild.

*edit 2*
Oh, Gerd war schneller. ^^
Das kommt davon wenn man zu lange an seinen Antworten schreibt.
Hallo zusammen

Funktioniert perfekt. Vielen Dank und einen schönen Abend.

Gruss

Hans
Hab mirs auch mal angeschaut. Warum wird hier beim SubVI der Weg über Variants gewählt?. Warum nicht direkt so:
[attachment=43442]
Referenz-URLs