
01-02-2008
|
 |
Miembro
|
|
Registrado: oct 2006
Posts: 150
Reputación: 20
|
|
Solucion
Bueno recopilando información de aquí y de allá he llegado a una solución.
Por lo que tengo entendido uno de los códigos de barra mas comunes son los EAN-13.
- ¿Pero como funcionan?
A continuación se hará una breve definición según Wikipedia.
European Article Number es un sistema de códigos de barras adoptado por más de 100 países y cerca de un millón de empresas (2003). En el año 2005 la asociación EAN se ha fusionado con la UCC para formar una nueva y única organización mundial identificada como GS1, con sede en Bélgica.
El código EAN más usual es EAN13, constituido por 13 dígitos y con una estructura dividida en 4 partes:- Los primeros dígitos del código de barras EAN identifican el país que otorgó el código, no el país de origen del producto. Por ejemplo, en Bolivia se encarga de ello una empresa responsable adscrita al sistema EAN y su código es el '777'.
- Referencia del ítem, compuesto de:
- Código de empresa. Es un número compuesto por entre 5 y 8 dígitos, que identifica al propietario de la marca.
- Código de producto. Completa los 12 primeros dígitos.
- Dígito de control. Para comprobar el dígito de control (por ejemplo, inmediatamente después de leer un código de barras mediante un escáner), se suman los dígitos de las posiciones pares, el resultado se multiplica por 3, se le suman los dígitos de las posiciones impares y este resultado se le resta a su múltiplo de 10 más próximo. El resultado final ha de coincidir con el dígito de control.
- Por ejemplo, para 123456789041 el dígito de control será:
- Suma de los números en los lugares pares: 2+4+6+8+0+1 = 21
- Multiplicado × 3: 21 × 3 = 63
- Suma de los números en los lugares impares: 1+3+5+7+9+4 = 29
- Suma total: 63 + 29 = 92
- Próximo múltiplo de 10 = 100
- Dígito de control: 100 - 92 = 8
- El código quedará: 1234567890418
Bueno pero eso no es todo, nos falta la forma de cómo codificarlo, gracias a este articulo y a un poco más de wiki pero en inglés tenemos la solución.
Primero hay que saber que es la codificación y para que sirve no?
La codificación es llevar este número en decimal a uno en binario, donde cada 1 significara una raya negra y cada cero una raya blanca.
Para codificarlo hay que separar el número en 3 partes, el primer dígito, los siguientes 6 y los últimos 6, esto es porque del primer dígito dependerá la codificación de los siguientes 6 y los últimos 6 es un tipo de codificación diferente.
La siguiente tabla es para el primer dígito
Y esta tabla es para el resto de los dígitos
¿Cómo funciona esto?
Supongamos que tenemos el número 1234567891231, lo separamos en 3
Primer dígito: 1
Siguientes seis: 234567
Últimos seis: 891231
Tenemos que buscar el primer dígito en la primera tabla 1 --> LLGLGG, esto indica un orden.
2 3 4 5 6 7
| | | | | |
L L G L G G
Entonces continuamos con los siguientes seis, a estos hay que buscarlos en la segunda tabla, pero depende de si la letra es L o G, si la letra es L hay que buscarlos en L-code y si es G en G-code y esto nos quedaría así
2 - L - 0010011
3 - L - 0111101
4 - G - 0011101
5 - L - 0110001
6 - G - 0000101
7 - G – 0010001
Y a los últimos seis no tienen mas codificación que buscarlos en la segunda tabla en R-code
8 - 1001000
9 - 1110100
1 - 1110010
2 - 1101100
3 - 1000010
1 - 1110010
Ahora solo nos falta agregar unas cosas mas que son los códigos de inicio, separación y fin
inicio - 101 - el de inicio se pone al comienzo del código.
separación - 01010 - se pone antes de los últimos 6 dígitos
fin - 101 - se pone al final del código
Y esto nos quedaría de la siguiente manera:
101 0010011 0111101 001101 0110001 0000101 0010001 01010 1001000 1110100 1110010 1101100 1000010 1110010 101
Bueno espero que sea entendible y que les ayude al que tenga un problema similar, si alguien quiere tengo un programa hecho, así que pídanmelo nomás.
Saludos 
__________________
¡Oh nooo! no compartas, compartir es pirateria, compartir te llevara a la carcel - Revolution OS
|