Hallo zusammen,
ich bin auf der Suche nach dem richtigen Algorithmus für einen CRC16, bzw. suche ich das korrekte GeneratorPolynom.
Ich habe folgendes Problem:
Ich sende Daten über die serielle Schnittstelle an eine Wärmepumpe. Der Datenstrom ist wie folgt aufgebaut:
DLE STX <KOMMANDO> DLE ETX <CRC>
DLE = 0x10
STX = 0x02
<KOMMANDO> = <CMD> <ADR> <ANZ>
<CMD> = 0x01 0x15 //Lesen aus dem Gerät
<ADR> = 0x00 0x00 //Adresse, ab welcher gelesen werden soll
<ANZ> = 0x00 0x02 //Anzahl der Bytes die gelesen werden sollen
DLE = 0x10
ETX = 0x03
<CRC> = soll der CRC16 mit GeneratorPolynom 0x8005 sein. (init=0 und lsb=0), wobei mit die letzten Parameter nichts sagen ;-(
Der CRC soll angeblich über das <KOMMANDO> gebildet werden.
Es gibt bereits ein DEMO Programm unter Windows, welches mit der Wärmepumpe kommuniziert. Daher sind auch die bekannten CRCs.
Ich möchte die CRCs aber nicht hard codieren, da es noch andere Adressen gibt, für welche noch keine gesnifften CRCs existieren.
Hier aber ein Beispiel für ein funktionierendes CRC
0x10 0x02 0x01 0x15 0x00 0x00 0x00 0x02 0x10 0x03 0xFE 0x17
0xFE 0x17 ist die CRC.
Ich habe schon mehre Algorithmen gefunden, habe aber keinen Erfolg gehabt.
Kann mir einer von Euch sagen, wie der Algorithmus in Java richtig aussieht und was vielleicht das korrekte GeneratorPolynom ist.
Vielen Dank,
SirOlix
ich bin auf der Suche nach dem richtigen Algorithmus für einen CRC16, bzw. suche ich das korrekte GeneratorPolynom.
Ich habe folgendes Problem:
Ich sende Daten über die serielle Schnittstelle an eine Wärmepumpe. Der Datenstrom ist wie folgt aufgebaut:
DLE STX <KOMMANDO> DLE ETX <CRC>
DLE = 0x10
STX = 0x02
<KOMMANDO> = <CMD> <ADR> <ANZ>
<CMD> = 0x01 0x15 //Lesen aus dem Gerät
<ADR> = 0x00 0x00 //Adresse, ab welcher gelesen werden soll
<ANZ> = 0x00 0x02 //Anzahl der Bytes die gelesen werden sollen
DLE = 0x10
ETX = 0x03
<CRC> = soll der CRC16 mit GeneratorPolynom 0x8005 sein. (init=0 und lsb=0), wobei mit die letzten Parameter nichts sagen ;-(
Der CRC soll angeblich über das <KOMMANDO> gebildet werden.
Es gibt bereits ein DEMO Programm unter Windows, welches mit der Wärmepumpe kommuniziert. Daher sind auch die bekannten CRCs.
Ich möchte die CRCs aber nicht hard codieren, da es noch andere Adressen gibt, für welche noch keine gesnifften CRCs existieren.
Hier aber ein Beispiel für ein funktionierendes CRC
0x10 0x02 0x01 0x15 0x00 0x00 0x00 0x02 0x10 0x03 0xFE 0x17
0xFE 0x17 ist die CRC.
Ich habe schon mehre Algorithmen gefunden, habe aber keinen Erfolg gehabt.
Kann mir einer von Euch sagen, wie der Algorithmus in Java richtig aussieht und was vielleicht das korrekte GeneratorPolynom ist.
Vielen Dank,
SirOlix