Un poco de teoría sobre los códigos de barras
Es difícil imaginar nuestra vida sin códigos de barras, especialmente ahora, que los encontramos en todas las partes. Vamos al cine y nuestras entradas contienen este “dibujo de barras en blanco y negro”, vamos al supermercado y cada producto tiene información sobre él en forma de código de barras. Solo podemos imaginar cuáles serían las colas si el cajero procesara los identificadores de producto solo, sin usar un escáner. Además, existe un gran riesgo de cometer un error al procesar una secuencia de números. Hoy consideraremos una pequeña parte de todo tipo de códigos de barras.
ITF (Interleaved Two of Five) o código de barras “2 of 5 interleaved”: es un código numérico de doble banda o un código de barras numérico de alta densidad que puede codificar solo pares de números (¡el código de barras debe tener un número par de dígitos!). Cada patrón de código de barras codifica el dígito impar en el patrón de barras y el dígito par en el patrón de espacios entre barras. Para codificar un número impar de dígitos, debe rellenar el dígito más a la izquierda (más significativo) con un cero.
Los códigos de barras pueden tener una longitud variable y normalmente no utilizan una suma de comprobación, aunque se utiliza un carácter de comprobación de módulo 10 en algunas situaciones especiales. Los escaneos parciales son posibles ya que el código de barras 2 de 5 intercalado no se autocomproba, y los campos de datos de longitud fija se utilizan a menudo para evitar este problema.
En breve:
- Codifica datos solo numéricos;
- La longitud es variable, pero debe tener un número par de dígitos;
- La suma de comprobación es opcional.
Como ITF es el código de barras con una densidad de datos muy alta, ofrece las siguientes características:
-
El tamaño de la etiqueta puede ser menor que el de otros códigos con los mismos dígitos. Es mejor imprimir códigos de barras en espacios reducidos.
-
Se pueden contener más datos en comparación con otros códigos, si el tamaño de la etiqueta es el mismo. (Se puede aumentar el número de dígitos).
-
Es posible una anchura de barra más amplia, si el tamaño de la etiqueta y el número de dígitos son iguales.
Si la anchura de la barra es más grande, es fácil de leer para el lector de códigos de barras. También se puede realizar la lectura a larga distancia.
Aunque ITF tiene muchas ventajas, también tiene la desventaja de una posible "lectura omitida" debido a su composición. Omitir lectura significa que el código de barras que representa "3852" se lee incorrectamente como "38" y se omiten algunos dígitos.
Los códigos de barras ITF-14 y GTIN-14 se generan utilizando la simbología “Interleaved 2 of 5”. El ITF-14 se utiliza en contenedores de envío y se basa en el código UPC. Por lo general, los códigos de barras intercalados se imprimen en cajas de cartón corrugado, que contienen mercancías para la entrega y tienen la siguiente estructura:
Industrial 2 de 5 fue desarrollado por Identicon Corp. y Computer Identics Corp. en 1970 y se utilizó activamente en aplicaciones industriales. Sin embargo, actualmente no se utiliza (excepto para algunas aplicaciones logísticas). Industrial 2 de 5 se ve así y usa 5 barras para representar un carácter. Dado que este código solo asigna datos a barras (y no a espacios), tiene una densidad de datos muy baja:
La matriz 2 de 5 es un miembro de mayor densidad de la familia de simbología Código 2 de 5, que se desarrolló por primera vez en 1968. Se ha utilizado principalmente en la clasificación de almacenes y el acabado fotográfico. El nombre "2 de 5" deriva del hecho de que de los cinco elementos (barras y espacios) que se utilizan para codificar cada carácter, dos son anchos y tres estrechos.
Ajuste fino del código de barras en Delphi y Lazarus para imprimir
FastReport VCL le permite utilizar los tres tipos de códigos de barras. Veamos cómo hacerlo. En el diseñador de FastReport VCL, agregue el componente obCatBarcode al informe y seleccione el tipo de código de barras de la lista:
A continuación, vaya al editor de códigos de barras:
Editor de código de barras
Código: área para el valor numérico del código de barras;
Tipo de barra: el tipo de código de barras se puede cambiar inmediatamente en el editor sin agregar un nuevo componente al informe;
Calc CheckSum - suma de comprobación. Todos los códigos de barras lineales tienen esta propiedad. ¿Recuerda "omitir la lectura"? ¡Debemos combatirlo de alguna manera! Esta propiedad determina si la suma de comprobación debe calcularse automáticamente. Si está deshabilitado, la suma de comprobación debe estar presente en el texto del objeto;
Zoom: establece la escala del código de barras y se usa solo junto con la propiedad "Tamaño automático";
Texto: habilita / deshabilita la visualización de texto debajo del código de barras;
Rotación: le permite establecer la rotación del objeto en uno de los ángulos fijos: 0, 90, 180, 270 grados.
Compruebe la coherencia del código de barras generado (afortunadamente, la cámara y el programa de escaneo de códigos de barras ahora están disponibles en todos los teléfonos inteligentes modernos).
Crear un código de barras a partir del código de Delphi / Lazarus
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
uses frxBarcod; procedure TForm1.Button1Click(Sender: TObject); var bc: TfrxBarcodeView; begin bc :=TfrxBarcodeView(frxReport1.FindObject('BarCode1')); {Set the type of the barcode} bc.BarType := bcCode_2_5_interleaved; {Set the fixed barcode value} bc.Text := '123456'; {Set the calculated barcode value} //bc.Expression := '<YourDatasetName."FieldName1"> + <YourDatasetName."FieldName2">'; {Set whether it is necessary to calculate the checksum and add it to the end of the barcode} bc.CalcCheckSum := False; {Set the scale at which the barcode will be displayed} bc.Zoom := 2; {Set the angle of the barcode rotation. Can take the following values: 0, 90, 180, 270} bc.Rotation := 0; {Set whether to set the width of the barcode depending on its content.} {If set to False, Zoom will be set to keep the barcode width fixed} bc.AutoSize := True; {Set the barcode background color} bc.Color := clNone; {Set the barcode lines color} bc.ColorBar := clBlack; {Set whether to display the text at the bottom of the barcode} bc.ShowText := True; frxReport1.ShowReport(); end; |
Ahora sabemos un poco más sobre los códigos de barras ITF y podemos usarlos para nuestros informes, etiquetas y muchas otras cosas.