Este instructivo tiene como objetivo explicar las ventajas de Code 128 en comparación con Code 39, y algunos de sus principales casos de uso. Además, se detallarán los pasos necesarios para implementarlo correctamente y se incluirá un listado de las complicaciones más comunes al utilizar Code 128, junto con sus posibles soluciones
Ventajas de Code 128 en comparación con Code 39:
El Code 128 tiene varias ventajas sobre el Código 39 (3 of 9), especialmente en aplicaciones donde la eficiencia y la capacidad de datos son importantes.
Mayor Densidad de Datos:
Code 128 puede codificar más información en menos espacio en comparación con Código 39.
Usa un sistema de compresión que permite almacenar hasta alrededor de un 30% más de datos en el mismo tamaño de etiqueta.
Soporte para Caracteres Complejos:
Mientras que Código 39 solo admite letras mayúsculas, números y algunos caracteres especiales, Code 128 puede codificar todos los 128 caracteres ASCII (incluyendo letras minúsculas y símbolos como @, #, etc.).
Mayor Precisión y Menos Errores:
Code 128 incluye un código de verificación obligatorio basado en un cálculo de suma de comprobación (checksum), lo que reduce los errores de lectura.
Código 39 tiene un checksum opcional, por lo que es más propenso a lecturas erróneas si no se usa.
Más Eficiente para Escaneo Rápido:
Debido a su mayor densidad y menor tamaño, Code 128 es más fácil y rápido de escanear.
Se utiliza ampliamente en logística y comercio por su fiabilidad en entornos de escaneo automatizado.
Compatible con Aplicaciones de Alta Capacidad:
Es el estándar en aplicaciones de envío, almacenamiento, etiquetas de productos y logística (como GS1-128 para códigos de barras en envíos comerciales).
¿Cuándo usar cada uno?:
Usar Code 128 cuando se necesita codificar muchos datos en poco espacio, incluir caracteres especiales o garantizar lecturas más precisas.
Usar Código 39 si se requiere una implementación simple, sin checksum obligatorio y cuando el espacio no es un problema.
Casos de Uso:
Etiquetas de producto terminado
Carteles de Pallets
Pasos a seguir para generar un código Code 128:
Crear las siguientes dos funciones en el server SQL de SisPro:
CREATE FUNCTION dbo.encodeToCode128 (@text VARCHAR(MAX))
RETURNS VARCHAR(MAX)
AS
BEGIN
DECLARE @startCode CHAR(1);
DECLARE @stop CHAR(1) = CHAR(206);
DECLARE @modifiedText VARCHAR(MAX);
DECLARE @check CHAR(1);
DECLARE @codeABC CHAR(1) = 'B';
SET @startCode = CHAR(ASCII(UPPER(@codeABC)) + 138);
SET @check = dbo.checkSum128(@text, ASCII(@startCode) - 100);
SET @text = REPLACE(@text, ' ', CHAR(194));
RETURN @startCode + @text + @check + @stop;
END;
CREATE FUNCTION dbo.checkSum128 (@data VARCHAR(MAX), @startCode INT)
RETURNS CHAR(1)
AS
BEGIN
DECLARE @sum INT = @startCode;
DECLARE @i INT = 1;
DECLARE @len INT = LEN(@data);
DECLARE @code INT;
DECLARE @value INT;
DECLARE @checksum INT;
WHILE @i <= @len
BEGIN
SET @code = ASCII(SUBSTRING(@data, @i, 1));
SET @value = CASE WHEN @code > 199 THEN @code - 100 ELSE @code - 32 END;
SET @sum = @sum + (@i * @value);
SET @i = @i + 1;
END
SET @checksum = (@sum % 103) + 32;
IF @checksum > 126 SET @checksum = @checksum + 68;
RETURN CHAR(@checksum);
END;
Crear en la vista del rótulo de la etiqueta un campo que se llame, por ej. "CodigodeBarras", con la siguiente estructura:
Dbo.encodetocode128
(CONCAT(‘todos los datos del código de barras’)) as CodigodeBarras
Ejemplo:
Dbo.encodetocode128
(CONCAT([Nro Pallet], , LEFT(otnum, 5), [Cantidad x Pallet], codprod)) as CodigodeBarras
Crear el elemento en Crystal Reports relacionado con CodigodeBarras, y asegurándose de usar la tipografía "LibreBarcode128"
Principales complicaciones al usar Code 128 y cómo solucionarlos:
Código de Barras No Escaneable:
Posibles Causas:
Uso de una fuente incorrecta (no Code 128).
Código demasiado pequeño o muy grande.
Baja calidad de impresión o tinta borrosa.
Margen insuficiente alrededor del código de barras (zona de silencio).
Soluciones:
Asegurarse de que la fuente esté instalada.
Ajustar el tamaño del código: altura mínima recomendada es de 15 mm.
Usar una impresora con buena resolución (mínimo 300 dpi para etiquetas pequeñas).
Dejar margen en blanco alrededor del código de barras (mínimo 3-5 mm).
Escáner No Detecta el Código Correctamente:
Causas:
El escáner no está configurado para leer Code 128.
El código es muy largo y el escáner tiene una limitación.
Soluciones:
Revisar el manual del escáner y activar el soporte para CODE 128 (la mayoría de los escáneres pueden configurarse con códigos de programación).
[POR EDITAR]
Impresión Defectuosa (Líneas Borrosas o Cortadas):
Causas:
Configuración incorrecta de la impresora.
Papel de baja calidad o tinta insuficiente.
Tamaño inadecuado del código de barras.
Soluciones:
Usar una impresora de tinta o térmica con buena resolución (300 dpi o más).
Configurar la calidad de impresión en modo alto o denso.
Verificar que el código de barras tenga suficiente contraste (negro sobre blanco).