Ich habe eine C# -Anwendung, die über eine C-DLL mit einem USB-Peripheriegerät spricht.Wie man eine Zeichenfolge mit erweiterten ASCII-Zeichen an eine nicht verwaltete C++ - DLL übergeben
Der C-DLL implementiert eine Funktion:
long WriteText(char* data, long length);
Wenn dies von C/C++ Aufruf Ich kann es regelmäßig ASCII-Text, aber auch einige erweiterte Zeichen wie '£' (0x9C hex) senden.
Allerdings habe ich dies in einer C# -Klasse eingewickelt
[DllImport("c:\\USBPD.DLL", EntryPoint = "WriteText")]
public static extern int WriteText(string data, int length);
Allerdings, wenn ich es einen String mit einem „£“ Ich sende bekommen ein ‚u ^‘ in seinen Platz. Der Rest der Saite ist in Ordnung. Ich habe mit den Kodierungstypen herumgespielt, habe aber immer noch Probleme.
Thank Anand
Welche codierende C-Funktion erwartet ihr 'char * data' Argument? –
Ich bin mir ziemlich sicher, es ist ASCII - aber nicht die Quelle, wie die DLL als ein Binärtreiber vom Hardware-Provider verteilt wird. – Nigma