Hallo zusammen
ich versuche gerade eine Kommunikation mit Binärdaten zwischen µC und PC über die serielle Schnitstelle (USB-CDC, virtuelle Schnittstelle) herzustellen. Grundsätzlich funktioniert das ganze auch, nur im c# mit GUI unglaublich langsam.
Mein Aufbau sieht folgendermaßen aus:
Backgroundworker schaut mit BytesToRead nach ob neue Daten da sind, und wenn ja kommt ein readByte in eine ConcurrentQueue und die weitere Verarbeitung erfolgt wenn alle Daten aus dem Buffer gelesen sind (BytesToRead = 0)
Das laden in die Queue dauert für etwa 160000 Bytes etwa 7 Sekunden.... Wenn ich das gleiche im HTerm mache, sind die 160000 Bytes quasi sofort sichtbar. Wie bekomme ich die sache also schneller?
Meine Idee war nicht jedes Byte einzeln auszulesen, sondern mit ReadExisting... leider geht das nur als String und ist damit bei Binärdaten unbrauchbar. Oder kann ich irgendwie definieren, dass ReadExisting nicht aus binär 0xAA ein "?" macht? Die Daten (z.B. 0xAA) welche nicht als Charakter darstellbar sind, werden offensichtlich alle zu "?" gemacht, was ein zurückwandeln in Binärdaten leider unmöglich macht.
Vielen Dank,
csharp_starter
|
|