LabVIEWForum.de
Asynchroner Aufruf eines VIs klappt nicht in der EXE - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Asynchroner Aufruf eines VIs klappt nicht in der EXE (/Thread-Asynchroner-Aufruf-eines-VIs-klappt-nicht-in-der-EXE)



Asynchroner Aufruf eines VIs klappt nicht in der EXE - Msengxxl - 09.03.2021 09:39

Hallo zusammen,

ich habe folgendes Problem:

Ich habe einen asynchronen Aufruf eines VIs in meinem Hauptprogramm, dass u.a DaqMx und einige Express-VIs (Filter usw.) benutzt).
In der LV-Entwicklungsumgebung (LV 2017) funktioniert der Aufruf perfekt. Wenn das Ganze kompilliert wurde, schlägt der Aufruf immer fehl.
Ich bin mir ziemlich sicher, dass es daran liegt, dass bestimmte Sub-VIs nicht gefunden werden und es nicht richtig geladen werden kann.

Folgende Dinge habe ich schon versucht, ohne Erfolg:

-Die komplette vi.lib und instr.lib in das Programmverzeichnis zu kopieren
-Beim Compiler die alte LabView 8.X Struktur einzustellen
-Die Express-VIs in normale SubVis umzuwandeln
-Mass-Compile des asynchronen VIs

Das Problem ist auch, dass ich gar nicht weiß, an welchen SubVIs es liegen könnte.
Durch die Nutzung der Filterfunktion sind das haufenweise VIs die, geladen werden.
Gibt es eine Möglichkeit festzustellen, an welchem VI es liegt?

Wie gesagt, wenn ich es in LabView öffne, funktioniert ja alles.

Für eure Hilfe wäre ich dankbar.


RE: Asynchroner Aufruf eines VIs klappt nicht in der EXE - GerdW - 09.03.2021 10:14

Hallo Msengxxl,

Zitat:Wenn das Ganze kompilliert wurde, schlägt der Aufruf immer fehl.
Ich bin mir ziemlich sicher, dass es daran liegt, dass bestimmte Sub-VIs nicht gefunden werden und es nicht richtig geladen werden kann.
Welche Fehlermeldung bekommst du?
Wie erfolgt der Aufruf?
Verwendest du eine statische VI-Referenz?


RE: Asynchroner Aufruf eines VIs klappt nicht in der EXE - Msengxxl - 09.03.2021 10:31

Ich benutze das "VI-Referenz öffnen"-VI und gebe den Pfad des aufzurufenden VIs relativ (abhängig vom Anwedungsverzeichnis) weiter.

Folgender Fehler kommt:

Fehler 1003 bei Invoke Node:

Mögliche Ursachen:

LabVIEW: (Hex 0x3EB) The VI is not executable. This error may occur because the VI is either broken or contains a subVI that LabVIEW cannot locate. Select File>>Open to open the VI and verify that you can run it.VI Path: C:\LVsvnc\IR_MRD_Systemtest\IR_MRD Systemtest\builds\IR_MRD_SystemTest\MRD_Systemtest\asynchVIs\recordSpeedAsynch.vi



Gibt es vielleicht eine Möglichkeit den namespace des aufzurufenden VIs auf den Standard-namespace zu ändern?


RE: Asynchroner Aufruf eines VIs klappt nicht in der EXE - GerdW - 09.03.2021 10:59

Hallo Msengxxl,

ist es möglich, statt des Pfades eine statische VI-Referenz zu verwenden?
Damit stellst du sicher, dass das VI in das Executable inkludiert wird, inkl. aller seiner Dependencies…

Alternativ könntest du ein Duplikat deines VIs speichern (VIHierarchie speichern) und dabei veranlassen, dass alle Dependencies (inkl. vi.lib) mit zur Kopie gepackt werden…


RE: Asynchroner Aufruf eines VIs klappt nicht in der EXE - Msengxxl - 09.03.2021 16:09

Hallo,

danke für die Antwort. So ähnlich habe ich es jetzt auch gelöst: Ich habe das asynchrone VI mittels einer statischen Referenz ins Haupt-VI eingebunden.
Es wird dort zwar noch nicht aufgerufen, aber dann werden alle Dependencies in den Speicher geladen und ich muss mich nicht mehr drum kümmern.
Wenn ich dann später meinen asynchronen Aufruf starte, klappt alles wie es soll.