9

Click here to load reader

Hello world sl015b_3

Embed Size (px)

Citation preview

Page 1: Hello world sl015b_3

Veamos como se da la comunicación:

034E

Page 2: Hello world sl015b_3

EJEMPLO 1

Por ejemplo le envío un comando para que prenda el led: BA04400100FF (este es el comando que

trae el txt que viene con el debug tool)

En este caso se trata de un mensaje del HOST (que en este caso es el PC, al reader que es el lector)

El preámbulo siempre será BA para este tipo de comunicación, el siguiente campo es “Len” el cual

es un byte que indica el número de bytes que comprenden los campos desde “Command” hasta

“Checksum”.

En este caso es “Len” es 0x04 (i.e 4 bytes)

Luego viene el campo de “command” que también es de un byte, en este caso es 0x40, según la

tabla 3 de la hoja de datos es

El campo data es en este caso es de 2 bytes (en general es de longitud variable dependiendo del

tipo de comando). Para este ejemplo los datos son: 0x0100

Finalmente la XOR de 1byte para hacer el checksum es en este caso: 0xFF

La respuesta obtenida fue

BD034000FE

Este se debe analizar desde el formato de Reader to Host

El preámbulo (Preamble) es siempre 0xBD

Len es de 1 byte, en este caso es: 0x03 (es el número de bytes desde Command hasta Checksum)

Command es de 1 byte, en este caso es 0x40 que según la tabla 3 es:

Status es de 1 byte, en este caso es 0x00 que según la tabla 4 es:

Page 3: Hello world sl015b_3

En este caso no hay Data

Y el checksum es:

0xFE

EJEMPLO 2

Por ejemplo le envío un comando para obtener la información del TAG: BA023189 (este es el

comando que trae el txt que viene con el debug tool)

En este caso se trata de un mensaje del HOST (que en este caso es el PC, al reader que es el lector)

El preámbulo siempre será BA para este tipo de comunicación, el siguiente campo es “Len” el cual

es un byte que indica el número de bytes que comprenden los campos desde “Command” hasta

“Checksum”.

En este caso es “Len” es 0x02 (i.e 2 bytes)

Luego viene el campo de “command” que también es de un byte, en este caso es 0x31, según la

tabla 3 de la hoja de datos es

El campo data es en este caso es de 0 bytes (en general es de longitud variable dependiendo del

tipo de comando).

Finalmente la XOR de 1byte para hacer el checksum es en este caso: 0x89

La respuesta obtenida fue

BD0331018E

Este se debe analizar desde el formato de Reader to Host

El preámbulo (Preamble) es siempre 0xBD

Page 4: Hello world sl015b_3

Len es de 1 byte, en este caso es: 0x03 (es el número de bytes desde Command hasta Checksum)

Command es de 1 byte, en este caso es 0x31 que según la tabla 3 es:

Status es de 1 byte, en este caso es 0x01 que según la tabla 4 es:

En este caso no hay Data

Y el checksum es:

0x8E

Jueves 15 de marzo Ahora si se consiguió una Etiqueta compatible (SLB01 I.CODE SLI) y la respuesta obtenida fue esta

BD0E3100 09 Recordemos que el preámbulo siempre 0xBD

Page 5: Hello world sl015b_3

Len es de 1 byte, en este caso es: 0x0E (es el número de bytes desde Command hasta Checksum, incluyendo estos dos campos) en este caso 14 bytes Command es de 1 byte, en este caso es 0x31 que según la tabla 3 es:

Status es de 1 byte, en este caso es 0x00 que según la tabla 4 es:

KOOL!

Data es de longitud variable (en este caso son 11 bytes)

D7DC6D3A000104E0000032

Analicemos estos datos

Según lo que aporta el manual del módulo Lector/Escritor SL015B-3, el identificador único de 8

bytes es:

0XD7DC6D3A000104E0

El AFI (Identificador de Familia de Aplicación) que es 1 byte es: 0x00

El DSFID (Identificador de Formato de Almacenamiento de Datos) que es de 1 byte es: 0x00

El tipo como vemos concuerda 0x32 que es para las etiquetas RFID de tipo I.CODE SLI

Finalmente, El checksum es 0x09

_______________________________________________________________________

Page 6: Hello world sl015b_3

Después de varios intentos fue posible leer el otro TAG

BD0E31004AFE6D3A000104E0000032B6

Page 7: Hello world sl015b_3

PART III

Ahora estamos escribiendo las etiquetas (labels) RFID. Es importante anotar que no todos los

comandos que aparecen en el archivo CommandList.txt son válidos para nuestro caso:

El comando para leer los bloques de memoria desde el 0 hasta el 14 es BA0433000F82 (Read

block0 - block14).

El comando para escribir tiene este formato:

Veamos un ejemplo, con la instrucción BA073401A1A2A3A48C se escriben los datos (A1A2A3A4)

en el bloque de memoria #1. En la respuesta que se obtiene en la consola slcomv10 se puede

verificar esto al leer todos los bloque de memoria de la etiqueta RFID.

Page 8: Hello world sl015b_3

Ahora vamos a proceder a escribir los datos BBCCDDEE en el bloque de memoria #0, la instrucción

sería entonces:

BA073400BBCCDDEECD

Inicialmente se había enviado un checksum erróneo y no se pudo escribir el dato en la etiqueta RFID.

Luego se envío el checksum correcto en la instrucción y se observo una respuesta favorable.

Nota:

El checksum se realiza mediante operaciones XOR (simbolizadas como ) sucesivas entre todos

lo bytes desde el preámbulo hasta los datos (incluyendo a estos). Por ejemplo el checksum de

BA073400BBCCDDEE se obtiene así (todo está representado en hexadecimal).

BA 07 = BD 34 = 89 00= 89 BB=32 CC=FE DD=23 EE=CD

Page 9: Hello world sl015b_3

Al leer todos los bloques de memoria se observan los datos ya grabados.