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!
ich habe hier mal ein echtes "bloody beginner" Problem. Ich hoffe, ihr könntet mit dennoch helfen, obwohls es für einen alten Hasen keine Herausforderung ist.
Ich habe in meiner Applikation jede Menge Anzeige- und Bedienelemente zu initalisieren. Dieses realisiere ich mit den jeweiligen Eigenschaftsknoten. Aus dem VI selbst heraus stellt dieses auch kein Problem dar. Jedoch möchte ich wegen der Übersichtlichkeit ein eigenes SubVi erstellen, in der diese Initalisierungen vorgenommen werden.
Ich weiß zwar, dass ich jetzt die Eigenschaftsknoten irgendwie über eine Refernz ansprechen muß, aber dass habe ich bis jetzt nicht auf die Reihe bekommen. Mit der LV-Hilfe bin ich auch nicht richtig weiter gekommen "zu viel Fachchinesisch"<_< .
Könnte es mir jemand einfach erklären?
Gruß
Mave
Anzeige
12.06.2007, 09:08 (Dieser Beitrag wurde zuletzt bearbeitet: 12.06.2007 09:18 von Lucki.)
Wenn es aus dem VI heraus kein Problem ist, dann ist die Erstellung eines Sub.VIs mit Referenzen auch kein Problem: Einfach den (im Haupt-VI erstellten) Code auswählen, dann Hauptmenü/Bearbeiten/Sub-VI erstellen anklicken. Da kannst Du auch studieren, wie es gemacht wird, um dann künftig solche SUB-VIs auch direkt erstellen zu können.
Ich selbst mache es allerdings eher so: Das Grundgerüst eines Haupt-VIs besteht aus einer gestapelten Sequenz: Sequenz 0: Initialisierungen, Sequenz 1: Hauptausführungs-Schleife, Sequenz 2: Schließen von Tasks etc.
Das ist nach meinem Dafürhalten mindetens genau so übersichtlich wie die Verwendung von Sub-Vis für die Initialisierung.
Nach dieser Methode stoße ich leider sehr schnell an die Grenze von 28 Anschlüssen. Daher ist die Erstellung eines SubVi auf diesem Weg nicht möglich. Ich dachte eher daran in einem SubVi auf mein MainVi zu referenzieren und die im MainVi benutzten Bedien- und Anzeigeelement zu initalisieren. Damit müsste doch dieses SubVi ohne Anschlüsse auskommen können???. Wahrscheinlich habe ich hier ein ganz grundlegendes Verständnisproblem
ich rate auf jeden Fall zu der von Lucki bereits erwähnten Methode: Initialisierung in der ersten von drei Sequenzen.
Nichtsdestoweniger hast du auch folgende Möglichkeit: Führe alle Referenzen auf ein Array und gib das Array in das SubVI. Dort kannst du das Array dann indizieren und ggf. mit Variant auf die Wert-Eigenschaft des referenzierten Objektes schreiben. Das hat aber einen Nachteil: Du musst wissen, in welches Element des Array du was schreiben musst - alleine schon aus diesem Grunde macht ein SubVI keinen Sinn.
Mit der Variante des Zugreifens auf das HauptVI im SubVI hast du prinzipiell das selbe Problem. Du kannst zwar auf alle Objekte des HauptVI zugreifen (über ein entsprechendes Property), aber auch wieder nur mit Variant. Auch hier musst du wissen, auf welchen Index welcher Initialisierungswert gehört.
Desweiteren gibt es noch die Möglichkeit "Setze Standardwerte". Das ist eine Methode des VIs, dass alle Elemente auf ihre jeweiligen definierten Standardwerte setzt.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
im Grunde gehe ich nach der empfohlenen Methode vor, d.h. ich benutze keine gestapelte Sequenz, sondern eine Initphase in einer State-Machine.
Hier nehme ich alle Initalisierungen vor. Jedoch ist das so groß geworden, dass die Darstellung nicht mehr auf eine Bildschirmseite passt. Ich dachte, ich könnte das ganze durch einsetzen eines SubVi etwas übersichtlicher gestalten.
' schrieb:im Grunde gehe ich nach der empfohlenen Methode vor, d.h. ich benutze keine gestapelte Sequenz, sondern eine Initphase in einer State-Machine.
Hier nehme ich alle Initalisierungen vor. Jedoch ist das so groß geworden, dass die Darstellung nicht mehr auf eine Bildschirmseite passt.
Hier gäbe es natürlich ein ganz triviale Lösung: Initphase der State-Machine in 2 Schritte unterteilen, nach dem Motto erst Init1, dann folgt Init2.
MfG, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
' schrieb:Ich werde deine Methoden jetzt mal ausprobieren.
Ich weis ja, des Menschen Wille ist sein Himmelreich, außerdem lernst du ja was dabei. ;)Aber unter uns gesagt: So Sachen wie diese mit Referenzen hab ich alle wieder gestrichen und rückgängig gemacht. Irgendwie gab das immer Probleme.
Die Sache mit der Statemachine hat diverse Vorteile gegenüber einer Sequenz: Man kann je nach Bedarf auch die Initialisierung selbst mitten im Programm vornehmen.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).