0

我正在编写一个 C# 程序,它可以连续从串口获取数据并立即将其显示在 WPF 的富文本框中。问题是,当我使用下面的代码时,每个 HEX 值的第一位都被剪掉了,我得到了一个像 (Say) 这样的输出

B 3C 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 

而不是得到

0B 3C FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF.

为什么会发生这种情况,我犯了什么错误?我已经检查了终端软件,我收到的数据是正确的。只有在我的程序中显示时,它才会剪辑第一位。

另外,如何将前 2 个字节和后 2 个字节分开并阻止它显示在 Richtextbox 上。代码如下:

 string received_data = serialPort1.ReadExisting();
char[] store_char_array = received_data.ToCharArray();
string display_text = "" ;
foreach (var i in store_char_array)
      {
         string hex_value = String.Format("{0:X}", Convert.ToUInt32(i));
  display_text += hex_value + " ";

 }

Invoke(new Action(() => richTextBox1.AppendText(display_text)));

提前致谢

4

1 回答 1

0

这是编码的问题。您必须在配置串行端口时添加:

SerialPort.Encoding = System.Text.Encoding.GetEncoding(28591)

于 2016-01-22T07:10:05.380 回答