LabVIEWForum.de
Nullterminierter String dll - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: DLL & externer Code (/Forum-DLL-externer-Code)
+---- Thema: Nullterminierter String dll (/Thread-Nullterminierter-String-dll)



Nullterminierter String dll - SchwindelInside - 19.11.2012 13:03

Hallo Forumsgemeinde,

Ich möchte die PCAN-BasicAPI.dll in Labview einbinden. Eine Funktion verlangt als Eingangsparameter einen null-terminierten String der Länge 256.
Laut API-Doku wird das in Delphi als PCHAR bzw. PAnsiChar, in .Net als StringBuilder und in C++ als LPSTR bewerkstelligt. Aber wie erstelle ich in Labview ein ensprechendes Controll, das ich mit dem Eingang des call library function node verbinden kann und welchen Datentyp stelle ich für diesen Eingang im CLFN ein?
Würde mich über lösungsdienliche Hinweise freuen. Vielen Dank schonmal.

Grüße
Stefan


RE: Nullterminierter String dll - rolfk - 20.11.2012 09:31

(19.11.2012 13:03 )SchwindelInside schrieb:  Hallo Forumsgemeinde,

Ich möchte die PCAN-BasicAPI.dll in Labview einbinden. Eine Funktion verlangt als Eingangsparameter einen null-terminierten String der Länge 256.
Laut API-Doku wird das in Delphi als PCHAR bzw. PAnsiChar, in .Net als StringBuilder und in C++ als LPSTR bewerkstelligt. Aber wie erstelle ich in Labview ein ensprechendes Controll, das ich mit dem Eingang des call library function node verbinden kann und welchen Datentyp stelle ich für diesen Eingang im CLFN ein?
Würde mich über lösungsdienliche Hinweise freuen. Vielen Dank schonmal.

Grüße
Stefan

Für das LabVIEW Control brauchst Du nichts besonderes zu machen. Den Parameter in der CLN konfigurierst Du als C String Pointer. LabVIEW macht dann den Rest für Dich. Ausser!!!! Wenn das ein Ausgangsstring ist, also ein Parameter wo die DLL was hineinschreibst, musst Du natürlich auch noch dafür sorgen, dass dieser String wirklich Platz für 256 Character hat. Ich mache das immer mit Initialize Array indem ich ein Byte Array von der gewünschten Länge alloziere und dann mit Byte Array To String in den String umwandle, aber seit etwa LabVIEW 8.5 kannst Du im CLN Konfigurationsdialog auch eine Minimallänge für String- und Arrayparameter konfigurieren.


RE: Nullterminierter String dll - SchwindelInside - 20.11.2012 17:10

(20.11.2012 09:31 )rolfk schrieb:  Für das LabVIEW Control brauchst Du nichts besonderes zu machen. Den Parameter in der CLN konfigurierst Du als C String Pointer. LabVIEW macht dann den Rest für Dich. Ausser!!!! Wenn das ein Ausgangsstring ist, also ein Parameter wo die DLL was hineinschreibst, musst Du natürlich auch noch dafür sorgen, dass dieser String wirklich Platz für 256 Character hat. Ich mache das immer mit Initialize Array indem ich ein Byte Array von der gewünschten Länge alloziere und dann mit Byte Array To String in den String umwandle, aber seit etwa LabVIEW 8.5 kannst Du im CLN Konfigurationsdialog auch eine Minimallänge für String- und Arrayparameter konfigurieren.

Hallo Rolf,

vielen Dank für Deine Nachricht.
Die Mindesgröße hab ich noch mit hinzugefügt, den Rest hatte ich schon. Funktioniert super.
Mein Problem hatte eigentlich gar nichts mit Labview zu tun, sondern lag daran das ich ein Enum als Eingangsparamter verwechselt hatte. Ich dachte erst nur es liegt an der CLFN-Einstellung.
Aber Dein Post war trotzdem sehr aufschlussreich. Vielen Dank

Grüße
Stefan