Frage

Wenn ich StreamWriter.WriteLine Schreib verwenden, fügt CRLF auf den String und sendet sie (an den Serialport).

Wenn ich eine Zeichenfolge in dem gleichen C # Programm StreamReader.ReadLine lese mit Daten unten mögen, es liest nur bis zu der ersten CR durch das erste (char) dargestellt 13.ToString (), nicht die CRLF, die durch die dargestellt wird (char) 13.ToString () + (char) 10.ToString () Kombination.

string messageHeader = ((char)2).ToString() + 
      @"1H|\^&|REMISOL|P|1|20010212161505SS" + 
      ((char)13).ToString() + 
      ((char)3).ToString() + 
      "E5" + 
      ((char)13).ToString() + 
      ((char)10).ToString();

Wie kann ich es bis zu dem CRLF Block lesen, die direkt am Ende ist, und nicht an der CR zu stoppen?

Danke.

War es hilfreich?

Lösung

StreamReader.ReadLine Dokumentation Anmerkungen: Eine Linie als eine Folge von Zeichen definiert ist, gefolgt von einem Zeilenvorschub ( „\ n“), einen Wagenrücklauf ( „\ r“) oder einen Wagenrücklauf unmittelbar ein Zeilenvorschubes ( "\ r \ n")

Sie müssen lesen verwenden und lesen, bis Sie \ r begegnen \ n manuell.

Andere Tipps

StreamReader.ReadLine() liest bis zu, aber nicht enthalten, die nächste CR, LF oder CRLF. Ich habe gerade versucht es auf Ihrem Beispielcode und es gibt zwei Linien, Lesen bis zu und nicht mit dem hinteren CRLF. Wenn dies nicht das, was Sie sehen, es ist etwas anderes über Ihre StreamReader und Sie werden uns kompletten Code haben, das das Problem dupliziert.

Ist das ist, was Sie sehen, und es ist nicht das, was Sie wollen, müssen Sie das Problem genauer beschreiben müssen.

Wenn Sie mit der Serialport-Klasse , können Sie manuell setzen die NewLine Immobilien , was Sie brauchen (es LF (char 10) ist standardmäßig, obwohl)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top