串口每次读取缓冲区的字节数都不是固定的,如果发过来的数组需要按正确的格式读取的话,则需要保证每次的长度是一致的.
解决方案是根据格式需要,先定义一个格式需要长度的的数组.然后将每次读取到的数组进行覆写到这个数组内,直到全部数组写满,再统一发送到格式解析方法中去.
byte[] b1 = new byte[8];需要用到一个方法外的变量和数组,这里我需要的格式是8位
int a = 0;
private void ShowMsg(byte[] b)
{
if (b.Length == 8)
{
Show(b);//格式解析方法
}
else
{
//# Region 使用穷举方法把数组排列成8个
while (a < 8)
{
if (b.Length <8)
{
Array.Copy(b, 0, b1, a, b.Length);//数组覆写
a += b.Length;
if (a < 8)
{ return; }
}
}
Show(b1);
Array.Clear(b1, 0, b1.Length);
a = 0;
}
}