(08.12.2015 16:04 )Smarty schrieb: Einen freundlichen Gruß aus Bayern,
ich habe ein riesen Problem. da ich nur ein Anfänger bin, kann ich leider eine Frage nicht beantworten, ob COM Objekte ohne ActiveX und mit Firmenspezifischen Datentypen in LabView eingebunden werden können?
Ich lese immer nur das mit ActiveX schon funktioniert. Aber das ist ohne ActiveX.
Und auch habe ich schon im Forum gefunden, das Spezielle Firmenspezifische Datentypen evtl. nicht unterstützt werden aber ich weiss nicht wie das mit der neuen version von LV ist??
Ein Beispiel und die Umsetzung in C# ist angehängt wer sich ein besseres Bild machen will. Ich bin echt am verzweifeln ich finde keine Aussage und hoffe ihr könnt mir helfen.
Grüße
Jens hat nicht ganz recht hier.
Es gibt "nur" zwei Möglichkeiten für Dich.
1) Aus dem COM Server doch noch einen vollwertigen ActiveX Server zu machen.
2) In C(++) eine Wrapper DLL schreiben die das COM interface nach einem Standard C Functionsinterface umsetzt.
COM ist die Technologie die bei ActiveX zu Grunde liegt. Aber ActiveX definiert und verlangt weitere Teile wie eine Typelibrary die meist aus der IDL Beschreibung generiert wird, die das COM Interface für andere Applikationen genau beschreibt. Aus dieser Typelibrary generiert LabVIEW die Property- und Methodnodes um das ActiveX Interface korrekt anzusprechen.
Was betrifft Custom Datatentypen das hängt ein wenig ab was für Datentypen. Wenn die Typelibrary korrekt erzeugt wird, sollte sie alle Informationen enthalten um in LabVIEW auch die Verwendung von Enums und Structs zu ermöglichen.
Im Falle einer Standard C Wrapper Library kümmerst Du Dich eh selber um die korrekten Datentypen. Dabei hat sich in der Vergangeheit bewährt erst die VIs mit der Call Library Node zu generieren mit den Datentypen die man denkt nötig zu haben und dann mit Rechtsklick auf de Call Library Node "Generate C Code" zu wählen, so dass man ein C Funktionstemplate bekommt, das mit den gewählten Datentypen überinstimmt. Zumindest zu Beginn hilft das sehr um keine Fehler bei der Konfiguration der korrekten Call Library Node Datentypen zu machen.
Grundsätzlich würde ich aber bei einer Inhouse COM Komponente wohl doch wählen um eine ActiveX Library daraus zu machen. Das dürfte der schnellere und schmerzlosere Weg sein. Bei COM wo ich den Source Code nicht verfügbar habe, würde ich zum Wrapper greifen. Das ist aber ganz sicher Advanced C Programmierung.
Aber bist Du Dir wirklich sicher dass die von Dir verwendete Komponente nur ein nacktes COM Interface unterstützt? Zumindest eine Typelibrary scheint sie ja schon zu haben!!!