Ho problemi con il calcolo dell'implementazione CRC-16 di un array di byte in java. Fondamentalmente sto cercando di inviare byte a un RFID che inizia a scrivere su un tag. Posso vedere il valore di checksum dell'array guardando il comando tcpdump su mac. Ma il mio obiettivo è generarlo da solo. Ecco il mio array di byte che dovrebbe generare 0xBE, 0xd9:implementazione crc16 java
byte[] bytes = new byte[]{(byte) 0x55,(byte) 0x08,(byte) 0x68, (byte) 0x14,
(byte) 0x93, (byte) 0x01, (byte) 0x00, (byte) 0x00,
(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x06,
(byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00,
(byte) 0x13, (byte) 0x50, (byte) 0x00, (byte) 0x00,
(byte) 0x00, (byte) 0x22, (byte) 0x09, (byte) 0x11};
0x55 è l'intestazione. Come dice la documentazione, sarà escluso.
Ogni volta che provo questa matrice su Java (con 0xBE, 0xd9), RFID funziona. Il mio problema è la generazione di quei valori di checksum. Ho cercato quasi tutto il web ma nessuna possibilità. Non sono riuscito a trovare alcun algoritmo che produca 0xbe, 0xd9.
Qualsiasi idea è più gradita per me. Grazie in anticipo.
edit: here is the protocol che ha fornito con la tecnologia RFID
Non so come ringraziarvi. Grandemente appagato. Ma non posso trattenermi dal chiedere, cosa vedi come il problema tra questi due? –