jueves, 17 de noviembre de 2011

Applet de Códigos de Barra

Tenía ganas de incluir una Applet de Java en el Blog y de paso, retomar el tema de los Códigos de Barra sobre los que ya publiqué varias notas y muchos lectores (especialmente los amigos de México) me consultaron. Para acceder a la Applet haga Clic en la imágen o en el subtítulo.


Fig. 1 Applet Java


El comienzo

Tiempo atrás había desarrollado una pequeña Applet de Java que permitía generar Códigos EAN, pero desafortunadamente no me quedó ni el código virtual de máquina “class” (el ejecutable en la universo Java) ni el fuente. La verdad es que ese programa antiguo, si bien generaba códigos EAN válidos, también era capaz de generar códigos que no cumplían con la norma, y por ende, eran irreconocibles para los lectores de código de barras. De manera que, si no encontraba el código fuente para adecuarlo a las normas, tampoco lo hubiera subido al Blog, por el simple hecho de que si se titula código de barras, debe cumplir con las normas.

En realidad, sobre la cuestión de códigos de barra hice numerosas incursiones en una variedad de lenguajes de programación, además de Java, C++ y VisualBasic; por ejemplo, el programa Regi para Puntos de Venta permite generar etiquetas con códigos de barra (ver Fig. 2), aunque en ese caso se trata de Código 39. Sin embargo, la colección más completa de fuentes que tengo es la que programé laboriosamente en VisualBasic, línea por línea, en base a las especificaciones de las organizaciones de estándares en la materia.



Fig. 2 Listado de Códigos 39


La implementación

Finalmente lo que hice fue tomar el código de un módulo de VB 6 y lo traduje a Java con algunos resultados interesantes en cuanto a las diferencias, pero también en cuanto a las similitudes. Claro, sacando de lado el leitmotiv principal de Java, que es su propio modelo estructural de diseño. Esa es una cuestión por completo diferente. Pero, línea a línea, código a código, tomando en cuenta algunas salvedades, se puede traducir en forma bastante directa, partiendo de las estructuras de control que son semejantes y muchas operaciones básicas que son similares también. Sorprende un poco lo permisivo que es Java en algunos aspectos y lo severo que es en otros. De esta forma, hay operaciones que en C o en Pascal hubiesen sido consideradas sacrílegas, y sin embargo Java las acepta lo más campante.

Fig. 3 El Código 39 en el programa WinBarCode


En la Fig. 3 podemos observar la ventana del programa WinBarCode desarrollado por el autor para generar una gran variedad de códigos de barra. Si lo desea, puede bajar una copia del programa Aquí: Baje el Programa WinBarCode

Algunos detalles

La Clase String de Java es muy amplia en comparación con la humilde variable string de VB6, además sus elementos se indexan en forma similar a un vector, comenzando por el elemento 0. Esto es muy práctico cuando, como en el caso de los Códigos de Barra, se trabaja con Strings y con Matrices. En VB6 eso es una molestia.

De modo que los Mid(string,start[, length]), Left(string, length) , Right(string, length) se redujeron a string.substring(from, to) con el detalle que el from de Java comienza en 0 y no en 1 como ocurre en el start de VB. Cuando el código se ponía un tanto freaky (aunque hermoso para los ojos de un Javista fanático), decidí replicar las funciones VB en Java, por ejemplo IsNumeric(expression) que es bastante transparente, veamos los siguientes ejemplos

Esto


Se convirtió en esto


Esto


Se convirtió en esto


Los Val(string), al tratarse de enteros, los trabajé con el método integer.parseInt(string s), veamos este ejemplo sobre matrices en VB6 y en Java:

Esto


Se convirtió en esto


Conclusión

Dejo para la próxima el comentario sobre las matrices que se pueden traducir en forma bastante directa entre ambos lenguajes, aunque hay quienes sostienen que el VisualBasic no es un lenguaje… ejem!

Más sobre códigos de Barra en este Blog

1 Introduccón a los Códigos de Barra
2 El Código 39
3 Download CodBarra.exe

¡Que tengan un gran día!

Sergio Otaño

0 comentarios: