我有从串行端口接收数据的问题。每次发送12个字节,我想读取每个字节并将它们放入一个数组中,然后将它们显示在一个richtextbox中(每个字节将显示在一个单独的行中)。但是有一个问题:当数据连续发送时,我会得到一些额外的0,它们根本不相关,并且我没有在终端程序中收到。 这是我的代码,我很感激你能否帮助我。在C中额外和虚假的串行接收数据#
private void data_received(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
richTextBox1.Invoke(new EventHandler(ReadFromPort));
}
private void ReadFromPort(object sender, EventArgs e)
{
int bytes = 0;
label2.Text = "";
bytes = serialPort1.BytesToRead;
label2.Text = bytes.ToString();
byte[] buffer = new byte[12];
for (int k = 0; k < bytes; k++)
{
buffer[k] = 0;
}
serialPort1.Read(buffer, 0, bytes);
for (int i = 0; i < buffer.Length ; i++)
{
richTextBox1.AppendText(buffer[i].ToString() + Environment.NewLine);
}
}
当你创建数组而不是'new byte [bytes]'时,'buffer.Length'设置为'12'。另外,'new byte []'返回一个归零数组,你不需要将这些值设置为零。另外,将值设置为零也没有意义,因为您将在下一行覆盖它们。 – Groo
serialPort1.Read将返回实际读取的字节数,可能小于12.您的代码似乎假设它始终返回12个字节 – Joe
是的,没错,因为我确定总是发送12个字节。终端计划也证实了这一点。现在的问题是为什么我有时会得到不应该在那里的零。 – srt