DLL in LV einbinden. Geht es nur mit anderer Wrapper-DLL

ActiveX, .NET, DLL
Ответить
Аватара пользователя
rshp
interested
interested
Сообщения: 8
Зарегистрирован: 21 июн 2010, 23:07
Версия LabVIEW: 2009
Контактная информация:

DLL in LV einbinden. Geht es nur mit anderer Wrapper-DLL

Сообщение rshp »

Hallo zusammen ,

seit ein Paar Tagen beschäftige ich mich mit folgendem Problem... :suicide:

Ich erhalte eine fertige DLL (in C geschrieben, C-Code unbekannt, aus Headerdateien Funktionen mit den Parametern sichtbar).
Diese DLL soll ich in mein LV-Programm einbinden. Nachdem ich die Foren durchgesucht habe, weiß ich nun, dass es in LabVIEW über den "Knoten zum Aufruf externer Bibliotheken" machen kan.
In dem Tutorial LVF-Tutorial:[ http://www.labviewforum.de/DLL-einbindung-t5504.html ] habe ich gefunden, dass eine Funktion, die einen Pointer auf eine Struktur, die aus Unterschiedlichen Komplexen datentypen besteht, nur mit großem Aufwand in LabVIEW eingebunden werden kann. Leider muss ich mit zwei solchen Strukturen zu tun haben. :bae:

Header Datei:

/////////////////////////////////////////////////////////////////////////////
// Headerdatei für Datenstrukturen und Funktions-Prototypen
// /////////////////////////////////////////////////////////////////////////////

#include <time.h>
#define NAN 9.9E34

typedef struct
{
double SpurVL, SpurVR, SpurHL, SpurHR, SpurVG, SpurHG, SpurVMaxDiff, SpurHMaxDiff;

double SturzVL, SturzVR, SturzHL, SturzHR, SturzVMaxDiff, SturzHMaxDiff;

double SpurDiff20VL, SpurDiff20VR, SpurDiff10VL, SpurDiff10VR, SpurDiffMaxDiffV;

double LenkWMaxLinksVL, LenkWMaxLinksVR, LenkWMaxRechtsVL, LenkWMaxRechtsVR;

double EingWinkel20VL, EingWinkel20VR, EingWinkel10VL, EingWinkel10VR;

double RadversatzV, RadversatzH;

double FahrachswinkelH;

double LenkwinkelMaxVL, LenkwinkelMaxVR;

double Nachlauf20VL, Nachlauf20VR, Nachlauf10VL, Nachlauf10VR, NachlaufMaxDiff;

double Spreizung20VL, Spreizung20VR, Spreizung10VL, Spreizung10VR, SpreizungMaxDiff;

double Achsversatz;

double SeitenversatzL, SeitenversatzR;

double Radstandsdiff;

double Spurweitendiff;

char ErrorMessage[2048];

char ProtocolFiles[256];

struct tm FileTime;

}
ML5DataStatic;

typedef struct
{
double SpurVL, SpurVR, SpurHL, SpurHR, SpurVG, SpurHG;

double geoAchseH;

double SturzVL, SturzVR, SturzHL, SturzHR;

double RadversatzV, RadversatzH;

char ErrorMessage[2048];
}
ML5DataDynamic;

/////////////////////////////////////////////////////////////////////////////
// Prototypen der Interface - Funktionen
/////////////////////////////////////////////////////////////////////////////

unsigned long GetDynamicData(ML5DataDynamic *DataSetPtr, char* ServerAddress, unsigned int ServerPort, unsigned int MaxTimeOut);

bool GetStaticData(char* Dir, char* Filter, char* Measurement, ML5DataStatic* DataSetPtr);

void InitDynamicData(ML5DataDynamic* DynamicData);

void InitStaticData (ML5DataStatic* StaticData);

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


Meines Wissens, gibt es zwei Möglichkeiten so eine DLL einzubinden:

1) Schreiben eine Wrapper-DLL, die die Daten aus den Strukturen in die einfache Datentypen konvertiert

2) Laut diesem Beitrag [http://www.labviewforum.de/index.php?sh ... entry96533] kann man eine Struktur, die der Originalstruktur ähnlich ist, in LabVIEW erstellen. Und dann diese Struktur an den "Knoten zum Aufruf externer Bibliotheken" übergeben.


Mein Versuch nach Variante 2) (Siehe Anhang) war erfolglos.
Ich erhalte ein Fehler: "Mindestens ein Eingang dieser Funktion, der für deren Funktionsfähigkeit erforderlich ist, ist offen oder nicht korrekt verbunden." :cry:


Da ich in C und C++ nicht so stark bin, weiß ich nicht, wie ich eine passende eine Wrapper-DLL erstellen kann. unsure.gif

Kann mir jemand ein Tipp geben, bzw. eine Lösung meines Problems. Wie schreibe ich hierzu die passende Wrapperfunktion. Meine vorgehensweise in C++ (Visual C++). :help:
Oder was habe ich in meinem VI (nach Lösungsvariante 2) falsch gemacht?

Für jede hilfreiche Antwort wäre ich sehr dankbar.
Вложения
VI.jpg
VI.jpg (2.18 КБ) 6593 просмотра
Последний раз редактировалось rshp 25 июн 2010, 22:17, всего редактировалось 1 раз.
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: DLL in LV einbinden. Geht es nur mit einer anderen Wrapp

Сообщение Eugen Graf »

Hallo!

Dein angehängtes Bild ist zu klein, kannst du vlt. ein größeres anhängen?

In der Struktur sehe ich nichts, was nicht mit dem CLFN nicht machbar ist (wenn ich nichts übersehen habe). Du kannst auf CLFN doppeltklicken, dein DLL auswählen, entsprechende Funktion auswählen und die Übergabeparameter anpassen.

Womit genau hast du dein Problem?

Gruß, eg
Аватара пользователя
rshp
interested
interested
Сообщения: 8
Зарегистрирован: 21 июн 2010, 23:07
Версия LabVIEW: 2009
Контактная информация:

Re: DLL in LV einbinden. Geht es nur mit einer anderen Wrapp

Сообщение rshp »

Danke für die schnelle Antwort.


Erlich gesagt, habe ich keine Möglichkeit gefunden eine struct mit folgenden Parametern einzubinden. :
...
double Radstandsdiff;

double Spurweitendiff;

char ErrorMessage[2048];

char ProtocolFiles[256];

struct tm FileTime;
}
ML5DataStatic;
Oder gibt es einen Trick ?? :dntknw: :)
Вложения
VI_.gif
jg69

Professionalism
developer
developer
Сообщения: 265
Зарегистрирован: 14 окт 2008, 00:09
Награды: 1
Версия LabVIEW: 8.x, 20x

Re: DLL in LV einbinden. Geht es nur mit einer anderen Wrapp

Сообщение jg69 »

Аватара пользователя
rshp
interested
interested
Сообщения: 8
Зарегистрирован: 21 июн 2010, 23:07
Версия LabVIEW: 2009
Контактная информация:

Re: DLL in LV einbinden. Geht es nur mit anderer Wrapper-DLL

Сообщение rshp »

Ja, das stimmt.

CROSSPOST:
http://www.labviewforum.de/DLL-in-LV-ei ... 16788.html

Ist es verboten ??? :dntknw:
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Kommunikation mit Applikationen»