mikrocontroller.net

Forum: PC-Programmierung WerteVerluste bei SerialPort einlesesn


Autor: A.Foley (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Sven H. (dsb_sven)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A.Foley (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die guten Antworten,

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



Danke mfg

Autor: Sven H. (dsb_sven)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.