Utilizzare il Netduino per calcolare il crc del tag rfid

Nell’articolo scritto qualche tempo, che mostrava come impiegare un Netduino ed un lettore rfid ID-12 della Innovations, ho descritto solamente la parte che acquisiva l’id del tag, senza analizzare come calcolare il crc indispensabile per avere la certezza che il dato letto fosse corretto.

Riprendo questo argomento su segnalazione di una gentilissima visitatrice Sabrina Cosolo, che ringrazio per avermi fatto notare un errore nell’illustrazione del calcolo del crc, infatti scrissi che i due byte del crc fossero ottenuti ponendo in OR i 10 byte dell’id del tag.
Questo non è vero in quanto bisogna mettere in XOR i valori esadecimali ottenuti dalla conversione in ASCII dei byte letti dal lettore.

Mi spiego meglio impiegando l’illustrazione seguente

calcolare il crc lettore Innovations ID-12

i 10 byte rappresentano l’id del tag, mentre i due byte rappresentano il valore di crc. Il calcolo viene eseguito convertendo i singoli byte in valori ASCII, per ottenere 5 valori esadecimali prendendo 2 byte alla volta, come visibile in figura. Eseguendo un calcolo XOR di questi valori esadecimali otteniamo il calore del CRC.

Ora la difficoltà che ho riscontrato è quella di convertire un byte in un valore esadecimale, semplicissimo da fare con il .Net framework ma non altrettanto con la versione micro (non sono riuscito a trovare delle risorse che svolgessero questo compito!), quindi ho scritto un po di codice per arrangiarmi, mi rendo conto che non è il massimo ma diciamo che per questo esempio funziona!!

Ho commentato il codice per spiegare meglio il funzionamento.

 

Il calcolo del crc può risultare utile nel caso di applicazioni dove la certezza di aver letto bene l’id del tag è fondamentale, come, per esempio in applicazioni come alcune delle applicazioni illustrate nella pagina di wikipedia dedicata al sistema RFID.

Per considerazioni e spiegazioni aggiuntive vi invito a scrivermi nei commenti o tramite mail

al prossimo articolo…