MODBUS的crc校验出错 5
我的MODBUS的CRC校验,8个字节,发现当被校验的数据<128时,校验正确,但是只要有数据>=128校验就出错,请教专家是怎么回事?算法肯定没问题,都是从网上抄下来的...
我的MODBUS的CRC校验,8个字节,发现当被校验的数据<128时,校验正确,但是只要有数据>=128校验就出错,请教专家是怎么回事?算法肯定没问题,都是从网上抄下来的。数据存放在SendBuffer数组中
void crc_check(unsigned char crc_data)
{
bit xor_flag=1;
unsigned char m;
unsigned int crc_num;
crc_result^=crc_data;
crc_num=crc_result;
crc_num&=0x0001;
for(m=0;m<8;m++)
{
if(crc_num)
xor_flag=1;
else
xor_flag=0;
crc_result>>=1;
if(xor_flag)
crc_result^=0xa001;
crc_num=crc_result;
crc_num&=1;
}
}
bit MODBUSCRC()
{
unsigned char i,num;
crc_result=0xffff;
for(i=0;i<8;i++)
crc_check(SendBuffer[i]);
if(crc_result==0)
return 0;
} 展开
void crc_check(unsigned char crc_data)
{
bit xor_flag=1;
unsigned char m;
unsigned int crc_num;
crc_result^=crc_data;
crc_num=crc_result;
crc_num&=0x0001;
for(m=0;m<8;m++)
{
if(crc_num)
xor_flag=1;
else
xor_flag=0;
crc_result>>=1;
if(xor_flag)
crc_result^=0xa001;
crc_num=crc_result;
crc_num&=1;
}
}
bit MODBUSCRC()
{
unsigned char i,num;
crc_result=0xffff;
for(i=0;i<8;i++)
crc_check(SendBuffer[i]);
if(crc_result==0)
return 0;
} 展开
2013-11-20
展开全部
网络上源码很多,但很多有问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-08
展开全部
了解原理,最重要
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询