Tuesday, August 2, 2011

java code for crc-12 and crc-16

import java.io.*;
import java.util.*;
class Crc
{
    public char find(char c,char d)
    {
        if(c=='0'&&d=='0')
            return '0';
        else if(c=='0'&&d=='1')
            return '1';
        else if(c=='1'&&d=='0')
            return '1';
        else
            return '0';
    }
    public static void main(String[] args)throws IOException
    {
        String s1;
        Scanner p=new Scanner(System.in);
        System.out.println("enter the original data bits");
        s1=p.next();
        int l1=s1.length();
        System.out.println("menu\n1.crc-12\n2.crc-16");
        System.out.println("enter the choice");
        int ch=p.nextInt();
        String s2="";
        if(ch==1)
        {
            s2="000000000000";
        }
        else if(ch==2)
        {
            s2="0000000000000000000";
        }
        int l2=s2.length();
        System.out.println("enter the polynomial coefficient");
        String s3=p.next();
        int l3=s3.length();
        String s4="";
        s4=s1+s2;
        int l4=s4.length();
        int i,j,m;
        char a[]=new char[l4];
        for(i=0;i<l4;i++)
        {
            a[i]=s4.charAt(i);
        }
        char b[]=new char[l3];
        Crc cr=new Crc();
        char temp[]=new char[100];
        for(i=0;i<l3;i++)
        {
            temp[i]=cr.find(a[i],b[i]);
        }
        for(i=0;i<l4-l3;i++)
        {
            for(j=0;j<l3-1;j++)
            {
                temp[i]=temp[j+1];
            }
        temp[j]=a[l3+1];
        if(temp[0]=='0')
        {
            for(m=0;m<l3;m++)
            {
                temp[m]=cr.find(temp[m],'0');
            }
        }
        else
        {
            for(m=0;m<l3;m++)
            {
                temp[m]=cr.find(temp[m],b[m]);
            }
        }
        }
        System.out.println("transmitted frame:");
        for(i=1,j=1;i<l4;i++)
        {
            a[i]=temp[j];
            j++;
        }
        for(i=0;i<l4;i++)
        {
            System.out.print(+a[i]);
        }
        for(i=0;i<l4-l3;i++)
        {
            for(j=0;j<l3-1;j++)
            {
                temp[i]=cr.find(a[i],b[i]);
            }
            temp[j]=a[l3+1];
            if(temp[0]=='0')
            {
                for(m=0;m<l3;m++)
                {
                    temp[m]=cr.find(temp[m],'0');
                }
            }
            else
            {
               
                for(m=0;m<l3;m++)
                {
                    temp[m]=cr.find(temp[m],b[m]);
                }
            }
        }
            int count=0;
            for(i=0;i<l3;i++)
            if(temp[i]=='0')
                count++;
            if(count==l3)
                System.out.println("\ntransmitted code is error free");
            else
                System.out.println("\n it is an error");
    }
}