Salah satu materi komunikasi data di PTI UNY adalah tentang error control. Berikut tugas program untuk simulasi error control dengan CRC pada pengiriman data berupa kata. Awalnya data berupa kata , kemudian di ubah menjadi ASCII , kemudian dari ASCII ke Biner lalu di tambahkan kode divisor. Kemudian ditambah CRC nya lalu data dikirim. Jika data yang diterima sama maka tidak ada error. Jika ada perubahan maka data error dan itu bisa dideteksi dari CRC. Langsung saja ini source codenya :




/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Administrator
 */
import java.io.*;
import java.util.*;
public class komdat_11520244035 {
public static void main(String mega[]) throws IOException{
    int jmlhData;
    Scanner x = new Scanner(System.in);
    System.out.println("Masukkan panjang kata : ");
    jmlhData = x.nextInt();
    char[] charData = new char[jmlhData];
    int[] ascii = new int[jmlhData];
    String [] stri = new String[jmlhData];
    int[] data = new int[jmlhData];
    int[] bin = new int[jmlhData];
    int data_bits,divisor_bits,tot_length;
    String divSplash,bitLast="0",cekCRC;
    int cur = 0;
   
    //========== masukkan kata
    System.out.println("Masukkan kata sebanyak "+jmlhData+" karakter : ");
    for(int i =0;i        charData[i] = (char)System.in.read();
        ascii[i] = Ascii(charData[i]);
    }
    for(int i =0;i        data[i]=Integer.parseInt(biner(ascii[i]),10);
    }
    System.out.println("");
    System.out.println("Hasil Konversi ASCII");
    for(int i = 0;i    System.out.print(ascii[i]);
}   System.out.println("");
    System.out.println("");
    System.out.println("Hasil Konversi ke biner");
    for(int i = 0;i    System.out.print(data[i]);
}   System.out.println("");
    System.out.println("");
    System.out.println("Masukkan jumlah bit divisor");
    divisor_bits = x.nextInt();
   
    System.out.println("");
    System.out.println("Masukkan nilai divisor");
    divSplash = x.next();
    int[] divisor = new int[divSplash.length()];
    for(int i =0; i        divisor[i] = Character.getNumericValue(divSplash.charAt(i));
    }
   /*
    for(int i = 0; i        System.out.print(divisor[i]);
     }
    */
    tot_length = jmlhData + divisor_bits-1;
   
    int div[] = new int[tot_length];
    int rem[] = new int[tot_length];
    String crc = null;
    for(int i = 0; i < data.length;i++){
        div[i] = data[i];
    }
    System.out.println("");
    System.out.print("Dividend (Setelah di append 0's adalah \n");
    for(int i = 0;i
        System.out.print(div[i]);
    }
    System.out.println();
        System.arraycopy(div, 0, rem, 0, div.length);
    /*
    for(int i =0;i          System.out.print(rem[i]);
      }System.out.println();
   */
     // perhitungan crc
    for(int i = 0;i        {  
            rem[cur+i]=(rem[cur+i]^divisor[i]);
           
            if(rem[cur]==0 && cur!=rem.length-1){
                cur++;
            }if((rem.length-cur)                break;
            }
    }
    System.out.println("");
    System.out.println("Kode CRC : ");
    for(int i = 0 ; i<(rem.length/4);i++){
         crc = Integer.toBinaryString(rem[i]);
        System.out.print(crc+bitLast);
     }
    System.out.println("");
   
        System.out.println("Data yang diterima : ");  
        System.out.println("");
        System.out.println("Hasil Konversi ke biner");
            for(int i =0;i                System.out.print(data[i]);}  
        System.out.println("");
        System.out.println("\nHasil Konversi ke ASCII");
            for(int i =0;i                System.out.print(ascii[i]);}
                System.out.println("");  
       System.out.println("");
       System.out.println("Hasil Konversi ke TEXT");
            for(int i =0;i                System.out.print(charData[i]);}
       System.out.println("");
       System.out.println("==========================\nTERIMAKASIH ");
}

public static int Ascii(char a){
        int ascii = (int)a;
    return ascii;
}

public static String biner(int ascii){
        String bin = Integer.toBinaryString(ascii);
    return bin;
}
public static int stringToInt(String b){
       int data = Integer.parseInt(b, 10);
       return data;
         
}    
public static void cetak(int jmlhData, int[] a, char[] data){
        int i =0;
    while(i       
        System.out.print(biner(Ascii(data[i])));
       
        String x = biner(Ascii(data[i]));
        i++;
        }
}  
}