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 einige VIs, die ich sowohl als kleine eigenständige Anwendungen verwende aber genausogut auch mal als SubVI in größeren Applikationen einbinde.
Für die eigenständige Verwendung möchte ich nun gerne ein wenig mehr Aufwand in das GUI-Design stecken. Ich plane Windowstypische Oberflächengestaltungen mit Menüleiste, Symbolleiste und so weiter. Dazu gehört natürlich auch die passende Implementierung im Blockdiagramm.
Verwende ich nun dieses schöne VI als SubVI, benötige ich die GUI ja nicht sondern nur die Funktionalität (z.B. Kommunikation mit COM-Port). Wird die Übergeordnete Applikation trotzdem gebremst? Oder filtert der Compiler sowas raus?
Sonst würde ich eben wie in anderen Programmiersprachen auch, die reine Funktionalität in eigene kleine SubVIs packen und dann eben eine aufwendige GUI dazu bauen die diese Funktionalität verwendet. Stören tut mich daran nur, dass ich dann doch wieder zwei VIs habe für nur eine Aufgabe.
Ist das irgendwie verständlich?
Für Kommentare und Hinweise oder Alternativen und Hintergrundwissen bin ich wie immer sehr dankbar.
LG,
Torsten
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" (Konrad Zuse)
gottfried hat recht, aber es wird noch besser! Solange ein SubVI sein Panel nicht offen hat wird das auch nicht gezeichnet so dass viele aufwendige UI Elemente auf einem solchen VI keinen oder minimalen Einfluss auf die Ausführungsgeschwindigkeit eines Programmes haben wenn es als SubVI verwendet wird.
Der gewisse Vorbehalt im vorigem Satz rührt daher, dass wenn Du zum Beispiel Property Nodes von Frontpanelelementen in Deinem SubVI hast vorher gesagtes nicht mehr ganz stimmt. Zudem verhindern Frontpanel Control Property Nodes in einem Diagram zuverlässig die Entfernung der Frontpanel Resource auch beim Bauen eines Executables.
Okay das sind schon mal interessante Punkte. Gibt es unter LabVIEW denn sowas wie PreCompiler Strukturen?
Ich kenne das aus C# beispielsweise.
Da sagt man dann dem PreCompiler:
DEFINE Debug
später im Code kann man dann einfach for einen bestimmten Block die Abfrage einbauen:
IFDEF Debug
und an der Stelle z.B. irgendwelche Debuginfos in der Konsole ausgeben.
sowas könnte man ja auch mit gewissen Strukturen in LabVIEW machen. Ich denke beispielsweise an eine Eventstruktur. Wenn ich im SubVI-Modus bin, brauche ich ja sinnigerweise nicht auf Userevents warten.
LG
Torsten
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" (Konrad Zuse)
Also da gibts die Conditional Structure die das in etwa macht. Ist leider ziemlich statisch auf defines in den Project Settings festgelegt. Eine andere Variante ist einfach eine Case Struktur zu verwenden die Du etwa an eine Applikationsglobal oder eine Property Node anschliesst die Dir die Information zurückgibt ob es ein Executable ist.
wenn das "SubVI" ein GUI mit Menü und Event-Struktur hat, dann lässt es sich doch nicht so einfach als SubVI in einem anderen Programm/VI mit eigenem GUI einsetzen, es sei denn es wird beim Start geöffnet und am Ende wieder geschlossen. In diesem Fall ist die Frage nach dem Resourcen-Bedarf obsolet.
Ich denke, wenn das SubVI als eigenständige Applikation etwas "her machen soll", kommt man um die Entwicklung zweier GUIs nicht herum, damit das SubVI in der anderen großen Applikation ohne eigenes Front-Panel laufen kann.
Hallo zusammen, ich habe mich nun dazu entschieden, GUI und Funktion zu trennen, wie es ja auch am stilsichersten ist. Ich habe also viele kleine VIs die nur arbeiten und nix darstellen. Und dann habe ich dazu noch eine GUI die eben die klienen Funktionen beinhaltet.
Vielen Dank für eure Anregungen!
Torsten
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" (Konrad Zuse)