Forum: PC-Programmierung WerteVerluste bei SerialPort einlesesn


von A.Foley (Gast)


Angehängte Dateien:

Lesenswert?

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

von Sven H. (dsb_sven)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

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.

von A.Foley (Gast)


Lesenswert?

Danke für die guten Antworten,

Wie könnt ich z.B. meine Daten in einem eigenen Puffer zwischenpuffer?,



Danke mfg

von Sven H. (dsb_sven)


Lesenswert?

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
Noch kein Account? Hier anmelden.