从串口接收到的数据有不正确的换行符

Dav*_*vid 5 c# serial-port

我编写了一个应用程序,将数据发送到 COM 端口并接收返回的数据。

发送效果很好,但接收效果不佳。多行和只读文本框中的新行字符不正确。

截屏:

在此输入图像描述

我的接收代码是:

void serialPort_DataReceived(object s, SerialDataReceivedEventArgs e)
{
    byte[] data = new byte[_serialPort.BytesToRead];
    _serialPort.Read(data, 0, data.Length);

    string str = System.Text.Encoding.UTF8.GetString(data);

    textBox3.Text = textBox3.Text + str;

    textBox3.SelectionStart = textBox3.TextLength;
    textBox3.ScrollToCaret();
}
Run Code Online (Sandbox Code Playgroud)

在打开端口之前,我将 New Line 属性设置为 \r\n:

_serialPort.NewLine = "\r\n";
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?

Ham*_*yan 3

尝试这个:

_serialPort.NewLine = Environment.NewLine;
Run Code Online (Sandbox Code Playgroud)

  • 这种方法可能存在的问题是,由于数据是通过 COM 端口传入的,因此它可能来自另一台计算机,该计算机可能使用也可能不使用相同的环境(甚至相同的操作系统)。 (2认同)