LabVIEWForum.de
c-String an LabVIEW - 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: c-String an LabVIEW (/Thread-c-String-an-LabVIEW)



c-String an LabVIEW - fhnw_2268 - 24.04.2007 10:56

Hallo zusammen

Ich habe folgendes Problem. Ich muss für mein Projekt einen String aus einer dll-Datei lesen. Als Übergabewert der Funktion habe ich einen unsigned short Datentyp.
Das Problem ist nun, dass mir LabVIEW den String nicht zurück gibt.Sad
Ich habe bereits alles mögliche probiert, bin jedoch leider auf keine Lösung gekommen. Habe auch ein Programm von NI selber gefunden, dies half mir jedoch au nicht wirklich weiter...

Ich danke schon jetzt für alle Antworten :top:

Freundliche Grüsse


PS: Anbei habe ich das LabVIEW Programm, den C-Code sowie die dll-Datei angehäng:

[attachment=6285]

[attachment=6286]


c-String an LabVIEW - IchSelbst - 24.04.2007 21:11

Ich kann deinen C-Source gerade nicht verifizieren.

Warum benutzt du bei >*output = "Hallo Welt";< einen Stern vor output und bei >output[j] = input[i];< keinen Stern vor output? Output selbst ist bereits ein Pointer. *Output wäre doch ein Pointer, auf den Output zeigt.

Lass doch einfach mal den * weg.


c-String an LabVIEW - rolfk - 12.06.2007 13:29

' schrieb:Hallo zusammen

Ich habe folgendes Problem. Ich muss für mein Projekt einen String aus einer dll-Datei lesen. Als Übergabewert der Funktion habe ich einen unsigned short Datentyp.
Das Problem ist nun, dass mir LabVIEW den String nicht zurück gibt.Sad
Ich habe bereits alles mögliche probiert, bin jedoch leider auf keine Lösung gekommen. Habe auch ein Programm von NI selber gefunden, dies half mir jedoch au nicht wirklich weiter...

char *name ist einfach ein C String Pointer. Konfiguriere ihn dann auch entsprechend!

Und für Ausgabestrings musst Du nicht vergessen, dass der Aufrufer dafür verantwortlich ist um einen Buffer der gross genug ist im Speicher anzulegen bevor er an die Funktion übergeben wird. Das kann in LabVIEW 8.2 direkt in der Aufrufknotenkonfiguration. In früheren Versionen musst Du das programmatisch tun. Ich tue das immer indem ich ein Array of Bytes erzeuge und dies danach mit der Byte Array To String Funktion in einen String umsetze.

Rolf Kalbermatter