CRC校验C程序及用labview编写的CRC校验小程序
扫描二维码
随时随地手机看文章
在一些通信规约中,经常会用到数据校验,其中CRC(Cyclical Redundancy Check)最为常见。它是利用除法及余数的原理来作错误侦测的,实际应用时,发送装置计算出CRC值并随数据一同发送给接收装置,接收装置对收到的数据重新计算CRC并与收到的CRC相比较,若两个CRC值不同,则说明数据通信出现错误。有关CRC算法的原理就不详细说了,直接贴出C程序,用到的时候根据CRC生成多项式,做一些修改即可。
举个例子:CRC生成多项式G(x)= x^16 + x^15 + x^13 + 1
//uc_p_Fst:校验的起始数据指针
//uc_p_End:指向校验结束数据的下一个数据的指针
//ui_CRC:初始数据(注意有些网上给出的程序习惯初始值为0 或初始值为0xffff,这两种情况下校验时的方向不同,前者校验位左移,后者右移,具体原因我也解释不清楚。)
uint16 CheckCRC(uint8* uc_p_Fst,uint8* uc_p_End,uint16 ui_CRC)
{
}
下面贴出用labview编写的CRC校验小程序
前面板:
程序框图:
如有错的地方,请大家指正!