校验码算法
无论是向模块发送指令还是接收模块返回的答应数据,均应严格进行数据校验。 极少情况下,模块返回的应答数据会存在错误,通过数据帧的校验码验证可避免读取到错误的数据。
( 1) CRC16-MODBUS 算法
unsigned int crc16(unsigned char *dat, unsigned int len)
{
unsigned int crc=0xffff;
unsigned char i;
while(len!=0)
{
crc^=*dat;
for(i=0;i<8;i )
{
if((crc&0x0001)==0)
crc=crc>>1;
else
{
crc=crc>>1;
crc^=0xa001;
}
}
len-=1;
dat ;
}
return crc;
}
( 2) 和校验算法
unsigned char AddCheck(unsigned char *dat,unsigned char count)
{
unsigned char i,Add=0;
for (i=0;i<count;i )
Add =dat[i];
return Add;
}
$字符串指令集
$字符串指令集使用更加易于手工操作的字符串做为控制指令,方便对模块进行快捷的功能
测试与演示。字符串指令集见下表。