Как определить, какую кодировку использовать при чтении с последовательного порта - PullRequest
0 голосов
/ 07 ноября 2018

Я новичок в 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...