CODIGOS DE BARRAS EN VISUAL BASIC

Una pequeña nota para explicar como se pueden usar los códigos de barras con facilidad en programas Visual Basic

Para que se usan los códigos de barras

La ventaja es que pueden ser leídos de manera rápida y automática por un lector. Aplicaciones típicas son las lecturas de código de producto en las cajas de un sistema de punto de ventas y la toma de inventarios mediante la pistola lectora y un notebook. Otras aplicaciones son, por ejemplo, escribir información de manera que su contenido no resulte tan evidente, como códigos de verificación y cosas de ese tipo.

Formatos de código de barra

Existen diversos formatos pero se puede hacer una distinción fundamental en dos tipos: los códigos de largo fijo y los de largo variable

Ejemplo de código de largo fijo es el código mas o menos universal que usa la mayoría de los productos comerciales que se venden en supermercados, revistas, etc. el el codigo llamado EAN si mal no recuerdo. 

El formato variable más conocido es el codigo 39 o 3 of 9 que es el que describiré en este caso por ser el más sencillo de implementar. Para otros códigos existen muchas OCX shareware que permiten generarlos con facilidad.

Usando código de barras en una aplicación de Visual Basic

Si usamos el formato 3 of 9 es sumamente sencillo, basta con conseguirse un archivo de fonts true type para windows (similares a Arial.ttf o Times New Roman.ttf) pero que contenga estos caracteres como barcod39.ttf. Buscando en Altavista se encuentran varios archivos gratis de este tipo (algunos tienen un juego de caracteres limitado, no incluyen guiones, números, etc.). Se copia este archivo a c:\windows\font y ya estamos en condiciones de usarlo

Escribir un string codificado en barcod39

Para escribir el código de barras se usan los métodos usuales, con la sola diferencia que al texto que queremos escribir en código debe empezar y finalizar con una asterisco

Por ejemplo en Visual Basic normal para escribir el contenido de Label1.Caption podemos usar

Dim X As New StdFont
X.Size = 40
X.Name = "barcod39"
Set Printer.Font = X
Printer.Print "*" & Label1.Caption & "*"

....
 

Y en Word, usando Visual Basic para Aplicaciones, para escribir el contenido de Textbox1.Text::

With Selection
        .Font.Name = "barcod39"
        .Font.Size = 40
        .TypeText Text:= "*" & TextBox1.Text & "*"
....

Algunos problemas comunes

El problema más común es qque la pistola no pueda leer el código por distintos motivos, por ejemplo

  • Código demasiado largo, las pistolas tienen cierto ancho máximo que pueden captar, para largos mayores se debe usar un lector tipo lapiz

  • Caracteres no soportados por eel archivo .ttf, esto ocurre a menudo con los archivos gratis bajdos de Internet, que no soportan todos los caracteres ASCII sino que vienen restringidos.

  • Mala calidad de la pistola lectora: los lectores baratos a veces simplemente leen

  • Mala calidad de impresion: especialmente si se ha escogido un font muy chico y se imprime en una matriz de puntos ocurre este problema

Los lectores de datos

Hay distintos tipos de lectores de precio y características variables, recomiendo por experiencia propia comprar un lector de buena calidad y probarlo con nuestro código antes de decidir su compra.

La mayoría de los lectores se enhufan a la salida de teclado de donde sale una derivación para el lector y otra para el teclado. No necesitan driver ni nada adicional (aunque he visto algunos lectores de lapiz que necesitan de una tarjeta especial). Usualmente vienen con un manual que trae impresos los códigos de configuracion (los lectores tienen capacidad de leer múltiples códigos) y pasando el lector por el código apropiado podemos, por ejemplo dejarlo configurado para leer codigo 39