CRC校驗C程序及用labview編寫的CRC校驗小程序
在一些通信規(guī)約中,經(jīng)常會用到數(shù)據(jù)校驗,其中CRC(Cyclical Redundancy Check)最為常見。它是利用除法及余數(shù)的原理來作錯誤偵測的,實際應(yīng)用時,發(fā)送裝置計算出CRC值并隨數(shù)據(jù)一同發(fā)送給接收裝置,接收裝置對收到的數(shù)據(jù)重新計算CRC并與收到的CRC相比較,若兩個CRC值不同,則說明數(shù)據(jù)通信出現(xiàn)錯誤。有關(guān)CRC算法的原理就不詳細(xì)說了,直接貼出C程序,用到的時候根據(jù)CRC生成多項式,做一些修改即可。
舉個例子:CRC生成多項式G(x)= x^16 + x^15 + x^13 + 1
//uc_p_Fst:校驗的起始數(shù)據(jù)指針
//uc_p_End:指向校驗結(jié)束數(shù)據(jù)的下一個數(shù)據(jù)的指針
//ui_CRC:初始數(shù)據(jù)(注意有些網(wǎng)上給出的程序習(xí)慣初始值為0 或初始值為0xffff,這兩種情況下校驗時的方向不同,前者校驗位左移,后者右移,具體原因我也解釋不清楚。)
uint16 CheckCRC(uint8* uc_p_Fst,uint8* uc_p_End,uint16 ui_CRC)
{
}
下面貼出用labview編寫的CRC校驗小程序
前面板:
程序框圖:
如有錯的地方,請大家指正!