Ich nutze die FTDI FT2XX_NET.dll um Daten via USB aus einem angeschlossenen Gerät zu lesen.
Dabei gibt es mehrere Möglichkeiten die Daten aus dem Empfangspuffer zu holen.
bzw.
I.d.R. nutze ich einen String als
Über die empfangenen Daten bilde ich zeichenweise eine simple XOR Prüfsumme
Es gibt einen einzigen Fall, in dem ich die Daten nicht als ASCII, sondern (mutmaßlich, zumindest behauptet das Notepad++) als ANSI bekomme. Es handelt sich dabei um eine komprimierte Textdatei. Diese wird nicht entpackt sondern so wie sie ist die Prüfsumme darüber gebildet. Hierbei schlägt jetzt meine Prüfsummenbildung fehl, weil für Zeichen mit einem gesetzten MSB keine Entsprechung im ASCII String möglich ist. Es kommt zu keiner Fehlermeldung, aber die Prüfsumme ist am Ende falsch, weil z.B. 0x8B als 0x3F interpretiert wird.
Daher nutze ich an dieser Stelle den
zur Prüfsummenbildung.
Das ist nicht so schick, weil ich die beiden Möglichkeiten unterscheiden muss.
Gibt es denn nicht eine Möglichkeit auf das Auslesen der empfangene Daten als
Dabei gibt es mehrere Möglichkeiten die Daten aus dem Empfangspuffer zu holen.
FTDI.Read(byte[] dataBuffer, UInt32 numBytesToRead, ref UInt32 numBytesRead)
bzw.
FTDI. Read(out string dataBuffer, UInt32 numBytesToRead, ref UInt32 numBytesRead)
I.d.R. nutze ich einen String als
dataBuffer
, da die Daten als ASCII Zeichen vorliegen.Über die empfangenen Daten bilde ich zeichenweise eine simple XOR Prüfsumme
Es gibt einen einzigen Fall, in dem ich die Daten nicht als ASCII, sondern (mutmaßlich, zumindest behauptet das Notepad++) als ANSI bekomme. Es handelt sich dabei um eine komprimierte Textdatei. Diese wird nicht entpackt sondern so wie sie ist die Prüfsumme darüber gebildet. Hierbei schlägt jetzt meine Prüfsummenbildung fehl, weil für Zeichen mit einem gesetzten MSB keine Entsprechung im ASCII String möglich ist. Es kommt zu keiner Fehlermeldung, aber die Prüfsumme ist am Ende falsch, weil z.B. 0x8B als 0x3F interpretiert wird.
Daher nutze ich an dieser Stelle den
byte[] dataBuffer
und zur Prüfsummenbildung.
Das ist nicht so schick, weil ich die beiden Möglichkeiten unterscheiden muss.
Gibt es denn nicht eine Möglichkeit auf das Auslesen der empfangene Daten als
byte[] Array
zu verzichten und die einzelnen Zeichen des String so umzuwandeln, dass sie nicht als ASCII (max. 07F) sondern als Zeichen bis 0xFF zu verstehen sind?