Leyendo códigos de barra

cyberhasdes_codigo_barras

Como mucho de ustedes sabrán, códigos de barras hay de varios tipos. Tenemos los lineales y los bi-dimensionales. Dentro de estas dos categorías tenemos varios tipos: EAN, Code 128, Code 39, etc. En la wikipedia tenéis más información sobre cada tipo.

En esta entrada voy a intentar explicar como leer un código de barras del tipo Code 39 con tus propios ojos.

El tipo Code 39 pertenece a la categoría lineal. De esos con barritas blancas y negras. Para simplificar nuestro ejemplo, trabajaremos sólo con números, aunque estos códigos también soportan caracteres alfanuméricos.

Lo primero que tenemos que saber es que, por definición, el tipo Code 39 empieza y termina con un * (asterisco). Otro apunte más, estos códigos están compuestos por barras negras finas y anchas, así como espacios en blancos finos y anchos. Las barras negras finas las interpretaremos como un 0 (cero) y las anchas como un 1 (uno). Y los espacios en blanco finos como un simple separador y los espacios anchos los interpretaremos como un - (guión).

Una vez que hayamos leído y apuntado en un papel el código de barra, si eres capaz de leerlo y memorizarlo al mismo tiempo también vale :-), ahora toca interpretar la cadena de ceros y unos. Para ello nos basaremos en la siguiente tabla:

  • = 0-0110 0 = 00-110 1 = 10-001 2 = 01-001 3 = 11-000 4 = 00-101 5 = 10-100 6 = 01-100 7 = 00-011 8 = 10-010 9 = 01-010

Vamos a leer el siguiente ejemplo:

Barcode_example1

0-011010-01001-100000-01110-10011-00000-11001-0100-0110

Como dijimos anteriormente este tipo de código de barras empieza y termina con un * (0-0110).

0-011010-01001-10000-01110-10011-00000-11001-0100-0110

Por lo tanto esos dígitos los podemos descartar, con lo que nos quedamos con:

10-01001-10000-01110-10011-00000-11001-010

Ahora lo que tenemos que hacer es agrupar los dígitos. De acuerdo con la tabla de arriba, cada dígito está compuesto por 2 dígitos, un guión y luego 3 dígitos más. Con lo que nos quedaría:

10-010  01-100  00-011  10-100  11-000  00-110  01-010

Si ahora comparamos con la tabla:

10-010  = 8 01-100  = 6 00-011  = 7 10-100  = 5 11-000  = 3 00-110  = 0 01-010 = 9

Por lo tanto nuestro código de barras sería: 8675309

En la wikipedia (en inglés) tenéis la tabla completa de símbolos, no sólo los números, sino también los caracteres alfanuméricos.

Más información aquí y aquí.