30.11.2009, 17:25
Beitrag #1
|
loki77
LVF-Grünschnabel
Beiträge: 14
Registriert seit: Oct 2009
7.1.1
-
de
81677
Deutschland
|
Mehrere Instanzen eines VIs
Ich bin leider schon wieder auf ein Problem gestoßen für das ich keine Lösung finde. Es geht um folgendes:
Ich habe ein Puffer-VI, welches einzelne XY-Wertepaare zwischenspeichert und so ein 1D-Array von Wertepaaren ausgibt, welche per XY-Graph dargestellt werden. Wenn n Kanäle dargestellt werden sollen, so wird dieses Puffer-VI als ablaufinvariant gekennzeichnet und eben n-mal parallel ausgeführt und die n Wertepaararrays an den Graphen übergeben. So weit klappts noch.
Jetzt ist es so, dass n (durch Benutzereinwirkung) variabel sein soll, d.h. der Benutzer konfiguriert sich mal drei, mal zehn Kanäle zusammen usw. Jetzt finde ich nur irgendwie keine Möglichkeit, dieses Puffer-VI n-mal aufzurufen ohne den Quellcode ändern zu müßen. Ich habs mit einer FOR-Schleife versucht, jedoch wird dabei mit jedem Durchgang dieselbe Instanz aufgerufen.
Wie könnte man da rangehen?
|
|
|
30.11.2009, 18:30
Beitrag #2
|
|
|
30.11.2009, 19:16
(Dieser Beitrag wurde zuletzt bearbeitet: 30.11.2009 19:16 von Lucki.)
Beitrag #3
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
Mehrere Instanzen eines VIs
' schrieb:Ich habs mit einer FOR-Schleife versucht, jedoch wird dabei mit jedem Durchgang dieselbe Instanz aufgerufen.
Wie könnte man da rangehen?
Ja, eine neue Instanz wird in der for-Schleife nur dann aufgerufen, wenn bei jedem Durchgang ein neues Ikon aufgerufen wird. Und das ist ganz einfach zu erreichen. In die For-Schleife machst Du einen Case rein. Den Selektor schließt Du in den Index i der For-Schleife an. Alle Cases sind identisch und enthalten das Ikon um das es hier geht. Die Anzahl der identischen Cases muß matürlich der höchsten vorkommenden Kanalzahl entsprechen.
Gruß Ludwig
|
|
|
30.11.2009, 19:45
Beitrag #4
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
Mehrere Instanzen eines VIs
Das geht schon, per VI-Server-Aufruf.
Hier ein Link:
http://decibel.ni.com/content/docs/DOC-8250
oder hier:
http://decibel.ni.com/content/docs/DOC-5598
Aber Achtung, das ist natürlich nicht ohne..., mit diesem reentrant VI kannst du nicht mehr "per Datenleitung" kommunizieren, nur über FGVs, globale Variablen, Queues oder Melder. Und irgendwie solltest du so ein VI auch beenden können, nicht dass es ewig im Speicher bleibt.
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.
|
|
|
02.12.2009, 13:15
Beitrag #5
|
loki77
LVF-Grünschnabel
Beiträge: 14
Registriert seit: Oct 2009
7.1.1
-
de
81677
Deutschland
|
Mehrere Instanzen eines VIs
Sehr gut, jetzt klappts so wie ich mir das vorstelle. Vielen Dank!
Kann man jetzt denn auch noch die Frontpanels der einzelnen Instanzen öffnen/schließen? Wie kann ich mich in einem Methodenknoten auf eine bestimmte Instanz beziehen?
|
|
|
02.12.2009, 18:45
Beitrag #6
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
Mehrere Instanzen eines VIs
' schrieb:Sehr gut, jetzt klappts so wie ich mir das vorstelle. Vielen Dank!
Kann man jetzt denn auch noch die Frontpanels der einzelnen Instanzen öffnen/schließen?
Ja klar. Am einfachsten, du merkst dir in einem Array die Referenzen zu allen geöffneten VIs. Oder du musst mit (fast) derselben Methode, wie beim dynamischen Starten dir einen neue VI-Referenz erzeugen. Beim Namen des VI musst du dann ein :1, :2, :3, usw anfügen.
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.
|
|
|
| |