Я новичок в 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";
}
}
Вывод выглядит следующим образом: