LabVIEWForum.de
Sub-VI über globale Variable schließen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Sub-VI über globale Variable schließen (/Thread-Sub-VI-ueber-globale-Variable-schliessen)



Sub-VI über globale Variable schließen - smozart - 05.12.2011 12:32

Hallo zusammen,
ich habe ein kleines Problem. Undzwar befindet sich in meinem VI ein Sub-VI, das über die serielle Schnittstelle in einer while-Schleife Daten ließt, so lange bis ein bestimmtes Zeichen kommt. Nun möchte ich die Möglichkeit haben diesen Vorgang aus dem Haupt-VI zu beenden. Ich hab gelesen, dass das über eine globale Variable möglich ist, nur klappt dies bei mir nicht so recht.

Meine Idee war, dass der Stopp-Button in meinem Haupt-VI die globale Variable (ist bei mir auch ein Stopp-Button) anspricht und diese globale Variable dann in der While-Schleife des Sub-VI die Abbruchbedingung ist. Das Problem ist nun, dass wenn das Sub-VI läuft, ich den Stopp-Button in meinem Haupt-VI nicht bedienen kann. Woran liegt das? Was mache ich falsch?


RE: Sub-VI über globale Variable schließen - GerdW - 05.12.2011 12:46

Hallo smozart,

Zitat:Woran liegt das?
Du lässt beide wohl nicht parallel laufen...

Zitat:Was mache ich falsch?
Du zeigst uns weder ein Bild noch ein VI, so können wir nur raten...


RE: Sub-VI über globale Variable schließen - smozart - 05.12.2011 13:01

Ich kann leider kein Bild posten, aber grob den Aufbau meines Programms beschreiben. Zunächst habe ich eine Sequenz, in dessen ersten Rahmen ich meine Variablen initialisiere. Im nächsten Rahmen wird dann das eigentliche Programm ausgeführt. Hier habe ich eine Eventstruktur umgeben von einer While-Schleife. Mit dem Betätigen des Stopp-Buttons wird das "Stopp-Event" ausgelöst und die While-Schleife bzw. das komplette Programm beendet.
Über einen weiteren Button wird ein Event ausgelöst, welches besagtes Sub-VI startet. Nun, wie schaff ich es, dass ich den Stopp-Button überhaupt drücken kann, solange das Sub-VI läuft?


RE: Sub-VI über globale Variable schließen - GerdW - 05.12.2011 13:09

Hallo smozart,

Zitat:wie schaff ich es, dass ich den Stopp-Button überhaupt drücken kann, solange das Sub-VI läuft?
1. Eventstruktur parallel abarbeiten
2. Eventabarbeitung auf "nicht blockierend" umstellen
3. subVI nicht direkt im Event aufrufen (s. 1.)
Was die Glas1 so hergibt bei dieser Beschreibung...


RE: Sub-VI über globale Variable schließen - LouiJo - 05.12.2011 18:00

Hallo smozart,

ich hatte vor kurzem ein ähnliches Problem, habe das dann aber nicht über globale Variablen gelöst, sondern über Notifier bzw. mit Hilfe des Property Nodes. Die Lösungen dazu kannst du unter folgendem Link finden:

http://www.labviewforum.de/Thread-Sub-VI-ueber-Button-im-Hauptpanel-abbrechen

Mit globalen Variablen sollte das aber auch funktionieren, allerdings brauche auch ich mehr Informationen bevor ich dir weiterhelfen kann.

LG
LuiJo


RE: Sub-VI über globale Variable schließen - Lucki - 06.12.2011 10:53

Es nützt Dir nicht viel, wenn das Sub-VI nicht direkt im Event-Case aufgerufen wird. Solange das Sub-VI nicht beendet ist, blockiert es im Haupt-VI immer die Schleife, in der es aufgerufen wurde. Du kannst also im HaupVI trotzdem nichts bedienen.
Um aus diesem Dilemma herauszukommen, sehe ich nur diese beiden Möglichkeiten:
1. Parallele Ausführung des SUB-Vis.
Es muß dazu auf dem BD frei im Raum, neben dem Hauptprogramm-Code, platziert sein. Kommunikation mit dem Hauptprogramm z.B. über Melder.
Wenn es nicht erwünscht ist, das das SubVI gleich von Anfang an aktiv ist, kann man es so machen, das es im SubVI einen Zustand "Idle" gibt. Das SubVI wird dann, wenn es gebraucht wird, nicht aufgerufen - das ist es schon - sondern von Zustand "Idle" in den aktiven Zustand gebracht - Steuerung z.B. über Melder.
2. Aufruf des SubVI über Methodenknoten.
Bei diesem Aufruf gibt es die Möglichkeit, die ansonsten defaultmäßige Eigenschaft "Warten bis beendet" auf false zu stellen. Das SubVI blockiert dann nicht. Darüber hinaus hat man über Methodenknoten eine Steuerungsmöglichkeit auf alle Bedienelemente. Diese müssen nicht mal mit dem SubVI-Ikon verdrahtet sein, ja sogar nicht mal auf dem FP sichtbar sein. Z.B ist es dann ganz einfach, das SubVI mit seinem eigenen Stop-Knopf vom HauptVI aus zu beenden, ohne dass dafür z.B ein Melder benötigt wird. Beispiel für einen solchen Aufruf:
[attachment=37533]