Autor Tema: Protocolo Wiegand  (Leído 3623 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1194
Protocolo Wiegand
« en: 22 de Abril de 2013, 12:35:22 »
Hola a todos,

Me encuentro en la siguiente situación. Estoy tratando de entender como y de donde se obtiene el numero de serie enviado por un lector RFID con protocolo wiegand de 26 bits. Quiero aclarar que el protocolo en sí lo entendiendo a la perfección, pero mi duda es la siguiente:

Tengo dos tarjetas con numeros varios numeros impresos. Estos numeros son:

Tarjeta 1: 0006637601    101,18465
Tarjeta 2: 0006637438    101,18302

Ahora bien segun he leído el primer numero es el ID de la tarjeta en formato hexadecimal. Este numero lo he podido leer usando un lector RFID con interface serial asíncrona a 9600 bps. Pero el segundo numero colocado a la izquerda es el numero que debe entregar un lector con protocolo Wiegand de 26 bits, en donde el 101 es el facility code y el 18465 es el ID de la tarjeta, pero por mas que le busco tomando como base el numero hexadecimal no logro obtener los numeros del wiegand.

Esto es lo que estoy haciendo para poder extraer el los numeros entregados por wiegand:
Tomando el ID de la primera tarjeta, 18465 lo convierto a hexadecimal $4821, como pueden ver ese numero 4821, no forma parte de ID de la tarjeta en su formato hexadecimal, es decir no esta dentro del 0006637601. Ahora bien el 101 tambien lo convierto a hexadecimal $65, pero en la tarjeta el numero es $63 y no $65.

Alguien tiene una idea de como se obtiene ese numero que supuestamente es el equivalente en el protocolo wiegand? Estoy haciendo algo mal?

Estoy esperando un lector RFID con protocolo wiegand 26 bits, para poder corroborar esos datos.

Les comento que las tardjetas son de 125KHz ASK compatibles con EM4100.

Saludos,

Elreypic

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5461
    • Picmania by Redraven
Re: Protocolo Wiegand
« Respuesta #1 en: 22 de Abril de 2013, 16:53:14 »
ElReypic, los dos números son el mismo, solo cambia la interpretación que hagas de él.

Fíjate que los números 0006637601 y 101,18465 son dos formas de interpretar el número binario de 24 bits 011001010100100000100001

Si conviertes 011001010100100000100001 completo de binario a decimal tienes el número 6637601. Si el número binario lo divides en dos bloques (Estándar Wiegand 26) de 8 y 16 bits tendrás que 01100101 es en decimal 101 y que 0100100000100001 es 18465 decimal.

Esto es muy usual cuando se trabaja con Wiegand 26, encontrarse dos maneras de manejar los bits, como RAW convirtiendo los 24 bits a decimal o como Estándar, convirtiendo los 8 primeros bits como Facility Code y los 16 restantes bits como Card Code, uniendo ambos números decimales para obtener el código de la tarjeta.

Luego solo eso, un problema de interpretación de los bits.  :mrgreen:
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7866
Re: Protocolo Wiegand
« Respuesta #2 en: 22 de Abril de 2013, 17:25:27 »
8 y 16, por aqui en Argentina son 24 bits, no 26, Diego.

Salvo que en las valijas se los hayan llevado... :mrgreen: :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5461
    • Picmania by Redraven
Re: Protocolo Wiegand
« Respuesta #3 en: 22 de Abril de 2013, 18:34:12 »
8 y 16, por aqui en Argentina son 24 bits, no 26, Diego.

Salvo que en las valijas se los hayan llevado... :mrgreen: :mrgreen:

El estandar Wiegand 26 consta de:

paaaaaaaabbbbbbbbbbbbbbbbp

- 1 bit de paridad de los 12 primeros bits de datos
- 8 bits de datos para el Facility Code
- 16 bits de datos para el Card Code
- 1 bit de paridad para los 12 últimos bits de datos

Suma y verás que en Argentina igual que en España para el Wiegand 26 salen 26 bits codificados para 24 bits de datos.

Ovbiamente los bits 0 y 25 no aparecen en el número codificado de la tarjeta pero sirven para saber si los 26 bits leídos lo han sido de forma correcta, si las dos paridades concuerdan se puede entonces usar los 24 bits de datos.  :mrgreen:
« Última modificación: 22 de Abril de 2013, 18:40:23 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7866
Re: Protocolo Wiegand
« Respuesta #4 en: 22 de Abril de 2013, 22:17:59 »
Excelente explicación !!
Hasta yo la entendí bien !! :D ((:-)) ((:-)) ((:-))
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1194
Re: Protocolo Wiegand
« Respuesta #5 en: 23 de Abril de 2013, 00:49:46 »
Muchas gracias Redpic. Mas claro ni el agua.

Ya ahora me queda la tarea de interpretar ese numero 06637601hex como 6,637,601 dec. Y luego convertirlo a binario. Todo esto en ensamblador.

saludos y gracias.

Elreypic.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1194
Re: Protocolo Wiegand
« Respuesta #6 en: 23 de Abril de 2013, 07:42:55 »
Nueva duda me ha surgido ahora con esto del wiegand 26 bits.

¿Cual seria la representacion wiegand 26 bits para una tarjeta que tiene el siguiente ID: 1000A399C1 hex?

Elreypic.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5461
    • Picmania by Redraven
Re: Protocolo Wiegand
« Respuesta #7 en: 23 de Abril de 2013, 14:29:31 »
No os vayáis por las nubes ... no cualquier número tiene representación en Wiegand 26.

¿Por qué? Porque solo tienes 24 bits para representar dicho número, da igual si en formato Estándar o en RAW.

Con 24 bits solo puedes representar 2^24 números o sea desde 0x0000 a 0xFFFFFF, o sea que el mayor número decimal expresable con 24 bits es  1.677.7215. Este sería el mayor código decimal que una tarjeta podría tener si se leyese en formato RAW, o sea convirtiendo los 24 bits de binario a decimal.

Si el formato fuese el Estándar tendríamos que separar nuestro máximo número 0xFFFFFF en 0xFF (los 8 primeros bits) y 0xFFFF (los 16 siguientes bits), convertirlos a decimal y unirlos ambos, lo cual sería 255 y 65535 que unidos quedarían como 25565535.

Fíjate que esto que he contado es lo mismo que os conté antes pero expresando de inicio los números en Hexadecimal en vez de en Binario, pero es exactamente lo mismo.

Como puedes suponer 1000A399C1 hex no se puede expresar en W26 ya que dicho número tiene 40 bits de longitud (4 bits por cada dígito Hexadecimal) y en W26 solo puedes representar números con 24 bits, no con 40.

Pues eso.  :)



Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Darkman_A

  • PIC18
  • ****
  • Mensajes: 288
Re: Protocolo Wiegand
« Respuesta #8 en: 23 de Abril de 2013, 14:41:39 »
 (((:-))) (((:-))) (((:-)))

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1194
Re: Protocolo Wiegand
« Respuesta #9 en: 23 de Abril de 2013, 16:47:37 »
Redpic, creo que no me expliqué bien.

Entiendo que no se puede representar ese número de 40 bits en formato wiegand de 24 bits por eso mismo. Solo es de 24 bits.
Mi pregunta es mas con respecto a los primeros 3 bytes del ID, es decir el A399C1hex. Me he dado cuenta que para que el numero pueda ser representado en wiegand 26 el ID de la tarjeta debe contener solo numeros del 0-9, ya que cuando el ID contiene A-F hex no se puede representar. Es decir:
Se puede representar en formato wiegand 26 la tarjeta cuyo ID sea:0001999999, pero la tarjeta con el ID: 000199999A no se puede representar, o mas bien no se como se representa, me explique?

Saludos,

Elreypic.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1194
Re: Protocolo Wiegand
« Respuesta #10 en: 04 de Mayo de 2013, 10:54:30 »
Por fin!!!!!!!!!!!!

Después de haber recibido mi lector RFID con interface wiegand pude realizar las pruebas y todas las dudas han sido resueltas.

Los dos números impresos en la tarjeta son decimales (no es un hexadecimal como creia al principio).Asi que los tres bytes menos significativos del numero de la tarjeta son los que se toman para enviarlos via wiegand. Así de simple.

Agradezco a Redpic por su ayuda y gran colaboración, muchas gracias.

Saudos,

Elreypic.