C#richtextbox数据在从串行端口读取时被剪切

时间:2013-08-10 15:35:11

标签: c# serial-port

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

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)));

提前致谢

1 个答案:

答案 0 :(得分:0)

编码问题。您必须在配置串行端口时添加此项:

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