INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Hauptprogramm weiter ausführen bei SubVI-Aufruf



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!

08.03.2012, 16:50
Beitrag #11

Adiboing Offline
LV-Noob
*


Beiträge: 27
Registriert seit: Jun 2010

LabVIEW 2013
2010
EN


Deutschland
RE: Hauptprogramm weiter ausführen bei SubVI-Aufruf
Halloechen liebe Leut,

ich hab so ziemlich ein aehnliches problem aber fand bisher keine loesung durch eure posts... Sad

Folgendes Szenario:
Ich habe 2 Whileloops wie auf dem Bild unten zu erkennen. Hierbei ist oben eine Event-Structure. Und in der unteren Loop werden die Events mit Hilfe von Queues abgearbeitet. Und nun habe ich Events in denen ich subVIs calle die sogesehen eine Art Pop-Up darstellen und waehrend des Main VIs laufen soll. Jedoch wenn ich ein solches subVI mit dem Button-"Show cooler tracking" aufrufe dann steht die untere Loop bis ich das subVI (Pop-Up) wieder schliesse. Soll heissen der Indicator "Event Handling" bleibt zunaechst stehen. Was er nicht sollte!

Ich habs auch so versucht mit einer 3. Loop unter den ersten beiden. Jedoch wird diese komischerweisse komplett ignoriert...

Weiss jemand evtlle Einstellungen die ich beim subVI taetigen kann das dieses sogesehen in einem weiteren Thread paralell laeuft.

Hier das Bild
lv11_img
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
08.03.2012, 17:09
Beitrag #12

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Hauptprogramm weiter ausführen bei SubVI-Aufruf
Think Dataflow!
Eine Struktur (in diesem Fall die Case-Struktur in der unteren Loop) wird erst dann beendet, wenn alle VIs/Elemente, die darin enthalten sind, abgearbeitet sind.
Du rufst quasi einen Dialog auf. Der ist aber erst abgearbeitet, wenn du das Fenster wieder schließt.

Mögliche Lösung:
-Dynamischer Start des "Popup" per VI-Server-Aufruf.
-Auslagerung dieser Aufrufe in weitere parallele Loops.
-etc. etc.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.03.2012, 14:09
Beitrag #13

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Hauptprogramm weiter ausführen bei SubVI-Aufruf
Seitliche Arabeske zum Thema:
Habe neulich ein andere Methode gesehen, wie man SubVIs aufrufen kann und das Haupt-VI läuft weiter. Der Trick ist: Das SubVI hat gar keine Schleife, in der es dauernd läuft. Es wird von Haupt-VI alle paar ms wieder aufgerufen, so dass es so aussieht, als ob es parallel zum Haupt-VI läuft.
Habe mal ein quick&dirty Beispiel gemacht.


Angehängte Datei(en)
8.5 .vi  Main.vi (Größe: 17,26 KB / Downloads: 277)

8.5 .vi  Sub.vi (Größe: 8,64 KB / Downloads: 217)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.03.2012, 16:08
Beitrag #14

Adiboing Offline
LV-Noob
*


Beiträge: 27
Registriert seit: Jun 2010

LabVIEW 2013
2010
EN


Deutschland
RE: Hauptprogramm weiter ausführen bei SubVI-Aufruf
Ich hab es dank eines Kumpels loesen koennen, und dabei ist die loesung ziemlich easy gewesen Wink

Anhand der Bilder versteht man sicher mehr.

Im Grunde geht alles mit Referenz, und im ersten Bild sieht man den Aufruf. Die Einstellung des subVIs die ihr beachten solltet waere bei "VI Propertys" "Window Appeareance" und dann oben rechts Floating anstatt Modal. Erst dann kann man auch wieder im Hauptfenster rumfingern.
Sowie bei "Execution" rechts "same as caller" einstellen.

Dann halt den Code wie folgt in einen Case.
   

Wenn man im hauptfenster das programm beendet also alles stoppt soll das subVi natuerlich auch stoppen. Daher sieht man hier im naechsten Bild wie das subVI per Referenz gestoppt wird. Hierbei wichtig zu beachten. Wenn ihr den Befehl yum Stoppen\Beenden eures VIs gebt dann sendet auch eine Art Befehl "Stop Show Camera" wie man in folgendem Bild sieht.
   

Dann muss noch im subVI selbst am Schluss eine Referenz yu sich selbst gesetzt werden die dann sagt schliesse das Front-Panel.
   


Soo dadurch lauft das subvi paralell zum Hauptvi und kann sogar Werte zeitgleich rueber senden. Dazu halt eine Invoke Node mit "Control Value" und dann halt "Get" oder "Set" diese verlangen dann halt die Values als Variant aber das klappt ja easy Wink

Wenn jemand darin einen Fehler findet oder denkt es koennte schief gehen. Bitte melden Big Grin

peace Adi
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.03.2012, 19:50
Beitrag #15

phylin Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 60
Registriert seit: Nov 2011

8.5
2011
DE


Deutschland
RE: Hauptprogramm weiter ausführen bei SubVI-Aufruf
Den popup aufruf mach ich auch so. Allerdings beendest du das popup ziemlich rabiat mitten in der Ausführung. Ich mach das beenden so:
popup enthält whileschleife mit eventstruktur mit timeout case. Im timeout case wird eine globale variable abgefragt. wenn main-vi geschlossen wird, wird diese globale auf T gesetzt und damit die whileschleife im popup auch beendet. siehe anhang.

Man könnte es auch mit einem benutzerdefiniertem event machen, allerdings hatte ich bisher nicht die Muße, dass auszuprobieren.

Du könntest übrigens dein Element in Queue einfügen etwas platzsparender machen, in dem du die Elemente in ein array packst und sie dann per For-schleife einfügst. siehe anhang.


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.03.2012, 09:31
Beitrag #16

Adiboing Offline
LV-Noob
*


Beiträge: 27
Registriert seit: Jun 2010

LabVIEW 2013
2010
EN


Deutschland
RE: Hauptprogramm weiter ausführen bei SubVI-Aufruf
Mag sein das es etwas rabiat rueberkommt, aber mit Globalen Variablen hantier ich nur ungern. Schon alleine mit Localen Vars sollte sparsam umgegangen werden.

Aber die Idee mit dem Array fuer die Queues werde ich beherzigen keine schlechte Idee, haette man auch selbst drauf kommen koennen Big Grin

peace Adi
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
14.03.2012, 17:21
Beitrag #17

phylin Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 60
Registriert seit: Nov 2011

8.5
2011
DE


Deutschland
RE: Hauptprogramm weiter ausführen bei SubVI-Aufruf
globale und lokale Variablen sollte man nicht allgemein verteufeln. Da finde ich deine Methode deutlich schlimmer als der harmlose einsatz dieser Globalen Tongue. Aber das ist auch wieder situationsabhängig. Wenn dein SubVI z.B. nur eine stumpfe anzeige ist, kann mans, denke ich, auch problemlos so beenden wie bei dir.

Die Idee mit dem array ist auch nicht von mir. Das ganze konzept hab ich hierher:
http://expressionflow.com/2007/10/01/lab...hitecture/
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Unterprogramm im Hauptprogramm heshamali88 17 11.994 25.07.2016 15:11
Letzter Beitrag: heshamali88
  Programm weiter strukturieren gfzk 8 5.301 28.07.2015 15:22
Letzter Beitrag: GerdW
  SubVI parallel ausführen mit Rückgabewert skywalker 9 6.484 20.03.2015 14:21
Letzter Beitrag: GerdW
  Aufruf verschiedener SubVI´s ElektroAnne 3 5.558 01.10.2014 13:58
Letzter Beitrag: GerdW
Question weiter bei konstantem Wert olmethn 9 5.680 10.10.2012 15:52
Letzter Beitrag: BNT
  Aufruf einer DLL parallel zu subVI tiwo 2 4.201 16.08.2012 15:22
Letzter Beitrag: tiwo

Gehe zu: