LabVIEWForum.de - Fallunterscheidung zw. direktem und asynchronem Aufruf.

LabVIEWForum.de

Normale Version: Fallunterscheidung zw. direktem und asynchronem Aufruf.
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich habe ein VI das eigenständig in einer While-Schleife läuft. Über einen Stop Button kann die While-Schleife und somit das VI beendet werden.
Dieses VI möchte ich aber auch aus einem übergeordneten VI asynchron aufrufen und auch wieder beenden. In diesem Fall sollte dann aber der Stop Button unsichtbar sein, damit das VI nur von dem übergeordneten VI beendet werden kann.

Wie kann in einem VI festgestellt werden, ob es asynchron von einem übergeordneten VI oder direkt aufgerufen wurde?

Ich habe die Fallunterscheidung schon über die "Aufrufkette" versucht. Diese gibt mir aber nur die Kette von SubVis zurück. Vis über einem asynchronen Aufruf werden in der Kette nicht ausgegeben.

Viele Grüße
Stefan
Hallo Stefan,

herzlich willkommen im Forum!

Du kannst bei einem asynchronen Aufruf vor dem Ausführen des subVIs ja noch programmatisch Werte im subVI vorgeben. Wenn du also hier ein (boolsches) Control auf TRUE (statt Default=FALSE) setzt, kannst du prima die Aufrufsituation signalisieren…
(Letztendlich gibst du beim Aufrufen des subVIs einfach einen Parameter vor!)
Hallo Gerd,
vielen Dank für deine schnelle Antwort.
Deine Lösung funktioniert im Falle des asynchronen Aufrufs. Aber was passiert wenn danach das Vi wieder einzeln aufgerufen wird? Wenn das VI nicht neu geladen wird, steht der boolsche Wert weiter auf TRUE. Dies könnte man lösen indem der boolsche Wert beim beenden des Vis immer wieder auf FALSE zurückgestellt wird.
Ein VI-Eingang wird bei jedem Aufruf des VIs auf den Standard-Wert eingestellt, solange du keinen Draht mit dem Übergabewert verbindest.

Gruß, Jens
Hallo Stefan,

du musst das Control schon mit einem Defaultwert versehen, der dann den "normalen" Aufruf signalisiert...
Referenz-URLs