private void GetSerialData()

{

if(mySerialPort.ReadByte()==2)//找到帧头,本来想用0X02,

{

byte[] D_Buffer=new byte[9];

mySerialPort.Read(D_Buffer,0,D_Buffer.Length);

byte[] myData=new byte[7];

int ID=D_Buffer[0]; //数据包标识

//如果通过校验和,则将缓冲区数据取出存入相应数据数组中。

if(Check(D_Buffer,D_Buffer[8])==true);

{

switch(ID)

{

case 1:

for(i=1;i<=7;i++)

myData1[i-1]=D_Buffer[i];

break;

case 2:

for(i=1;i<=7;i++)

myData2[i-1]=D_Buffer[i];

break;

case 3:

for(i=1;i<=7;i++)

myData3[i-1]=D_Buffer[i];

break;

}

}

}

}

//校验函数

private bool Check(byte d_Buffer,byte checkSum)

{

byte sum=0;

for (i=1;i<=7;i++)

{

sum+=d_Buffer[i];

}

if(sum==checkSum)//说明校验和通过,返回true。

return true;

else return false;//说明校验和不通过,返回false;

}请问:这种思路有疏漏,或者,有更优的解决方案吗?

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐