私はシリアルポートに取り組んでいます。データを受信するとデータが不完全になるという新しい問題に直面しています。データが完全であるかどうかを確認してから処理し、そうでない場合は処理しないようにするにはどうすればよいですか?
これが私のデータ受信と送信機能です:
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 });
}
}
データがいくつかのパッケージで受信され、応答が完了するまで待つ必要があることはわかっていますが、上記のコードに基づいてわかりません。データが完全であるかどうかを確認して、待機するかどうかを判断するにはどうすればよいですか?(追記:受信した応答のサイズは異なります。)