LabVIEWForum.de - Frontpanelzugriff aus SubVI

LabVIEWForum.de

Normale Version: Frontpanelzugriff aus SubVI
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe Forenmitglieder,

ich habe da mal eine Frage zum guten Programmierstil:

Und zwar habe ich mir inzwischen angewöhnt, neue Anwendungen auf Basis einer Queued-State-Machine zu entwerfen.

Mein Haupt-VI besteht somit quasi noch aus einer Eventstruktur und den drei SubVIs für die State-Machines:
"Interface" (Verarbeitung von Events)
"Data Acquisation" (Steuerung bzw. Einlesen Daten / Messgerät)
"Display" (Anzeigen der Daten vom Messgerät).

[attachment=50769]

Nun zu meinen Fragen:
1. Ist es möglich, die Case-Struktur auch in ein SubVI-zu verschieben?
2. Ich finde die Lösung, erstmal alle Referenzen von FP-Elementen zu sammeln und an die SubVIs zu übergeben nicht gerade elegant gelöst (Hab diese Methode in einem Webcast von NI kennen gelernt):
Sobald ein Zugriff auf ein FP-Element benötigt wird, wird in dem Array nach der passenden Referenz gesucht.
3. Die FP-Elemente, hier Status, diagram, data-result, werden aus SubVIs angesteuert. Wo würdet ihr die Elemente im Main-VI platzieren? So wie momentan, "wo Platz ist"?

Zu 2. :
So sieht das konkret im SubVI "Display Queue" aus. [attachment=50767]

Hier ein Screenshot, wie nach einer Referenz gesucht wird: [attachment=50768]

Was habt ihr für Tipps, wie man die Struktur verbessern könnte, v.a. Punkt 2?
Eine mögliche Lösung wäre sicherlich eine Display-Schleife im Main-VI, die dann dort direkt die Elemente ansteuert, aber ich hätte das ganze dann trotzdem relativ gern in ein SubVI verlegt.

Vielen Dank für eure Hilfe Smile
Hallo Phips,

1. Ja, die Case-Struktur kann in ein subVI gepackt werden.

2. Das kann man so machen. Ich nutze dafür lieber eine FGV, die die Refs in den Attributen eines Variants ablegt.

3. Wo Platz ist. Wobei ich dein "Display Queue"-VI auch im MainVI direkt platzieren würde, das würde den zeitaufwendigen Zugriff über PropertyNodes ersparen…

Zitat:aber ich hätte das ganze dann trotzdem relativ gern in ein SubVI verlegt.
Wieso?
Hallo Gerd,

danke für deine Antwort.

Zu 1: Durch Recherche hab ich noch einen interessanten Beitrag dazu gefunden:
http://www.labviewforum.de/Thread-Events...n-moeglich

Dort gibt es zwei Möglichkeiten: Einmal "X-Controls" und einmal die Referenzen der FP-Elemente ans SubVI zu übergeben und dort mit der dynamischen Ereignisregistrierung zu arbeiten.

X-Controls scheinen mir hierfür übertrieben zu sein und selbst beim zweiten erscheint mir der Aufwand - selbst für größere Projekte - zu groß, so dass es sich lohnt, das in ein extra Sub-VI zu verschieben?

Zu 2: FGV sind natürlich auch eine Möglichkeit, aber wie machst du das? Sammelst du alle Referenzen und "suchst" dann die passende, falls ein benötigt wird, oder stellst du (so wie in meinem Beispiel) alle FP-Elemente als Referenz zur Verfügung?


Zu 3: Da hast du wohl Recht, in diesem Fall wäre es wohl einfacher, diese "kleine" Schleife noch im Main-Vi mit unterzubringen.

Zu den Gründen, warum ich das ganze gerne in ein SubVI verlagern würde:
Erstens wurde mir bei div. Schulungen eingeflüstert, soviel wie möglich (und sinnvoll) in ein eigenes SubVI zu verpacken,
auf der anderen Seite wird das gezeigte Programm noch viel umfangreicher werden, dass ich den Versuch unternehmen möchte, alles halbwegs sauber zu verpacken...
Hallo Phips,

ich sehe hier keinen Einsatzfall für XControls oder UserEvents…

Du hattest oben nach "Case-Struktur" gefragt. Redest du jetzt von der Event-Struktur?

Zu 2: Einmalig alle Referenzen einsammeln und als Key-Value-Paar (= Attribute) in einem Variant ablegen. Später dann einfach mit dem Key (=Indicator-Name) die Referenz vom Variant abfragen. So wie im verlinkten Nugget erläutert…

Zitat:soviel wie möglich (und sinnvoll) in ein eigenes SubVI zu verpacken
Betonung sollte auf "sinnvoll" liegen! Es mag sinnvoll erscheinen, sowas auszulagern. Wenn ich dann aber größere Datenmengen über den langsamen Umweg PropertyNode verschieben muss, ist dieses "sinnvoll" auch wirklich zu hinterfragen!
Hallo,

sorry, ich meinte wirklich die Event-Struktur.

Aber ich bin jetzt zu dem Entschluss gekomemn, dass es wohl gehen würde, aber keinen Sinn macht?
Ich werde wohl die Event-Struktur sowie die Display-Schleife im HauptVI lassen.

Die Übergabe der Referenzen habe ich wie du empfohlen hast, in einen Variant gepackt, das ist wesentlich eleganter Smile

Vielen Dank für deine Hilfe!
Falls es Dir noch etwas nützt: Ich bastele gerade an einem VI, welches die Referenzen aller FP-Elemente ermittelt. Der Elemente können beliebig tief eingeschachtelt sein, also beispielsweise ein Element in einem Cluster, der sich auf einer TAB-Seite befindet.

Wer mir zeigt, dass es so etwas schon besser irgendwo als Download gibt, erhält von mir 2 LFV-Tassen, die bei mir nur rumstehen (Ich trinke lieber aus dünnschaligen). Verbesserungsvorschläge willkommen.
Einfach laufen lassen, nachdem man den Pfad eines zu untersuchenden VIs eingegeben hat.
[attachment=50827]
Offtopic2
@Lucki: Du hast die Ebene "Panes" direkt nach Panel vergessen! Und das ist für skalierbare Fenster ein essentielles Hilfsmittel.

Gruß, Jens
Stimmt, das habe ich noch nicht berücksichtigt. Mein Ziel ist die programmgesteuerte Skalierung und Schriftgrößenänderung aller Elemente, weil es automatisch nicht gut funktioniert. Und das Haupt-VI hat bei mir 2 Fensterbereiche, die bezüglich der Skalierung unterschiedlich behandelt werden sollen. (Bei den Bedien- und Anzeigeelemenen in der linken Pane ist die Proportionalität der Skalierung wichtig, damit etwas Rundes nach der Skalierung rund bleibt. Im rechten Fesgterberich befinden sich Graphen, die unterschiedliche Skalierungsfaktoren in X und Y gut vertragen können.)
Es wird wohl auch erforderlich sein, Dekoelemente noch mit zu erfassen. Aber das gehört jetzt alles nicht in diesen Thread.
Referenz-URLs