LabVIEWForum.de - Wechsel SubVI/MainVI, FP öffnen/schließen; LV2010

LabVIEWForum.de

Normale Version: Wechsel SubVI/MainVI, FP öffnen/schließen; LV2010
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo allesamt,

ich bin ein ziemlicher Neuling, was LabView angeht. (1 Monat Einlernphase bis jetzt, Version Labview2010 Service Pack 1)
Ich mache mich daran, die Steuerung für einen Generator zu programmieren.

So, im Hauptmenü möchte ich zwischen den verschiedenen Menüs wechseln können, hierfür habe ich zwei SubVI's geschrieben. Eines, um ein entsprechendes Menü (SubVI mit FP) zu öffnen (und dabei gegebenenfalls das FP des Callers, in diesem Fall dem Hauptmenü-VI, zu schließen) und ein anderes, um das FP des SubVI wieder zu schließen, und das des Hauptmenüs zu öffnen.

Die Bennenung der beiden ist etwas doof, aber naja. In der Übersicht könnt ihr die SubVI's anzeigen lassen und seht über einen PropertyNode den State des VI's und des FP des VI's.

So, was mich nun wundert, ist, dass sobald ich auf "Einstellungsmenü" klicke, das MainVI in den Idle Zustand geht, obwohl es weiterlaufen sollte (Running). Und wenn ich im Einstellungsmenü auf "Hauptmenü" klicke öffnet sich zwar das MainVI FP, aber der Zustand bleibt auf Idle. Sad Die SubVI's "Open tralala" und "Hauptmenü" funktionieren beide über einen Invoke Node mit den Methoden Open FP und Close FP, so wie Run VI und Abort VI. Run VI mag nicht funktionieren. Sad

In der früheren Version hatte ich es statt mit Invoke Nodes mit Property Nodes und dort mit der FP Window Open Funktion gelöst bzw. um es sichtbar und unsichtbar zu machen, habe ich die Transparenz auf 0 oder auf 100% gestellt. Das hat funkioniert, nur dachte ich, dass man das eleganter lösen kann.


OpenSubVI_while_MainVI_continues
Hauptmenü_Button

Ihr könnt zwischen Hauptmenü und Einstellungsmenü hin und herwechseln.

[attachment=54237][attachment=54238][attachment=54239][attachment=54240][attachment=54241]
Nachtrag:

Die Globalen Variablen habe ich vergessen, sonst laufen die VI's wohl nicht. Außerdem die ursprüngliche Version, die zwar funktioniert, aber etwas stümperhaft umgesetzt war.
Hallo m.,

statt das FP jedesmal "hart" zu schließen oder zu öffnen könntest du auch die Property FP.Status verwenden, um das FP auf "hidden", "closed", "minimized" zu setzen…

- Du solltest ab und zu mal Ctrl-U benutzen.
- Wozu gestapelte (!) Sequenzen, wenn DATAFLOW alles regelt?
- Ich persönlich finde es unschön, wenn sich ständig Fenster schließen und dann wieder öffnen. Wenn das MainVI nicht bedienbar sein soll, während ein subVI offen ist, kannst du das subVI auf "Modal" (in seinen VI-Eigenschaften) setzen!
- Dein "Einstellungsmenü" empfinde ich persönlich als Strafe für den User, aber das mag ja durch ein Lastenheft gerechtfertigt sein… Big Grin
Mh, wenn ich nur den FP-Status verändere, läuft das VI an sich aber ja noch weiter. Wenn ich das VI die meiste Zeit gar nicht brauche, ist ganz schließen, doch sinnvoller oder?

Aber das über den Property Node und FP Status zu regeln, ist gut. Smile

Mh, die Sequenzen hab ich da eingesetzt, weil ich dachte, der Invoke Node für Run VI wird übergangen, weil das VI sich selbst erst beendet, bevor es den Invoke Node aufruft. Die beiden Referenzen (die des CallerVI und die des aufzurufenden VI's) werden ja parallel aufgerufen und beide VI's über Property- und Invoke Nodes bearbeitet.

Eigenschaft Modal war mir neu, gute Idee. Smile

Einstellungsmenü ist doof, weil man die Zahlen nicht direkt in die Fenster reinschreiben kann sondern ins "Neuer Wert" Fenster reinschreibt? Oder was kann man da noch verbessern?

Zum Zahlen direkt in die Parameteranzeige eintragen:
Die Indicator alle zu Controls ändern und diese die globale Variable beschreiben lassen?
Außerhalb der Whileschleife zum Initialisieren, beschreibe ich die Controls (über lokale Variablen) mit den Werten, die ich unter Globale_Parameter_Default gespeichert habe.
Das VI nie schließen, höchstens das FP dazu. (Sonst landen immer wieder die Defaultwerte drinnen.)

So... bin am sehr radikal umwurschteln. Statt zwei verschiedene VI's (Open_SubVI_while_Main_continues und Hauptmenü_Button) möchte ich ein VI, dass ich statisch aufrufen kann, wann immer ich ein anderes VI parallel starte.

Gibt bald eine Aktualisierung. Vielen Dank schonmal für die Hilfe!
Update:

Übersicht ist optional, da kann man sich aber den Execution State und den FP State anzeigen lassen von beiden VI's (Test1 und Test2).

Die beiden Test-VI's bestehen nur aus einem OK-Button und zwei Einstellungen, was mit dem FP des Callers und des aufzurufenden VIs passiert.

So, jetzt zum wichtigen VI ("Aufruf_VI")
Ich lass jetzt das FP über FP-State in Property Nodes einstellen.
Hab auch die Option gelassen, dass man auswählen kann, ob das aufzurufende VI ein modales FP hat. Ich glaube das funktioniert. :3 Muss das jetzt noch in den Rest einarbeiten.

PS: Strg+U muss ich mir mal merken. Vorhin das erste mal ausprobiert. Wink

Tudelu.
Hallo allesamt,

Edit: Hat sich geklärt.

Damit ein SubVI im Hintergrund läuft, muss auch das FP des SubVI geöffnet sein. Möchte ich dieses nicht sehen, muss es auf "Hidden" gestellt sein und darf nicht auf "Closed" gestellt sein, sonst beendet das SubVI direkt.
Referenz-URLs