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!
04.07.2006, 07:13 (Dieser Beitrag wurde zuletzt bearbeitet: 04.07.2006 07:27 von xtro.)
Ich habe folgendes Problem und hoffe jemand wäre so nett mir zu helfen.
Ich habe ein VI geschrieben welches ich als .dll im Aplikationbuilder erzeugt habe.
Jetzt will ich diese .dll über ein "Knoten zum Aufruf externer Bibliotheken" aufrufen.
Doch jetzt kommt folgendes Problem die .dll enthält Cluster also Strukturen unter C doch finde ich diese nicht nur Strings,numerisch,active X,Signalverlauf,Array aber leider kein aufruf von Strukturen.
Beim Application Builder stand folgendes
Void void Alarm(TD1*errorout,TD1*errorin,*unsigned char RID,unsigned char DeviceNode)
Aber finde nirgends TD1 beim "Knoten zum Aufruf externer Bibliotheken"
Und wie ruft man in dem Selben Eine Visa Resource auf
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
Knoten zum Aufruf externer Bibliotheken
Hallo,
ich verstehe nicht ganz, wieso Du aus einem VI eine .dll machst, nur um diese .dll, dann wieder umständlich in einem VI aufzurufen.
Reicht Dir da nicht ein SubVI?
Gruß Markus
' schrieb:Guten morgen
Ich habe folgendes Problem und hoffe jemand wäre so nett mir zu helfen.
Ich habe ein VI geschrieben welches ich als .dll im Aplikationbuilder erzeugt habe.
Jetzt will ich diese .dll über ein "Knoten zum Aufruf externer Bibliotheken" aufrufen.
Doch jetzt kommt folgendes Problem die .dll enthält Cluster also Strukturen unter C doch finde ich diese nicht nur Strings,numerisch,active X,Signalverlauf,Array aber leider kein aufruf von Strukturen.
Beim Application Builder stand folgendes
Void void Alarm(TD1*errorout,TD1*errorin,*unsigned char RID,unsigned char DeviceNode)
Aber finde nirgends TD1 beim "Knoten zum Aufruf externer Bibliotheken"
Und wie ruft man in dem Selben Eine Visa Resource auf
Vielen Dank im voraus
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
12.06.2007, 15:28 (Dieser Beitrag wurde zuletzt bearbeitet: 12.06.2007 15:29 von rolfk.)
Ich habe folgendes Problem und hoffe jemand wäre so nett mir zu helfen.
Ich habe ein VI geschrieben welches ich als .dll im Aplikationbuilder erzeugt habe.
Jetzt will ich diese .dll über ein "Knoten zum Aufruf externer Bibliotheken" aufrufen.
Doch jetzt kommt folgendes Problem die .dll enthält Cluster also Strukturen unter C doch finde ich diese nicht nur Strings,numerisch,active X,Signalverlauf,Array aber leider kein aufruf von Strukturen.
Beim Application Builder stand folgendes
Void void Alarm(TD1*errorout,TD1*errorin,*unsigned char RID,unsigned char DeviceNode)
Aber finde nirgends TD1 beim "Knoten zum Aufruf externer Bibliotheken"
Und wie ruft man in dem Selben Eine Visa Resource auf
Vielen Dank im voraus
Was Du tun willst geht zwar prinzipiel, aber der Nutzen ist wie schon eher erwähnt fragwürdig.
Verwende in der Konfiguration zum DLL Aufrufknoten den Adapt to Type (oder eine entsprechende deutsche Übersetzung wenn Du ein deutsches LabVIEW verwendest) für diesen Parameter.
Dann musst Du natürlich auch sicherstellen, das die verwendete Clusterdefinition sowohl im DLL-VI wie im Aufruf-VI exakt gleich ist, sonst ziemlich sicher -> Crash, aber garantiert Unsinn.
Und da diese DLL dann sehr spezifisch LabVIEW Datentypen gebraucht ist eine Verwendung von einer anderen Umgebung heraus meist mühsam bis sinnlos. Also warum dann die Mühe überhaupt?
' schrieb:Und da diese DLL dann sehr spezifisch LabVIEW Datentypen gebraucht ist eine Verwendung von einer anderen Umgebung heraus meist mühsam bis sinnlos. Also warum dann die Mühe überhaupt?
Rolf Kalbermatter
Ich hätte eine Anmerkung zu Deiner letzten Aussage:
Ich könnte mir vorstellen eine DLL aus LV-Code zuerstellen, um meine Anwendung zu modularisieren: d.h. wenn in einer Funktion, die
in der DLL vorhanden ist, ein Fehler korrigiert wird, dass man dann nicht die Anwendung komplett neu erstellt, sondern nur die DLL austauscht. Oder gibt es da bessere Möglichkeiten?
28.09.2007, 06:32 (Dieser Beitrag wurde zuletzt bearbeitet: 28.09.2007 06:35 von rolfk.)
' schrieb:Ich hätte eine Anmerkung zu Deiner letzten Aussage:
Ich könnte mir vorstellen eine DLL aus LV-Code zuerstellen, um meine Anwendung zu modularisieren: d.h. wenn in einer Funktion, die
in der DLL vorhanden ist, ein Fehler korrigiert wird, dass man dann nicht die Anwendung komplett neu erstellt, sondern nur die DLL austauscht. Oder gibt es da bessere Möglichkeiten?
Dasselbe ist prinzipiel mit externen VIs zu erreichen, die Du via VI Server dynamisch (Call by Reference) aufrufst. Da gibt es zwar ein paar nicht so schöne Probleme beim Gebrauch von (strict) typedef Controls die sowohl in der externen Componenete vorkommen als auch in der aufrufenden Applikation selbst wenn sie denselben Namen benützen. Das Problem hast Du aber bei einer LabVIEW DLL innerhalb einer LabVIEW Applikation ebenso, also das bringt keinen wirklichen Vorteil.
Ansonsten ist der Weg über ein DLL Interface eigentlich nur:
1) Langsamer (der extra DLL Interface Overhead ist zwar nicht erschreckend bei Gebrauch von LabVIEW Datentypen aber trotzdem)
2) Komplizierter
3) Keine Datentypencompatibilitätscheck zur Laufzeit, also wenn Du einen String an einen Parameter gibst der ein Array oder noch etwas anderes erwartet -> Crash
4) Umständlicher dann ein VI oder eine VI Library.