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 

Umsetzen Cpp Definition aud DLL



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!

27.06.2012, 08:00
Beitrag #1

Helden Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Jun 2012

2011
2000
DE



Umsetzen Cpp Definition aud DLL
Hallo Forum,

ich lege mir seit einigen Tagen die Karten mit einer Cpp Definition für einen DLL Aufruf.

Der komplette DLL Aufruf lautet:
int SCEnable(const unsigned long Mode, const int RecallLastSettings, const char* const pReaderName, const SC_READER_HANDLE hSCReader);

Wie muss ich nun unter LabView2011 den Parameter
const char* const pReaderName
definieren?

Ich bin für jeden Hinweis dankbar.

Gruß Helden

Bahn
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
27.06.2012, 08:39
Beitrag #2

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Umsetzen Cpp Definition aud DLL
(27.06.2012 08:00 )Helden schrieb:  Hallo Forum,

ich lege mir seit einigen Tagen die Karten mit einer Cpp Definition für einen DLL Aufruf.

Der komplette DLL Aufruf lautet:
int SCEnable(const unsigned long Mode, const int RecallLastSettings, const char* const pReaderName, const SC_READER_HANDLE hSCReader);

Wie muss ich nun unter LabView2011 den Parameter
const char* const pReaderName
definieren?

Seit einigen Tagen? Vielleicht solltest Du doch erst einen Grundkurs C Programmierung folgen. Big Grin

const char* besagt ganz einfach dass es sich um einen C String Parameter handelt. Also konfigurierst Du den entsprechenden Parameter als String und dann als Untertyp "C String Pointer", et voilá.

Das const sagt dem C Compiler dass die Funktion den String NICHT verändern darf. Wenn man in C/C++ eine Funktion kompiliert die einen solchen Parameter aufweist, kann man diesen nicht versehentlich an Funktionen übergeben die den Stringbuffer doch verändern. Für den Aufruf von LabVIEW aus ist dieser Umstand aber im Wesentlichen unwichtig, ausser dass man sicher weiss, dass es sich hier ausschliesslich um einen Eingangsparameter handeln kann, und man deshalb in LabVIEW nicht extra darauf achten muss um einen längeren Buffer zu allozieren für eine eventuelle Antwort die die DLL Funktion in diesen Buffer schreiben will.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.06.2012, 12:32
Beitrag #3

Helden Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Jun 2012

2011
2000
DE



RE: Umsetzen Cpp Definition aud DLL
Hallo Rolfk,
vielen Dank für Deine Antwort. Das mit C ist auch schon eine ganze Weile her.
Nun habe ich noch das Problem, dass die DLL einen Pointer auf einen Wertebereich zurück gibt.
Kannst Du mir sagen, ob dieses Problem in LV2011 gelöst wurde oder ist das mir LV immer noch nicht möglich?

Viele Grüße

Helden
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.06.2012, 13:38
Beitrag #4

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Umsetzen Cpp Definition aud DLL
(28.06.2012 12:32 )Helden schrieb:  Nun habe ich noch das Problem, dass die DLL einen Pointer auf einen Wertebereich zurück gibt.
Kannst Du mir sagen, ob dieses Problem in LV2011 gelöst wurde oder ist das mir LV immer noch nicht möglich?
Wer behauptet, dass das nicht mit LV möglich ist? Das geht doch schon ewig mit dem wenig bekannten "MoveBlock".

Und hier gibt es sogar ein paar VIs dafür:
https://decibel.ni.com/content/docs/DOC-9091

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.07.2012, 12:21
Beitrag #5

Helden Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Jun 2012

2011
2000
DE



RE: Umsetzen Cpp Definition auf DLL
Hallo,
vielen Dank. Es funktioniert nun. Der Hinweis war super.

Eine Frage habe ich noch.
Ich habe hier unterschiedliche PCs mit WIN7 64bit und WIN7 32bit.
Für beide erstelle ich die Software mit Labview 2011 32bit.

Wenn ich nun DLL Aufrufe habe, die Datenwerte wie folgt definieren
1) const unsigned long
2) const unsigned int
3) const unsigned short

Welche Bitanzahl wähle ich dann für die unterschiedlichen Betriebssysteme aus?
WIN7 64bit:
1)
2)
3)

WIN7 32bit:
1)
2)
3)

Vielen Dank für die Hilfe.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.07.2012, 14:40
Beitrag #6

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Umsetzen Cpp Definition auf DLL
(04.07.2012 12:21 )Helden schrieb:  Hallo,
vielen Dank. Es funktioniert nun. Der Hinweis war super.

Eine Frage habe ich noch.
Ich habe hier unterschiedliche PCs mit WIN7 64bit und WIN7 32bit.
Für beide erstelle ich die Software mit Labview 2011 32bit.

Wenn ich nun DLL Aufrufe habe, die Datenwerte wie folgt definieren
1) const unsigned long
2) const unsigned int
3) const unsigned short

Welche Bitanzahl wähle ich dann für die unterschiedlichen Betriebssysteme aus?
WIN7 64bit:
1)
2)
3)

WIN7 32bit:
1)
2)
3)

Vielen Dank für die Hilfe.
Da Du LabVIEW 32 Bit verwendest muss Deine DLL auch 32 Bit sein und damit entfällt die erste Version ganz. Eine 32 Bit Applikation läuft unter 64 Bit Windows unter WOW in einem 32 Bit Environment und kann auch nur mit 32 Bit DLLs kopmmunizieren.

Zudem ist der einzige potentielle Unterschied long und das ist gerade unter Windows 64 Bit noch immer 32 Bit, ganz anders als bei den meisten Unix Varianten die dafür einen 64 Bit Integer benützen.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
05.07.2012, 08:34
Beitrag #7

Helden Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Jun 2012

2011
2000
DE



RE: Umsetzen Cpp Definition aud DLL
Hallo Rolf,

damit habe ich folgende Tabelle, die ich übersetzen muss?

1) const unsigned long => int 32bit
2) const unsigned int => int 32bit
3) const unsigned short => int 8bit

Viele Grüße

Helden
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.07.2012, 09:09 (Dieser Beitrag wurde zuletzt bearbeitet: 05.07.2012 09:16 von rolfk.)
Beitrag #8

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Umsetzen Cpp Definition aud DLL
(05.07.2012 08:34 )Helden schrieb:  Hallo Rolf,

damit habe ich folgende Tabelle, die ich übersetzen muss?

1) const unsigned long => int 32bit
2) const unsigned int => int 32bit
3) const unsigned short => int 8bit

Viele Grüße

Helden

Beinahe! short ist 16 Bit, char ist 8 Bit.

Dabei ist zu erwähnen dass dies nirgendwo im C Standard festgeschrieben ist. C sagt alleine dass sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) ist. Es ist damit denkbar dass es C Compiler gibt die alle diese Typen als 8 Bit definieren (oder auch 7 Bit).

Und obwohl das Memorytechnisch keinen Einfluss hat, solltest Du auch auf unsigned achten. Das kann numerisch einen ziemlichen Unterschied machen.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Gehe zu: