LabVIEWForum.de
Erstellen einer wrapper dll - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Erstellen einer wrapper dll (/Thread-Erstellen-einer-wrapper-dll)



Erstellen einer wrapper dll - Cubaner - 30.08.2006 12:42

Hallo liebe LabVIEW Gemeinde,

kann mir jemand sagen was ich zu beachten habe beim erstellen einer wrapper DLL?
Mein Problem dreht sich darum, dass es erforderlich ist eine Strucktur, von einer vorhandenen DLL, in die für LabVIEW handhabbare Variablentypen zerlegt.

Die Struktur sieht folgendermasen aus:

typedef struct tagSERVICE
{
unsigned char bService, //service to execute
fShortCnf; //short confirmation enable
unsigned short wTargetAddress; //target address or PC-interface
unsigned short wIndex, //Parameter-Index
wDataLength; //Anzahl PD bei READ..., WRITE.. bzw. Nutzdaten bei SCOPE
unsigned char bTeleType; //0:zykl. sonst: azyklische Telegramme

union
{
long lDate; //standard READ, WRITE
unsigned char abData[10]; //abData[0]:# of channel with GET_SCOPE
}Data; //abData[1]:# ob block with GET_SCOPE


unsigned short awPA[10], //process data to send
awPE[10]; //received process data

unsigned char far* fpbDataPointer;
unsigned char abReserve[10];
ERRORMSG Error;
}SERVICE, far* FPSERVICE;


Welche Software am besten ist (LabWindows/CVI)?
Welche Dateien man benötigt? Reichen die .c und die .h?
Ein großes Problem wird eventuell die Union sein?
Wie geht man vor? Hat jemand ein Tutorium zur Hand? Hab bis jetzt noch nichts brauchbares gefunden.


Ich weiß das ist viel verlangt!
Wär cool wenn ich ein paar tipps bekommen würde.

Vielen Dank im voraus.

Gruß

Nico


Erstellen einer wrapper dll - jg - 30.08.2006 21:28

<div align="left">Hallo, Nico,

ich habe das Gefühl, ich habe mit meiner Antwort bei deiner letzten Frage deine Probleme nur vergrößert.

Leider kann ich dir auch nicht viel weiterhelfen, da ich bisher auch noch nie so etwas erstellt habe. Habe nur oft genug über dieses Konzept gelesen, um somit komplizierte DLL-Funktionsaufrufe für LabVIEW schmackhaft zu machen. Nur soviel:

Mit welcher textbasierten Programmiersprache (C, C++, C#, VB, Delphi, usw.) du eine weitere DLL erstellst, die die für dein LabVIEW-Programm benötigten Funktionsaufrufe einer anderen DLL für LabVIEW "einfach verpackt", ist eigentlich völlig egal. Du mußt halt mit der anderen Programmiersprache sinnvoll auf die Funktionsaufrufe deiner ursprünglichen DLL zugreifen können.

Da mag es natürlich geschickt sein, diejenige Programmiersprache zu verwenden, mit der die eigentliche DLL erstellt wurde. Dann sollte es auch kein Problem sein, die structures und unions zu definieren.

Für die endgültige Einbindung in LabVIEW brauchst du dann eigentlich nur eine sinnvolle Dokumentation der neugeschriebenen "wrapper".dll. (P.S.: Außer du steigst demnächst auf Version 8.2 um, da wird es einen DLL-Import-Assistenten geben, für den mal wohl eine header-Datei brauchen wird).

Sorry für die insgesamt wahrscheinlich wenig hilfreiche Antwort, aber wie du vielleicht schon bemerkt hast, das Einbinden externer DLL-Aufrufe ist nicht unbedingt die Stärke von LabVIEW (auch nicht unter der Version 8.x).

MfG, Jens</div>