求大神写给串口校验格式如下
目的地址 + 源地址 + 功能字 + 数据长度 + 数据 + 校验值我在文本框中输入 31303100 31是目的地址 , 30是源地址 ,31是功能字,00是数据长度
校验值=目的地址 ^ 源地址 ^ 功能字 ^ 数据长度 ^ 数据
我想求这样的一个校验值。 亲们。 最好有实例哦。
--------------------编程问答-------------------- 没人顶。 自己顶个 --------------------编程问答-------------------- 我一般校验位都是求和校验
private byte[]StringToBytes(string strMessage)--------------------编程问答-------------------- 看不懂亲啊。
{
byte []buff=System.Text.Encoding.Default.GetBytes(strMessage);
byte []buffNew=new byte[buff.Length+8];
//>>标志位
buffNew[0]=0xEF;
buffNew[1]=0x0A;
buffNew[2]=0x8B;
buffNew[3]=0xCB;
//<<标志位
//>>消息体长度
buffNew[4]=(byte) (buff.Length/256);
buffNew[5]=(byte) (buff.Length%256);
//<<消息体长度
int sum=0; //求和校验
for(int i=0;i<buffNew.Length-2;i++)
{
if(i>5)
{
buffNew[i]=buff[i-6];
}
sum+=buffNew[i];
}
sum=(int)((0xFFFFFFFF - sum + 1) & 0xFFFF);
//保存校验信息
buffNew[buffNew.Length-2]=(byte) (sum/256);
buffNew[buffNew.Length-1]=(byte) (sum%256);
return buffNew;
}
private string BytesToString(byte []buff)
{
if(buff.Length<=8)
return string.Empty;
if(buff[0]!=0xEF || buff[1]!=0x0A || buff[2]!=0x8B || buff[3]!=0xCB)
return string.Empty;
int len=buff[4]*256+buff[5]; //消息体长度
int sum=0;
for(int i=0;i<6+len;i++)
{
sum+=buff[i];
}
sum=(int)((0xFFFFFFFF - sum + 1) & 0xFFFF);
//验证校验信息
if(buff[6+len]!=sum/256 || buff[6+len+1]!=sum%256)
return string.Empty;
return System.Text.Encoding.Default.GetString(buff,6,len);
}
谁可以用我给的那种方式,做个例子。
补充:.NET技术 , 非技术区