Hallo Leute, Vor geraumer Zeit hab ich angefangen ein SerielPort Terminal zu programmieren, um Werte einzulesesn die von einem µC gesendet werden. Ich hab bei C# einen Backgroundworker aktiviert der mir Anhand einer Schleife, permanent Werte einliest. Zum Test schickt mir der µC werte die duch eine schleife generiert werden(1,2,3,4... als strings usw) Doch beim Ausgeben aus den Backgroundworker mittels Invoke and die GUI geht alle 6 strings, 1 string verloren. Zum Test hab ich es ohne Backgroundworker auch versucht (programm hängt zwar), jedoch liest er alle Werte ein. Das heist keines der Strings geht verloren. Hat vielleicht jemand eine Ahnung warum immer 1 String verloren geht, könnte es an dem Invoke liegen?, bzw gibt es Alternativen?, Danke!! Als Anhang hab ich das C# Coding zugehängt
Meines Wissens nach gibt die serielle Schnittstelle auch ein Event heraus, mit dem du den Datenempfang lösen könntest. Im Event Daten auslesen, in eine Liste schreiben und wenn ein erwartetet String komplett in der Liste steht, eigenen Event auslösen, wäre ne Möglichkeit.
das problem ist doch das invoke blockiert und wenn dei Gui keine Zeit hat, läuft der Puffer über. Du musst die Daten in einen eignen Puffer schreiben und der gui nur ein event asynchron schicken das jetzt neue daten vorhanden sind.
Danke für die guten Antworten, Wie könnt ich z.B. meine Daten in einem eigenen Puffer zwischenpuffer?, Danke mfg
Nimm ne List<char> oder List<string> oder ne Queue<char> oder Queue<string> Da schreibste im data received EventHandler die empfangenen Daten rein.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.