Hey Leute,
ich studiere Computer Engineering und muss für ein Projekt im 3. Semester ein Demonstrationsprogramm zur CRC-Berechnung erstellen. Die Aufgabenstellung lautet:
Es ist ein objektorientiertes Modellierung und Implementierung für eine Demonstrationsanwendung zur CRC-Berechnung zu erstellen. Der konsequente Einsatz eines CASE-Tools (z.B. Rhapsody) ist obligatorisch.
Die Demonstrationsanwendung soll anhand eines vorgegebenen Bitmusters und
CRC-Polynoms die Einzelschritte der CRC-Berechnung visualisieren. Mit dem gefundenen CRC-Wert soll die Verifikation des CRC-Wertes verdeutlicht werden. Ebenso ist die Wirkung der Verifikation bei einer Bitänderung im Datenpaket zu veranschaulichen.
Die Darstellung mit normaler Textausgabe ist ausreichend.
Das CRC-Polynom lautet: x^5+x^4+x^2+1
Daten: 11011010101110
CRCMain.java:
public class CRCMain {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int zahlenfeld[] = {1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0};
int zahlen[] = {1,1,0,1,1,0};
int polynom[] = {1, 1, 0, 1, 0, 1};
int polynom2[] = new int[6];
polynom2 = polynom;
int ergebnis[] = new int[6];
int austausch[] = new int[6];
int fertig[] = new int[19];
int counter = 6;
for(int i =0; i<zahlenfeld.length-5;i++){
if(polynom2[0]==0){
polynom2 = austausch(polynom2, zahlenfeld, counter);
counter++;
fertig=0;
for (int x =0; x<6;x++)
System.out.print(polynom2[x]);
}
else {
polynom2 = vergleich(polynom, zahlenfeld);
//System.out.println("ergebnis" + (counter-5));
counter ++;
for (int x =0; x<6;x++)
System.out.print(polynom2[x]);
fertig=1;
}
//System.out.print(fertig);
}
for (int x =0; x<14;x++)
System.out.print(fertig[x]);
}
private static int[] vergleich(int[] p, int[] z) {
int ergebnis[] = new int[6];
for (int i =0;i<p.length; i++ )
ergebnis=p^z;
System.out.println("kein tausch " );
return ergebnis;
}
private static int[] austausch(int[] p, int[] z, int counter) {
int p2[] = new int[6];
p2 = p;
for (int i = 0; i<p.length-1;i++)
p2=p[i+1];
p2[5] = z[counter-1];
System.out.println("tausch " );
return p2;
}
}
CRCTest.java:
/***
*
* Questions containing 'crc5' - Stack Overflow
*
* CRC
*
* https://en.wikipedia.org/wiki/Cyclic_redundancy_check
*
* https://en.wikipedia.org/wiki/Computation_of_CRC
*
* https://en.wikipedia.org/wiki/Mathematics_of_CRC
*
***/
public class CRCTest
{
static void crcCheck(String crcMessage, String crcPolynom)
{
char[] polynomialForm = crcMessage.toCharArray();
char[] crcPolynomialForm = crcPolynom.toCharArray();
int length_CRCMessage = crcMessage.toCharArray().length;
int length_CRCPolynom = crcPolynom.toCharArray().length;
System.out.println("CRC Message: "+crcMessage+ "\t"+length_CRCMessage +
"\t CRC Polynom: "+crcPolynom +"\t"+length_CRCPolynom );
System.out.println( (byte) polynomialForm[0] );
char[] remainderPolynomial = new char[length_CRCPolynom];
for(int i=0; i<=length_CRCMessage; i++)
{
//FIXME: char^char klappt nicht
remainderPolynomial = remainderPolynomial^( polynomialForm*crcPolynomialForm[length_CRCPolynom-1]);
if(crcPolynomialForm == remainderPolynomial)
{
//FIXME: char^char klappt nicht + Variable x nicht definiert --> WP[EN]: Computation of CRC / Code Fragment 2
remainderPolynomial = (remainderPolynomial * crcPolynomialForm[length_CRCPolynom])^crcPolynom;
}
else
{
remainderPolynomial = (remainderPolynomial *x);
}
System.out.print(remainderPolynomial);
}
}
public static void main(String[] args)
{
// 11011010101110000000 / 13998
// Byte message = (byte) 0b11011010101110000000;
// Byte crc5itu = (byte) 0b110101; // 53
String message = Integer.toBinaryString(13998);
String crc5itu = Integer.toBinaryString(53);
crcCheck(message, crc5itu);
// Ergebnis 0b 10001010110110 // 8886
/*
System.out.println(
message +"\t"+
message.toString()+"\t");
//message.byteValue());
System.out.println(
crc5itu +"\t"+
crc5itu.toString()+"\t");
//crc5itu.byteValue() );
*/
// String zahlenfeld="1101101010111000000";
// String zahlen="110110";
// String polynom="110101";
}
}
habe folgendes programmiert, es scheint nicht funktionsfähig zu sein. Würde mich sehr freuen, wenn ihr mir helfen würdet. Es ist ein wichtiges Projekt und ich sollte es bestehen. Vielen Dank im Voraus für eure Mühe! Liebe Grüße hazel
ich studiere Computer Engineering und muss für ein Projekt im 3. Semester ein Demonstrationsprogramm zur CRC-Berechnung erstellen. Die Aufgabenstellung lautet:
Es ist ein objektorientiertes Modellierung und Implementierung für eine Demonstrationsanwendung zur CRC-Berechnung zu erstellen. Der konsequente Einsatz eines CASE-Tools (z.B. Rhapsody) ist obligatorisch.
Die Demonstrationsanwendung soll anhand eines vorgegebenen Bitmusters und
CRC-Polynoms die Einzelschritte der CRC-Berechnung visualisieren. Mit dem gefundenen CRC-Wert soll die Verifikation des CRC-Wertes verdeutlicht werden. Ebenso ist die Wirkung der Verifikation bei einer Bitänderung im Datenpaket zu veranschaulichen.
Die Darstellung mit normaler Textausgabe ist ausreichend.
Das CRC-Polynom lautet: x^5+x^4+x^2+1
Daten: 11011010101110
CRCMain.java:
public class CRCMain {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int zahlenfeld[] = {1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0};
int zahlen[] = {1,1,0,1,1,0};
int polynom[] = {1, 1, 0, 1, 0, 1};
int polynom2[] = new int[6];
polynom2 = polynom;
int ergebnis[] = new int[6];
int austausch[] = new int[6];
int fertig[] = new int[19];
int counter = 6;
for(int i =0; i<zahlenfeld.length-5;i++){
if(polynom2[0]==0){
polynom2 = austausch(polynom2, zahlenfeld, counter);
counter++;
fertig=0;
for (int x =0; x<6;x++)
System.out.print(polynom2[x]);
}
else {
polynom2 = vergleich(polynom, zahlenfeld);
//System.out.println("ergebnis" + (counter-5));
counter ++;
for (int x =0; x<6;x++)
System.out.print(polynom2[x]);
fertig=1;
}
//System.out.print(fertig);
}
for (int x =0; x<14;x++)
System.out.print(fertig[x]);
}
private static int[] vergleich(int[] p, int[] z) {
int ergebnis[] = new int[6];
for (int i =0;i<p.length; i++ )
ergebnis=p^z;
System.out.println("kein tausch " );
return ergebnis;
}
private static int[] austausch(int[] p, int[] z, int counter) {
int p2[] = new int[6];
p2 = p;
for (int i = 0; i<p.length-1;i++)
p2=p[i+1];
p2[5] = z[counter-1];
System.out.println("tausch " );
return p2;
}
}
CRCTest.java:
/***
*
* Questions containing 'crc5' - Stack Overflow
*
* CRC
*
* https://en.wikipedia.org/wiki/Cyclic_redundancy_check
*
* https://en.wikipedia.org/wiki/Computation_of_CRC
*
* https://en.wikipedia.org/wiki/Mathematics_of_CRC
*
***/
public class CRCTest
{
static void crcCheck(String crcMessage, String crcPolynom)
{
char[] polynomialForm = crcMessage.toCharArray();
char[] crcPolynomialForm = crcPolynom.toCharArray();
int length_CRCMessage = crcMessage.toCharArray().length;
int length_CRCPolynom = crcPolynom.toCharArray().length;
System.out.println("CRC Message: "+crcMessage+ "\t"+length_CRCMessage +
"\t CRC Polynom: "+crcPolynom +"\t"+length_CRCPolynom );
System.out.println( (byte) polynomialForm[0] );
char[] remainderPolynomial = new char[length_CRCPolynom];
for(int i=0; i<=length_CRCMessage; i++)
{
//FIXME: char^char klappt nicht
remainderPolynomial = remainderPolynomial^( polynomialForm*crcPolynomialForm[length_CRCPolynom-1]);
if(crcPolynomialForm == remainderPolynomial)
{
//FIXME: char^char klappt nicht + Variable x nicht definiert --> WP[EN]: Computation of CRC / Code Fragment 2
remainderPolynomial = (remainderPolynomial * crcPolynomialForm[length_CRCPolynom])^crcPolynom;
}
else
{
remainderPolynomial = (remainderPolynomial *x);
}
System.out.print(remainderPolynomial);
}
}
public static void main(String[] args)
{
// 11011010101110000000 / 13998
// Byte message = (byte) 0b11011010101110000000;
// Byte crc5itu = (byte) 0b110101; // 53
String message = Integer.toBinaryString(13998);
String crc5itu = Integer.toBinaryString(53);
crcCheck(message, crc5itu);
// Ergebnis 0b 10001010110110 // 8886
/*
System.out.println(
message +"\t"+
message.toString()+"\t");
//message.byteValue());
System.out.println(
crc5itu +"\t"+
crc5itu.toString()+"\t");
//crc5itu.byteValue() );
*/
// String zahlenfeld="1101101010111000000";
// String zahlen="110110";
// String polynom="110101";
}
}
habe folgendes programmiert, es scheint nicht funktionsfähig zu sein. Würde mich sehr freuen, wenn ihr mir helfen würdet. Es ist ein wichtiges Projekt und ich sollte es bestehen. Vielen Dank im Voraus für eure Mühe! Liebe Grüße hazel