我是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";
}
输出如下:
使用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";
}
}
输出如下: