我正在研究串行端口。我面临一个新问题,即一旦收到数据,我的数据就会不完整。如何检查我的数据是否完整然后处理它们,如果不完整,不处理它们?
这是我的数据接收和发送功能:
private void Send(byte[] cmd)
{
bResponse = new byte[0];
Write(cmd);
}
void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int iCount = comPort.BytesToRead;
byte[] bBuffer = new byte[iCount];
comPort.Read(bBuffer, 0, iCount)
if (bBuffer.Length == 1 && bBuffer[0] == ACK)
Write(new byte[] { ENQ });
else if (bBuffer.Length == 1 && bBuffer[0] == NAK)
{
Debug.WriteLine("Incomplete Message detected!");
}
else
{
bResponse = bResponse.Concat(bBuffer).ToArray();
rResponse = Decode(bResponse);
Write(new byte[] { ACK });
}
}
我知道我的数据是在几个包中收到的,我需要等到响应完成,但根据上面的代码我不知道。我应该如何检查数据是否完整,以确定是否等待?(PS:收到的响应大小不同。)