INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

DLL-Einbindung, Struct mit verschiedenen Datentypen als Pointer übergeben



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!

06.05.2012, 21:02
Beitrag #1

hawk72 Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Mar 2012

6.1 - 2015
2010
DE_EN

18059
Deutschland
DLL-Einbindung, Struct mit verschiedenen Datentypen als Pointer übergeben
Hallo Labview-Gemeinde,

ich habe hier ein "kleines" Problem mit der Einbindung einer DLL-Datei, welche einen struct aus verschiedenen Datentypen als Pointer übergeben haben möchte. Habe mir schon die ähnlichen Beispiele hier angeschaut und auch einige Werte, die ohne Umwege über Pointer, durch die DLL ausgegeben werden können, erfolgreich auslesen können (Status, Dll-Version, Anzahl Geräte).
Es macht z.Z. einfach nicht klick und ich stochere doch etwas im Dunkeln.

Mich interessieren hauptsächlich die Daten des t_DeviceData structs.
t_DeviceInfo wäre auch hilfreich aber eher zum Verständniss bzw. zum Gerätecheck

Nachfolgend habe ich die vorhandenen Daten eingefügt:

// --------------------------------------
// Struktur fuer Gereate-Infos (USB-HID)
// --------------------------------------
typedef struct
{
DWORD idx; // USB-Geraete-Index
int open; // Zustand -> Open=1 / Close=0
char vid_pid[256]; // VID/PID-String
char dev_info[256]; // GeraeteInfo-String
char sn_info[256]; // S/N-String
int hw_info; // HW-Info (5xxx)
unsigned char hw_var; // HW-Variante
int fw_vers; // FW-Version
} t_DeviceInfo;

// --------------------------------------
// Struktur fuer Messwerte eines Geraetes
// --------------------------------------
typedef struct
{
unsigned char me; // Masseinheit (0...x) - siehe oben
float brutto; // Brutto-Sring
float netto; // Netto-Sring
float tara; // Tara-Sring
float min; // Min-Sring
float max; // Max-Sring
unsigned char dec; // Anzahl Nachkommastellen
unsigned char status; // Status-Byte
} t_DeviceData;

//---

// --------------------------------------
// Funktions-Prototypen der DLL
// --------------------------------------
extern "C" DLL_API int Init(void);
extern "C" DLL_API int Search(t_DeviceInfo *p_dev_info);
extern "C" DLL_API int Open(int list_idx);
extern "C" DLL_API int Close(int list_idx);
extern "C" DLL_API int ReadData(int list_idx, t_DeviceData *dev_dat);
extern "C" DLL_API int Null(int list_idx);
extern "C" DLL_API int GrossNet(int list_idx);
extern "C" DLL_API int ChangeUnit(int list_idx);
extern "C" DLL_API int ChangeRange(int list_idx);
extern "C" DLL_API int Reset(int list_idx);
extern "C" DLL_API int DLLVersion(void);

//---
____________________________________________________________

Das Lesen der aktuellen Messwerte erfolgt über die Funktion:

int ReadData(int list_idx, t_DeviceData *dev_dat);

list_idx - ist eine int16 Wert mit der Nr. des Meßgerätes (hier 1)
t_DeviceDate - ist die Struktur (siehe struct oben)
*dev_dat - der Pointer

Ich scheitere einfach an der Übergabe der Struktur als Pointer.
Die Structur habe ich in einem Cluster abgelegt bestehend aus:

(U8,double,double,double,double,double,U8,U8)

Vielleicht kann mir jemand einen Tip geben ob dies soweit korrekt ist und
wie die Sache mit dem Pointer zu realisieren ist.

Bis jetzt konnte ich alle Fragen bei meinen Labview Experimenten, auch dank des Forums hier, selber losen.
Aber die Sache mit der DLL ist schon frustrierend ... deshalb auch mein erster Post hier ;o)

Vielen Dank schonmal im Voraus...

Norbert
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
30
Antwort schreiben 


Nachrichten in diesem Thema
DLL-Einbindung, Struct mit verschiedenen Datentypen als Pointer übergeben - hawk72 - 06.05.2012 21:02

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Einbindung DLL funktioniert nicht Schrankwand 1 4.681 10.03.2023 18:50
Letzter Beitrag: GerdW
  Datenübergabe an DLL Pointer to Pointer Reiling 2 10.382 02.02.2018 10:59
Letzter Beitrag: Reiling
  Einbindung DLL mit geschachtelten Structures lab-falballa 2 9.791 10.05.2017 08:28
Letzter Beitrag: lab-falballa
  ext. DLL - Einbindung Read Funktion TobSTAR 7 14.374 12.02.2017 18:40
Letzter Beitrag: rolfk
  Absturz durch unzulässige Pointer VS_03 3 11.088 28.10.2016 18:32
Letzter Beitrag: VS_03
  dll mit Pointer auf komplexe Struktur einbinden Wedgewood 11 18.208 27.04.2014 23:44
Letzter Beitrag: Wedgewood

Gehe zu: