LabVIEWForum.de
SubVI parallel ablaufen lassen, aufrufendes VI weiter ausführen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: SubVI parallel ablaufen lassen, aufrufendes VI weiter ausführen (/Thread-SubVI-parallel-ablaufen-lassen-aufrufendes-VI-weiter-ausfuehren)



SubVI parallel ablaufen lassen, aufrufendes VI weiter ausführen - astraios - 31.08.2006 11:11

Hallo,

ich hab ein Problem, das bestimmt relativ leicht zu lösen ist. Dummerweise weiß ich nicht wie und hab in der Such auch nix gefunden:

In meiner Applikation werden in einer Whileschleife Daten gesammelt. Das geht ne ganze Weile und zum Schluss, wenn die Schleife beendet ist, werden die Daten aufbereitet und nach Excel ausgegeben.

Jetzt würd ich gern die Funktion einbauen, dass noch während der Datenaufzeichnung die bisher gesammelten Daten ausgewertet und nach Excel geschickt werden.

Zum Aufbereiten und nach Excel schicken hab ich ein SubVI - dessen Ausführung dauert ne Weile, weil in der Excel Mappe auch noch einige Formatierungen usw. vorgenommen werden und deshalb wird auch die Datenerfassung solang unterbrochen.

Jetzt wär's optimal, wenn mein Haupt VI einfach das SubVI mit den entsprechenden Daten starten könnte und danach weiterliefe und das SubVI quasi in einem eigenen Thread ausgeführt würde (es liefert ja auch keine Daten zurück, auf die man warten müsste).

Wie kann ich das anstellen? Bei meiner Suche bin ich schon auf Begriffe wie "VI-Server" gestoßen - bin aber nicht wirklich zum Ziel gekommen.


Vielen Dank schon mal im Voraus für die Hilfe! Smile


p.S.: So schauts ungefähr aus:


SubVI parallel ablaufen lassen, aufrufendes VI weiter ausführen - DoubleU - 31.08.2006 11:24

Hi,

du könntest dein Excel VI in eine Seperate while schleife packen, so dass sie parallel zum main VI laufen kann. Diese while schleife stösst du dann mit einem synchronisationsmechanismus in der haupt schleife zum laufen an und übergibst die aktuellen Daten (mit z.b. Notifier oder Queue).

Schau dir am besten mal die VI tamplates an. Simple Queue handler oder so ähnlich, ist eigentlich nicht kompliziert...


Edit:
Eine 2.möglichkeit die mir so einfällt wäre noch das VI nicht als SubVI einzubinden, sondern es über eine Invoke Node aufzurufen (Refernz vom VI erzeugen und Invoke Node). Dann musst du die Control Values über Set Controls setzen, und danach RunVI setzen -> hier gibt es ein T/F wait until done, setzt du das auf false, läuft die Main routine weiter. Du musst dann aber den fall abfangen, dass du es nicht nochmal ausführst während es schon läuft...


Gruss
Uli


SubVI parallel ablaufen lassen, aufrufendes VI weiter ausführen - astraios - 31.08.2006 11:49

Super! Danke für den Tipp und die schnelle Antwort!

Ich habs mit eben so einer zweiten Schleife und den VIs "Meldung senden" und "Auf Meldung warten" gemacht. Ging ja tatsächlich sehr einfach.

Danke nochmal Big Grin


SubVI parallel ablaufen lassen, aufrufendes VI weiter ausführen - Achim - 31.08.2006 11:58

Hi,

wenn du doch mal was über VI Server brauchst, hier ein kleines Beispiel:

http://www.LabVIEWforum.de/index.p...ost&p=12335


Gruss
Achim