从串行端口读取时如何确定要使用的编码

时间:2018-11-07 16:18:33

标签: c# encoding serial-port

我是c#的新手,我尝试读取串行端口,但是它会导致一些奇怪的字符。我不知道我应该使用哪种编码。

我尝试使用GetEncoding("utf-8")导致出现一些奇怪的字符,并且使用BitConverter.ToString可以看到十六进制输出。

有人可以指出我做错了正确的方向吗?

使用GetEncoding("utf-8")

private void port_DataRecieved(object sender, SerialDataReceivedEventArgs e)
{
    SerialPort port = (SerialPort)sender;
    byte[] data = new byte[port.BytesToRead];
    port.Read(data, 0, data.Length);
    TextBox.Text += "'Rx:'"+Encoding.GetEncoding("utf-8").GetString(data)+"\n";
}

输出如下:

![Output when using utf-6 encoding

使用BitConverter.ToString

private void port_DataRecieved(object sender, SerialDataReceivedEventArgs e)
{
    SerialPort port = (SerialPort)sender;
    int bytes = port.BytesToRead;
    byte[] buffer = new byte[bytes];
    port.Read(buffer, 0, bytes);
    if (BitConverter.ToString(buffer).Replace("-", " ").Length > 1)
    { 
        TextBox.Text += "'Rx:'"+BitConverter.ToString(buffer).Replace("-", " ")+"'\n";
    }
}

输出如下:

Output when using Bytes string

0 个答案:

没有答案