2016-08-05 33 views
0

Ich möchte Daten an eine TCP 105-Schaltung senden.Wie kann diese CRC (Cyclic Redundancy Check) Berechnung gelöst werden?

Der folgende hex Befehl ist OK, Daten zu senden 123:

7F30001103 313233 45D4

Hier 313233 ist Hex-Darstellung von 123 und 45D4 ist der Wert CRC.

Ich bin in Problem, um diese 45D4 nach der Berechnung von CRC zu erhalten. Nachdem ich lange im Web gesucht habe, erhalte ich andere CRC-Werte in verschiedenen Standards. Aber diese CRC-Werte werden von meiner LED-Anzeigeschaltung nicht akzeptiert.

Bitte helfen Sie mir zu wissen, wie es möglich ist, 45D4 von 7F30001103313233 zu bekommen.

Vielen Dank im Voraus.

+0

Ich bekomme '0x9A8F' mit meiner Methode auf den 8 Bytes. Soll CRC auf den 8 Bytes oder nur einem Subdet berechnet werden? CRC hängt von dem verwendeten Polynom ab, auch wenn derselbe Algorithmus verwendet wird. CRC-Umkehrung, das ist ein kniffliger !! –

+0

Ich habe mit 0x9A8F auch getestet aber kein Erfolg. Kann seine CRC-16 sein. CRC-Umkehrung wird D445 statt 45D4 sein. –

Antwort

0

Der Befehl entspricht einem Algorithmus namens CRC-16/CMS.

$ reveng -w 16 -s 7f30001103313233d445 
width=16 poly=0x8005 init=0xffff refin=false refout=false xorout=0x0000 ch 
eck=0xaee7 name="CRC-16/CMS" 

Dies ist wahrscheinlich der richtige Algorithmus, da Sie nur ein Codewort gegeben habe (und weil ich angenommen habe, dass die CRC-Byte-vertauscht wurde.)

Code zu generieren, berechnet Diese CRC finden Sie beispielsweise in Mark Adlers Tool crcany.

+0

Vielen Dank für diese wunderbare Antwort Regregex. Ich hoffe, das wird funktionieren und ich werde es versuchen. –