ESTUDIANDO EL CÓDIGO DE BARRAS Y CREACIÓN DE SCRIPT PARA SU GENERACIÓN

in #steemstem5 years ago (edited)

ESTUDIANDO EL CÓDIGO DE BARRAS Y CREACIÓN DE SCRIPT PARA SU GENERACIÓN


Ante todo reciban un cordial saludo, mi apreciados amigos de Steemit y comunidades que se dedican a apoyar la producción hispana, como #stem-espanol, #cervantes, #votovenezuela, #entropia y muchas otras. En el siguiente post que gustosamente comparto con todos ustedes hablaré sobre los códigos de barra y cómo podemos generarlos mediante técnicas de programación, con un lenguaje como PHP. Espero les guste.

Se trata de un ejercicio de programación que tiene utilidad práctica en nuestros días, debido a la aplicación en el mundo del mercado y otros ámbitos del código de barras, puesto que moderniza la manera de controlar, almacenar y distribuir datos de productos. Quiero compartir tal información debido a que la programación es un hobby para mí y nos permite adentrarnos a un espacio no visible, pero que tiene una funcionalidad cotidiana en el día a día.

Para empezar, ilustrar qué es un ćodigo de barra es algo relativamente trivial, pues para muchos de nosotros hoy en día es común que al salir de compras podamos apreciar que en algún lado de los artículos que querramos adquirir se encuentre esa peculiar imagen, la cual será usada por el personal de caja para acceder a los los datos de tal producto a través de su sistema de información.

De un punto de vista descriptivo, un código de barra es una representación gráfica consistente en una serie de líneas verticales y paralelas entre sí, cada una de las cuales posee distinto grosor, espacio de separación y son de color oscuro.


Ejemplo de codigo de barra | dominio público | FUENTE

Ahora bien, la gracia de los códigos de barra está en potencial para codificar información, que aunque pueda ser ilegible por un ser humano, sí puede ser decodificada óptimamente por un dispositivo lector y un software. Esto es así porque los elementos que conforman la imagen del código de barras pueden variar lo suficiente como para representar distintas secuencias de caracteres, de tal manera que las distintas combinaciones de parámetros como número de líneas, grosor de línea y separación de líneas se pueden corresponder con distintos caracteres o unidades de información.

Para ser más específicos, estos códigos de barras están compuestos por dos partes: el código y la simbología. El código consiste en la asignación de una serie de caracteres numéricos y alfanuméricos, mientras que, por su parte, la simbología consiste en un método específico de presentar caracteres numéricos o alfanuméricos en forma de código de barra. Veamos ahora algunos tipos de código de barra:

a) Códigos de barras lineales: también denominados de una dimensión (1D). Son los más populares y los podemos visualizar en los comercios, colocados en etiquetas o empaques. Dentro de este tiipo se distiguen varios subtipos cuyos nombres son algo técnicos y los han recibido por parte de las organizaciones que los definen, tales como el "UPC", el "code 39" y el "code 128". Estos códigos han sido los primeros en ser inventados y tienen distintos grados de capacidad, aunque los más comunes pueden representar hasta 20 caracteres.


Ejemplo de codigo de barra lineal | dominio público | FUENTE

b) Código de barra bidimensionales: al ser 2D, esto le da una gran capacidad al método de codificación, ya que el número de combinaciones crecen porque pueden imprimirse más detalles en un plano 2D. El código de barra bidimensional más famoso es el QR, que significa "Quick Response" y puede almacenar hasta 7089 caracteres numéricos. De allí que hoy día sea muy común para representar direcciones de wallets de criptomonedas, URL de paǵinas web e incluso se le usa como método de autenticación en muchos sitios y sistemas web. Ahora bien, para algunos es discutible que el código QR se considere "código de barra" puesto que este último generalmente se le asocia al 1D, que es lo que su nombre también sugiere (barra). No obstante, es una larga e interesante historia de la que podemos hablar luego


Ejemplo de codigo de barra bidimensional o código QR | dominio público | FUENTE


Vamos ahora a hablar sobre el script prometido en la introducción. Haremos uso de PHP y en ello recurriremos a la librería tc-lib-barcode, con la que podemos generar los códigos de barras. Estos scripts generarán datos que al ser escaneados arrojarán información relacionada con aquello con cuyo código fue asociado en una base de datos, lo que puede ser, en caso de un artículo, el precio o fecha, etc., es decir, para visualizar todos los datos almacenados.

El script se aplica a un formulario HTML, el cual se encargará de recopilar los datos del producto. Al enviar dicho formulario se procederá a procesar los datos y los incluiremos en el formato adecuado. Los datos formateados se pasarán como argumentos a la función respectiva de la librería, la cual finalmente se encargará de generar el código de barras para la aplicación.

Primero se parte del formulario en HTML para enviar los datos que serán codificados en el código de barra. Dicho formulario contendrá los campos necesarios para eso, y validaremos la información utilizando Javascript, invocando la validación desde el submit del formulario. Naturalmente, si durante la validación ocurre un error, la función devolverá y mostrará un mensaje de error o de que corrija o reintente. En caso contrario, pues enviará a PHP que hará el resto del trabajo. Veamos primero el sencillo formulario en HTML.


Formulario HTML | @lionelandres

A este formulario se le asocia el siguiente código JavaScript, con el que haremos la validación como procedimiento de rutina. Nos interesa que los campos no estén vacios y a su vez el "valor_mrp” sea siempre un valor numérico, puesto que el código de barras resultante sólo codificará números.


Aplicacion de Javascript | @lionelandres

Por ultimo, interviene el código PHP, tras pasar la validación y enviar la petición al servidor. Se realiza la generación del código de barra mediante el uso de la librería tc-lib-barcode, importada al inicio del script. También accederemos a la información del formulario contenida en la variable POST, particularmente, las fechas de “MFG” y “EXP”, y las volveremos un timestamp (marca temporal).

Los timestamp de los productos serán una cadena. Esta información pasará a una función denominada getbarcodeobj que devuelve, según el tipo especificado, el objeto del código de barra. Con tal referencia se crea la imagen en formato PNG del código de barra y se envía al navegador para su visualización.


Aplicacion de PHP | @lionelandres

En definitiva, miles de empresas con sistemas automatizados utilizan estas herramientas para agilizar las labores de identificación de productos, puesto que sus datos son asociados mediante el código de barra y almacenados en bases de datos respectivamente.

Sin embargo, la utilidad de este método no acaba aquí, pues puede tener una relación directa con las actividaes técnicas y científicas. Por ejemplo, el Proyecto Barcoding aspira utilizar técnicas basadas en código de barras para codificar el ADN de las especies, de modo que puedan ser identificadas por su respectivo ćodigo. Ciertamente, un uso más refinado de este dibujito.

No quería cerrar el artículo sin antes insertar un código de barras que codificara un texto que es bastante común para los amantes del conocimiento en Steemit.


Código de barras de stem-espanol, creado con modificaciones al script estudiado | @lionelandres


Algunas fuentes:

Codigo de barras
Proyecto Barcoding
Código fuente de la libreria tc-lib-barcode

Si estás interesado en más temas sobre Ciencia, Tecnología, Ingeniería y Matemáticas (STEM, siglas en inglés), consulta las etiquetas #STEM-Espanol y #SteemSTEM, donde puedes encontrar más contenido de calidad y también hacer tus aportes. Puedes unirte al servidor de Discord de STEM-Espanol para participar aún más en nuestra comunidad y consultar los reportes semanales publicados por @STEM-Espanol.

Sort:  




This post has been voted on by the SteemSTEM curation team and voting trail in collaboration with @curie.

If you appreciate the work we are doing then consider voting both projects for witness by selecting stem.witness and curie!

For additional information please join us on the SteemSTEM discord and to get to know the rest of the community!