1

当我使用 StreamWriter.WriteLine 编写时,它会将 CRLF 添加到字符串并将其发送(到 SerialPort)。

当我使用 StreamReader.ReadLine 在同一个 C# 程序中读取带有如下数据的字符串时,它只读取到由第一个 (char)13.ToString() 表示的第一个 CR,而不是由 (char) 表示的 CRLF 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 处?

谢谢。

4

3 回答 3

4

StreamReader.ReadLine 的文档说明: 行定义为字符序列后跟换行符 ("\n")、回车符 ("\r") 或回车符后紧跟换行符 ("\r \n")

您需要使用 Read 和 read,直到您手动遇到 \r\n。

于 2010-01-25T18:38:21.287 回答
1

StreamReader.ReadLine()最多读取但不包括下一个 CR、LF 或 CRLF。我刚刚在您的示例代码上进行了尝试,它返回 2 行,最多读取且不包括尾随 CRLF。如果这不是您所看到的,那么您的情况有所不同StreamReader,您必须向我们展示重复问题的完整代码。

这是您所看到的,而不是您想要的,您必须更详细地描述问题。

于 2010-01-25T19:01:01.110 回答
0

如果您使用的是SerialPort 类,您可以手动将NewLine 属性设置为您需要的任何内容(默认情况下它是 LF (char 10))

于 2010-01-25T18:45:45.840 回答