《CRC冗余码校验编程实验.docx》由会员分享,可在线阅读,更多相关《CRC冗余码校验编程实验.docx(8页珍藏版)》请在三一办公上搜索。
1、、实验目的:掌握CRC冗余码校验编程、实验原理:1. 设置CRC寄存器,并给其赋值FFFF(hex)。2. 将数据的第一个8-bit字符与16位CRC寄存器的低8位进行异或,并把结果存入CRC寄存器。3. CRC寄存器向右移一位,MSB (最高位)补零,移出并检查LSB (最低位)。4. 如果LSB为0,重复第三步;若LSB为1,CRC寄存器与多项式码相异或。5. 重复第3与第4步直到8次移位全部完成。此时一个8-bit数据处理完毕。6. 重复第2至第5步直到所有数据全部处理完成。7. 最终CRC寄存器的内容即为CRC值。常用的CRC循环冗余校验标准多项式如下:CRC(12 位)=X12+X1
2、1+X3+X2+X+1CRC(16 位)=X16+X15+X2+1CRC(CCITT) = X16+X12 +X5+1CRC(32 位)=X32+X26+X23+X16+X12+X11+X10+ X8+X7+ X5+X4+X2+X+1 以CRC(16位)多项式为例,其对应校验二进制位列为1 1000 0000 0000 0101。注意:这儿列出的标准校验多项式都含有(X+1)的多项式因子;各多项式的 系数均为二进制数,所涉及的四则运算仍遵循对二取模的运算规则。_ (注:对二取模的四则运算指参与运算的两个二进制数各位之间凡涉及加减 运算时均进行XOR异或运算,艮即1 XOR 1=0,0 XOR
3、0=0,1 XOR 0=1,0 XOR 1=1,即相同为0,不同为1)、实验内容及步骤: 打开VC选择新建“完成”,出现. 1 guoshumin确定取消TM0:在这里设置对话控制。S3编辑添加控件在对话框上单击右键,选择建立类向导,出现如下对话框,添加成员变量返回最初的对话框单击“开始编码”按钮,选择建立类向导,如下图所示,添加功能函数单击Edit Code添加如下函数void CGuoshuminDlg:OnButton1()/ TODO: Add your control notification handler code hereUpdateData(true);int n,p,k,q
4、,i,j=0;LPCSTR head,g,begain,str1,str3;CString strEdit=m_strEdit1,s=CString(01”);n=strlen(m_strEdit2)-1;if( strlen(m_strEdit1)=0 & strlen(m_strEdit2)=0 )MessageBox(没有输入数据!请重新填写!”); return ;if( strlen(m_strEdit1)=0 & strlen(m_strEdit2)!=0 )MessageBox(没有输入要编码的数据!请重新填写!”);return ;if( strlen(m_strEdit1)!
5、=0 & strlen(m_strEdit2)=0 )MessageBox(没有输入校验多项式!请重新填写!”);return ;str1=m_strEdit1;str3=m_strEdit2;for(int I=0; (str1I=0 II str1I=1 ) & I strlen(m_strEdit1) ;I+);if( Istrlen(m_strEdit1)MessageBox(输入的要编码的数据不合理!请重新填写!”);return ;for(int J=0; (str3J=0 | str3J=1 ) & J strlen(m_strEdit2) ;J+); if( J 0;k-)st
6、rEdit+=CString(0”);strEdit=LPCSTR(strEdit);head = strEdit ;for( ; strlen( head ) = strlen( m_strEdit2 );)g = m_strEdit2 ;for( i=0; *g != 0 ; i+, g+ )if( *(head+i) = *g )strEdit.SetAt(i+j,s0);/CString(0”);elsestrEdit.SetAt(i+j,s1);/CString(1”);q=0;for( ; strEditq != 1 & q strlen(strEdit)-1 ;) q+ ;j =
7、 q ;head = strEdit ;head+=q;p = strlen(strEdit)- n;begain = strEdit;begain += p;m_strEdit3=begain;m_strEdit4 = m_strEdit1 + m_strEdit3;UpdateData(false);返回最初的对话框单击“开始编码”按钮,选择建立类向导,如下图所示,添加功能函数单击Edit Code添加如下函数void CGuoshuminDlg:OnButton2()/ TODO: Add your control notification handler code here OnCancel();最后运行程序guosnumin - Microsoft Visual c+1 - Lguoshuminuig.cppj四文件(D 幡旧 查等曾 插入(D工程(E)组建 T*CD Q(W)帮助3CGuoshuminDIg 三(All class members! fjOnButton1鼠缪圜矗! Bl姬q=0; Aj guoshumin resources白 Dialog圄 IDDABOUTBOXidp2guoshumin d由 J IconE O String Table亩 Q Version53 guoshuminuoic