从串行端口读取时剪切的C#richtextbox数据
本文关键字:C#richtextbox 数据 串行端口 读取 | 更新日期: 2023-09-27 18:27:04
我正在编写一个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)));
提前感谢
这是一个编码问题。当你配置你的串行端口时,你必须添加这个:
SerialPort.Encoding=System.Text.Encoding.GetEncoding(28591)