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 

Wide Char String



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!

25.03.2010, 12:31
Beitrag #1

toaran_ Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 237
Registriert seit: Feb 2007

2012
2006
EN

90763
Deutschland
Wide Char String
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


Angehängte Datei(en)
Sonstige .vi  Dongle_check.vi (Größe: 13,69 KB / Downloads: 287)

Sonstige .dll  usbdll.dll (Größe: 68 KB / Downloads: 241)

Sonstige .txt  ReadMe.txt (Größe: 3,74 KB / Downloads: 355)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
25.03.2010, 12:55
Beitrag #2

SeBa Offline
LVF-Guru
*****


Beiträge: 2.025
Registriert seit: Oct 2008

09SP1 & 10 FDS
2008
DE

65xxx
Deutschland
Wide Char String
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

Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.

Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.

Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.03.2010, 13:48
Beitrag #3

toaran_ Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 237
Registriert seit: Feb 2007

2012
2006
EN

90763
Deutschland
Wide Char String
HAllo SeBa

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


Sonstige .zip  donglecheck.zip (Größe: 358,14 KB / Downloads: 366)



T
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.03.2010, 13:57
Beitrag #4

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Wide Char String
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

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
25.03.2010, 14:25
Beitrag #5

toaran_ Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 237
Registriert seit: Feb 2007

2012
2006
EN

90763
Deutschland
Wide Char String
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.03.2010, 15:13
Beitrag #6

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Wide Char String
' 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

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
25.03.2010, 15:57 (Dieser Beitrag wurde zuletzt bearbeitet: 25.03.2010 16:00 von IchSelbst.)
Beitrag #7

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Wide Char String
' 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.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.03.2010, 20:17
Beitrag #8

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Wide Char String
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

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
26.03.2010, 10:06
Beitrag #9

toaran_ Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 237
Registriert seit: Feb 2007

2012
2006
EN

90763
Deutschland
Wide Char String
Hallo

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

T
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.03.2010, 16:59 (Dieser Beitrag wurde zuletzt bearbeitet: 26.03.2010 17:00 von toaran_.)
Beitrag #10

toaran_ Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 237
Registriert seit: Feb 2007

2012
2006
EN

90763
Deutschland
Wide Char String
Hallo zusammen

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

Lv09_img2

Sonstige .vi  Dongle_check.vi (Größe: 27,8 KB / Downloads: 319)


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

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


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  VC++ 6.0 DLL ins Labview--Ist es möglich output type as char*? Danyang 1 4.430 11.06.2013 10:44
Letzter Beitrag: rolfk
  Pointer auf Char-Array / dll Aufruf ChM 4 9.400 24.08.2010 10:59
Letzter Beitrag: ChM
  Char* in String Array Konvertieren Ralle 3 5.313 12.12.2007 09:54
Letzter Beitrag: Ralle
  struct mit char **Parameter in DLL t4b-1re-2 3 5.334 03.09.2007 12:35
Letzter Beitrag: t4b-1re-2
  char Arrays weschi 1 3.676 08.04.2006 09:38
Letzter Beitrag: oppossom

Gehe zu: