PDA

Ver la versión completa : Utilizando códigos de barras



Arielo
06/02/2008, 16:06
He tenido algo abandonado últimamente el foro de programación, debido a mi trabajo. (Por eso, si sólo pueden ver un par de temas creados en este foro, les sugiero que vayan hasta el apartado "Despliegue de temas" sobre el final de la página, indiquen que quieren visualizar todos los temas desde el principio, y den clic en "Mostrar temas")

En este tema, iré describiendo cómo utilizar códigos de barras en nuestras aplicaciones.

Para esto, los interesados, pueden ir buscando fuentes de códigos de barra de formato Interleaved 2 of 5, que es el formato de códigos que utilizaremos. En breve, comenzaré con las explicaciones.

Saludos!

Arielo
11/02/2008, 14:46
Nuestro programa tendrá la capacidad de imprimir tanto letras como números, y algunos caracteres especiales. En total, son 100 caracteres.

Lo primero que tenemos que tener en cuenta para este formato de códigos de barras, es que se necesita tener una cantidad par de caracteres a imprimir.
En el caso de que la etiqueta que debamos imprimir contenga una cantidad impar de caracteres, tendremos que anteponerle un 0 (cero)

O sea que, si tenemos que imprimir por ejemplo, la cadena "1234567"; antes de imprimirla, deberemos convertirla a "01234567" para llevarla a un largo de 8 caracteres.

El problema viene dado porque no se puede imprimir la cadena que necesitamos directamente. Si enviamos a imprimir "01234567", el lector ignorará nuestro código de barras.

Entonces, ahora veamos cómo imprimir el código de barras, para que sea posible leerlo con un scanner (lector de código de barras)

Arielo
11/02/2008, 14:55
Lo primero que haremos es formatear una variable de texto para que contenga todos los caracteres que deberemos imprimir para que el scanner reconozca nuestro código de barras (en adelante, CdB). El lenguaje utilizado es Basic.


Caracteres = ”!"#$%& ()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~+¦¦++-“

Ahora, verificamos que la longitud de la cadena que debemos imprimir, sea par.

Esta cadena, estará almacenada en la variable CadAImprimir (en nuestro ejemplo, inicialmente, CadAImprimir = “1234567”)



If Len(CadAImprimir) Mod 2 <> 0 Then
CadAImprimir = “0” + CadAImprimir
EndIf


Como para nuestro ejemplo, CadAImprimir contiene inicialmente “1234567”, cuando el sistema verifica la longitud de la cadena, "vé" que es impar (porque Len(CadAImprimir) Mod 2 es distinto a cero), así que le agrega un cero adelante. De ahora en más, CadAImprimir toma el valor “01234567”

Arielo
11/02/2008, 15:03
Ahora, inicializamos una nueva variable, a la que llamaremos CadSalida, que contendrá la cadena a imprimir, ya formateada con los caracteres necesarios para que el scanner lea nuestro código de barras. Esta variable, inicialmente, contendrá el valor "Ë", que es el caracter "Start", que indicará que lo que está a continuación, es un código de barras Interleaved.


CadSalida = "Ë"

Ahora, para formatear la cadena de salida, tendremos que ir tomando los caracteres que queremos imprimir, de dos en dos. Una vez que los tengamos, nos fijaremos en la variable Caracteres cuál es el caracter que debemos imprimir para obtener ese número que queremos imprimir. (Me quedó algo confuso, me parece)
Vayamos al ejemplo. Recordemos que la cadena que queremos convertir en CdB es: "01234567"

Tomamos los dos primeros caracteres de la cadena a imprimir. Son "01".
Tenemos que convertir esa cadena a valor decimal. Nos queda 1 (uno)
Nos fijamos en la variable Caracteres, cuál es el caracter que debemos imprimir para obtener ese 1. Y acá va una aclaración: el primer caracter de la variable Caracteres corresponde al 0 (cero) por lo que tendremos que fijarnos en la segunda posición. El caracter correspondiente es una comilla doble ("). Agregamos ese caracter a la cadena de salida (CadSalida). En este momento, CadSalida es igual a Ë".

Hacemos lo mismo con el resto de la cadena.
Tomamos los siguientes dos caracteres: "23" --> nos fijamos en la posición 24 (23+1) de Caracteres. El caracter correspondiente es "8". Lo agregamos a la cadena de salida (CadSalida). En este momento, CadSalida = Ë"8.

Y así, hasta agotar la cadena.
Para esto, necesitaremos un bucle:



For Bucle = 1 to Len(CadAImprimir) Step 2
Num = Val(Mid$(CadAImprimir, Bucle, 2)) + 1
NuevoCar = Mid$(Caracteres, Num, 1)
CadSalida = CadSalida + NuevoCar
Next


Cuando hayamos terminado, CadSalida será igual a: Ë"8Nd

Pero, tenemos que decir de alguna manera, que el CdB ya terminó. Para esto, a CadSalida le agregamos el caracter Stop: "Ì"


CadSalida = CadSalida + "Ì"

Entonces, luego de este paso, CadSalida valdrá: Ë"8NdÌ

Lo único que nos queda hacer ahora, es imprimir CadSalida con la fuente apropiada. Para esto, bastará con un Label, cuya propiedad Font sea la fuente que instalamos en el primer paso.

Espero que les sea útil. Cualquier problema, pregunten ...
Saludos!!!