LabVIEWForum.de - Wide Char String

LabVIEWForum.de

Normale Version: Wide Char String
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen

was Datentypen und deren Verwendung in LabVIEW angeht habe ich momentan null Ahnung .. ich hoffe ihr könnt mir helfen ...

ich habe einne DLL von dem Hersteller unserer USB Dongles bekommen mit dem ich z.B. den Laufwerksbuchstaben etc auslesen kann ...

soweit so gut mit dem Beispielprogramm funktioniert das auch wunderbar ...

aber

in LabVIEW bekomme ich das nicht zum laufen ... mein Problem ist das die Funktionen der DLL eine wide char string als return Wert oder als übergabe Parameter haben wollen ...wie mach ich das ?

Momentan bekomme ich wenn ich USBGetName ausführe nur das erste Zeichen zurück...

was mache ich falsch? wie muss ich den Widechar pointer lassen evtl als numeric und dann von einer Konvertierungsfunktion abholen lassen ?


T

[code]int USBSearchDevices(void);
---------------------------
sucht den Computer nach allen USB devices ab und gibt die Anzahl der gefundenen devices zurück
wenn der Rückgabewert kleiner 0 ist, ist ein Fehler aufgetreten

int USBSearchDevice(const wchar_t *vendor, const wchar_t *product, const wchar_t *revision);
--------------------------------------------------------------------------------------------
sucht den Computer nach passenden USB devices ab und gibt die Anzahl der gefundenen devices zurück
wobei für revision auch NULL angegeben werden kann, um die Revision nicht bei der Suche zu berücksichtigen
wenn der Rückgabewert kleiner 0 ist, ist ein Fehler aufgetreten

wchar_t* USBGetName(unsigned int number);
-----------------------------------------
gibt den FriendlyName des Devices
Bei mir scheiterts ja schon an der allerersten Funktion... int USBSearchDevices(void);

Da kommt -4 raus, was laut readme auf einen Fehler hindeutet... was bedeutet -4?

Gruß SeBa
HAllo SeBa

hmm evtl braucht die dll noch die die Visual studio dlls .. ich hab mal alles in ein zip geworfen ...

[attachment=25413]


T
wide char, das hört sich nach Unicode an:
http://en.wikipedia.org/wiki/Wide_character

Probier mal, ein Array von U16 als Übergabeparameter.

Gruß, Jens
bei einem Übergabe Parameter ok ... kann sein kann ich nicht prüfen da ich nicht weis was ich da eintargen muss damit beid er Funkction USBSearchDevice was gefunden wird ...

daswill ich ja rausfinden ...

wie bekomme ich aber die Daten des Wchar_t* der als Rückgabewert bei z.b. USBGetName kommt in einen LabVIEWstring ...?

T
' schrieb:wie bekomme ich aber die Daten des Wchar_t* der als Rückgabewert bei z.b. USBGetName kommt in einen LabVIEWstring ...?
Da würde ich tricksen. Rückgabewert als U32 definieren. Somit bekommst du die Startadresse diese Wchar zurück.
Und dann such mal im Forum nach Moveblock, damit kannst du Speicherbereiche kopieren.

Gruß, Jens
' schrieb:Da würde ich tricksen. Rückgabewert als U32 definieren.Und dann such mal im Forum nach Moveblock, damit kannst du Speicherbereiche kopieren.
Wie ich das sehe, geht es anders herum.

Die Funktion verlangt drei Zeichenketten und liefert einen numerischen Wert zurück. Die drei Zeichenketten werden als Pointer auf einen WideString (WideChar[]) übergeben.

Ich würde mal folgendes probieren: String normal wie in LV üblich definieren und mit einem Wert beschreiben. Diesen String mit dem Win32API-Befehl "StringToWideString" in einem WideString (weil es in LV keine WideStrings gibt, kommt ein ArrOfU16 raus) konvertieren. Diesen Puffer übergeben.

Problem: Ob der Befehl genau "StringToWideString" heißt, ist mir gerade entfallen. Und ob das Ergebnis dieser Funktion als ArrOfU16 manipulierbar ist, kann ich nicht auf Anhieb sagen.

Ich würde mal auf NI.com nach WideChar, WideString etc suchen. Auch die Suche hier im Forum nach WideString könnte was bringen.

Nachtrag:
Natürlich hat JensG Recht. Das von mir beschriebene Vorgehen trifft für die eine Funktion mit den drei Parametern zu. Für die andere Funktion gibt es die API-Funktion WideStringToString.
Die Funktion heisst MultiBytetoWideChar(). Auf http://forums.ni.com habe ich mal vor Jahren eine VI Library gepostet die verschiedenen Formen von WideChar Strings nach LabVIEW Strings und umgekehrt umsetzt. Windows only da diese Vis Gebrauch machen von den Windows WideChar APIs.

Rolf Kalbermatter
Hallo

danke für den Link mit der llb ich werd das am WE mal testen

T
Hallo zusammen

es hat funktioniert ... großes Danke an roflk DANKE

Lv09_img2
[attachment=25451]

was ich mich frage ist muss ich den Zeiger den ich über die usbdll bekomme wieder freigeben ? so wie in obigen VI ?

T
Seiten: 1 2
Referenz-URLs