【问题标题】:Read \r sent by serial port in C#?在C#中读取串口发送的\r?
【发布时间】:2015-03-16 10:27:18
【问题描述】:

我正在通过串行端口向 C# 发送文本。该文本包含\r,它将成为超级终端中的一个新行。现在我想用 C# 阅读这个 \r 。我该怎么做?

    private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        RxString = serialPort1.ReadLine();

        this.Invoke(new EventHandler(DisplayText));
    }

    private void DisplayText(object sender, EventArgs e)
    {
        string str = RxString;

        if(str == "\r")
        {
            MessageBox.Show("This is a new line");
        }
    }

【问题讨论】:

  • 您是否需要使用\r 作为行分隔符?如果是这样,只需设置 NewLine 属性。
  • 不,我也可以使用\n\r。但是 \r 工作得很好。
  • 我使用了 if(str == Enviroment.newline) 但它不起作用。
  • 我想你误解了我的意思——你需要将“\n”作为行分隔符吗?请注意,ReadLine 永远不会返回行分隔符本身。它返回文本行。
  • 也许 str.contains('\r') 可以解决问题

标签: c# if-statement serial-port newline


【解决方案1】:

如果您使用ReadLine(),它将读取到换行符,这可以是\r、\n 或\r\n,因此通过使用ReadLine()命令,您将自动检测回车并将其从读取的字符串

https://msdn.microsoft.com/en-us/library/system.io.streamreader.readline%28v=vs.110%29.aspx

如果由于某种原因您需要保留回车,那么您可以使用Read() 命令

https://msdn.microsoft.com/en-us/library/ath1fht8%28v=vs.110%29.aspx

【讨论】:

    猜你喜欢
    • 2020-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多