Benutzer mit den meisten Antworten
Serial Port + appending Text to richTextbox = ungewollte neue Zeilen

Frage
-
Hi,
ich habe gerade ein Problem beim Schreiben eines Terminal Programms:
Ich habe einen Seriellen Port offen, und lese die Daten mit
richTextBox.AppendText(Port1.ReadExisting());
Das funktioniert soweit gut. Meine Daten sind Messwerte, die jeweils mit CR LF Zeichen beendet werden. Wenn ich allerdings die Textbox durchgehend update, also neue daten direkt reinschreibe, habe ich nicht nur einen Zeilenumbruch nach jedem Messwert, sondern manchmal auch zwei. Nicht immer jedoch.
Wenn ich den Port laufen lasse und den Buffer "volllese", dabei aber keinen Text anhänge, sondern erst wenn schon einige Daten eingelesen sind, und dann die obige Funktion ausführe, dann schreibt er schlagartig die Daten in die Box, so wie es ja sein soll, jedoch ist dann immer genau ein Zeilenumbruch nach jedem Messwert, also genau so wie es sein soll.
Was mache ich falsch?
/edit: Mit dem Terminalprogramm TeraTerm bekomme ich bei den gleichen Daten jeweils nur einen Umbruch, es muss also irgendwie an meinem Programm liegen.
/edit2: Wenn ich die empfangenen Daten in eine Textdatei abspeichere sind übrigens auch keine doppelten Zeilenumbrüche zu sehen, obwohl es denau die gleichen daten sind...
- Bearbeitet Stippy19 Donnerstag, 7. Mai 2015 15:38
Antworten
Alle Antworten
-
Hallo,
das Problem dürfte das Zeilenumbruch-System von Windows sein. \r\n entspricht CR LF, dem Windows Zeilenumbruch. \n einzeln wird jedoch auch als Zeilenumbruch angenommen. Wenn du nun als ersten Umbruch nur \n hast wird \r\n als doppelter Zeilenumbruch interpretiert.
Überprüfe daher bitte ob du wirklich überall \r\n in die TextBox einfügst. Lasse dir ggf. auch mal die Text/Rtf Eigenschaft ausgeben (im Debugger um die Umbruch-Zeichen als Escape-Sequenz zu sehen) um zu gucken wo \r\n und wo nur \n steht.
Der Texteditor ist wahrscheinlich nicht schlau genug da nochmal zu unterscheiden und das andere Programm macht es wahrscheinlich überall richtig.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets -
Hey,
danke schonmal für die Antwort =)
Ja, ich bin mir absolut sicher, dass IMMER \r\n übertragen wird. Aber nur manchmal wird es als 2 interpretiert, meistens als 1.Was ich gemerkt habe: Wenn ich den Cursor in der textbox lasse, passiert es nicht. Nur wenn ich den Fokus wegnehme, also z.b. in ein anderes Textfeld...
-
Hallo,
hast du mal geguckt was in der RTB steht? Also die Text/Rtf-Eigenschaft im angehaltenen Debugger angesehen?
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets