LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

VI Link

Hallo.

In einem lauffähigen VI wird beim Laden ein anderes VI geöffnet, welches nicht ( mehr ) für die Ausführung benötigt wird ( z.B. Suche abbrechen ). Wie kann man diese Verknüpfung beenden?

MfG Jan Schoner
0 Kudos
Message 1 of 14
(4,098 Views)
Hallo Jan,

wie wird das zweite VI geöffnet? Erfolgt dies über die Methode "Run VI" oder über "Call by Reference" bzw. SubVI? Im ersteren Fall ist es am einfachsten das zweite VI über einen Notifier zu benachrichtigen, dass es nicht mehr benötigt wird. Das VI kann dann sich selbst beenden. Im zweiten Fall braucht man zwei parallele While Schleifen. Die eine ruft das VI auf, die andere verrichtet die Arbeit. Wenn die Arbeit beendet ist, kann man über die VI Referenz das VI abbrechen, oder auch einen Notifier verwenden.

Waldemar
Waldemar

Using 7.1.1, 8.5.1, 8.6.1, 2009 on XP and RT
Don't forget to give Kudos to good answers and/or questions
0 Kudos
Message 2 of 14
(4,098 Views)
Wenn LabView gestartet wird und anschließend das gewünschte VI geladen wird, so wird außerdem ein VI geöffnet, welches bereits seit Ewigkeiten nicht mehr benötigt wird. Es hat keinen Einfluß auf das Programm. Wo die Verknüpfung mit dem Hauptprogramm liegen soll, ist mir derzeit schleierhaft. Nachdem ich das ungewünschte Objekt geschlossen habe ( Alt-F4 ), wird es auch nicht mehr im Baum dargestellt.

Wie kann man diesen ungewünschten Effekt beheben?

MfG Jan Schoner
0 Kudos
Message 3 of 14
(4,098 Views)
Es wäre vielleicht hilfreich das Hauptprogramm mal hier zu posten..falls es nicht zu riesig ist.
0 Kudos
Message 4 of 14
(4,098 Views)
Hallo Jan,

nennen wir das HauptVI VI_A und das ungewünschte VI VI_B. Ist VI_B ein VI an oberster Stelle in der Hierarchie oder ein SubVI? Muß VI_A erst gestartet werden, dass der Effekt auftritt?

Wenn VI_A erst gestartet werden muß wird VI_B dynamisch geladen. Hier hilft folgendes:
VI_A laden, das Suchen Fenster öffnen (CTRL-F) und nach Text suchen. Als Text den Namen des VIs angeben. Sofern der Name nicht aus einer Datei gelesen wird oder sonstwie programmatisch erstellt wird sollte das VI gefunden werden, das VI_B lädt. Alternativ hilft eine Suche nach der Funktion "Open VI Reference". Dies könnte jedoch viele Treffer ergeben, die dann alle zu kontrollieren sind.

Wenn mit dem Laden von VI_A, ohne dass es ausgeführt wird, VI_B geöffnet w
ird, muß VI_B ein SubVI sein. Dann sind auch alle Aufrufer im Baum sichtbar und damit ist klar wer VI_B lädt.

Waldemar
Waldemar

Using 7.1.1, 8.5.1, 8.6.1, 2009 on XP and RT
Don't forget to give Kudos to good answers and/or questions
0 Kudos
Message 5 of 14
(4,098 Views)
Hallo Waldemar.

Im Normalfall ist es so, wie du beschrieben hast ( Fall B ). Doch kann ich im Haupt-VI, von welchem das SubVI aus gestartet werden kann laut Hierarchie, keinen Link zum SubVI finden, weder durch Text- noch durch Objektsuche.
0 Kudos
Message 6 of 14
(4,098 Views)
Hallo Jan,

meines Wissens nach gibt es 3 Möglichkeiten ein VI zu laden.

1: Statisch gelinkt als SubVI

2: Über die Funktion "Open VI Reference" aus einem bereits geladenen VI.

3: Über die Funktionen "Open Application Reference" und "Open VI Reference" in einer fremdem LV Anwendung.

Im Fall 1 hätte das VI_B einen Caller, damit wäre das Problem gelöst ist aber nicht.

Im Fall 2 hätte das VI_B keinen Caller, der VI Name wird an irgendeine Instanz der Funktion "Open VI Reference" eines jetzt bereits geladenen VIs übergeben. Ausser dem Haupt-VI müssen auch alle bekannten dynamischen VIs geladen sein. Mit einem Breakpoint und einer Probe für jede Instanz sollte das VI gefunden werden, das VI_B lädt.

Im Fall3 ist das g
anze mit folgenden Szenario zu erreichen: Die geladene Anwendung A verbindet oder startet eine zweite Anwendung B, evtl. auf einem anderen Rechner. Die Anwendung B erkennt diese Verbindungsaufnahme, verbindet sich mittels "Open Application Reference" mit der Anwendung A und lädt dort VI_B. Dies läßt sich mit den Einstellungen in Tools >> Options >> VI Server: Exported VIs" verhindern. Vielleicht bringt Anwendung B dann eine Fehlermeldung.

Und wenn das alles nicht hilft, bin ich mit meinem Latein am Ende.

Anmerkung: Ich habe nur ein englisches LV und weiß daher die deutschen Übersetzungen nicht.

Waldemar
Waldemar

Using 7.1.1, 8.5.1, 8.6.1, 2009 on XP and RT
Don't forget to give Kudos to good answers and/or questions
0 Kudos
Message 7 of 14
(4,098 Views)
Hallo Waldemar.

Das Problem hat sich ein wenig verschoben. Das Öffnen des VI stellt nun kein Hinernis mehr dar. Dafür aber das verlinken eines nicht offensichtlich im Diagramm angegebenen SubVIs. Wie entfernt man diese Verknüpfung?
Quellcode anbei.
0 Kudos
Message 8 of 14
(4,098 Views)
Ich glaube an dieser Stelle bleibt nur den gesamten Code in ein neues VI zu kopieren, falls du das nicht schon versucht hast. Ich kann leider keinen Stelle finden an der ein Link zwischen den zwei Vi's sein könnte.

Sorry...
0 Kudos
Message 9 of 14
(3,795 Views)
Hallo Jan,

Ich kann das Archiv nicht öffnen, da Windows und Winzip. *.rar ist eher unter Linux üblich, korrekt?

Ansonsten kann ich nur der Empfehlung von Chris_de zustimmen.

Waldemar
Waldemar

Using 7.1.1, 8.5.1, 8.6.1, 2009 on XP and RT
Don't forget to give Kudos to good answers and/or questions
0 Kudos
Message 10 of 14
(4,098 Views)