当我使用StreamWriter.WriteLine编写时,它将CRLF添加到字符串并将其发送(到SerialPort)。
当我使用StreamReader.ReadLine读取同一个C#程序中的字符串时,它只读取第一个(char)13.ToString()表示的第一个CR,而不读取由第一个(char)13.ToString()表示的CRLF。 (char)13.ToString()+(char)10.ToString()组合。
string messageHeader = ((char)2).ToString() +
@"1H|\^&|REMISOL|P|1|20010212161505SS" +
((char)13).ToString() +
((char)3).ToString() +
"E5" +
((char)13).ToString() +
((char)10).ToString();
如何将其读取到最后的CRLF块,而不是停在CR?
感谢。
答案 0 :(得分:4)
StreamReader.ReadLine的文档说明:一行被定义为一个字符序列,后跟一个换行符(“\ n”),一个回车符(“\ r”)或一个回车符后面紧跟一个换行符(为 “\ r \ n” 个)
在手动遇到\ r \ n之前,您需要使用读取和读取。
答案 1 :(得分:1)
StreamReader.ReadLine()
读取但不包括下一个CR,LF或CRLF。我只是在你的示例代码上尝试了它,它返回2行,读取并且不包括尾随的CRLF。如果这不是您所看到的,那么您的StreamReader
会有所不同,您必须向我们展示重复问题的完整代码。
这是你所看到的,它不是你想要的,你必须更详细地描述这个问题。
答案 2 :(得分:0)
如果您正在使用SerialPort class,则可以手动将NewLine property设置为您需要的任何内容(默认情况下为LF(字符10))