Las impresoras de etiquetas pueden admitir lenguajes de programación como TSPL, ZPL, EPL, etc. Hoy vamos a repasar el lenguaje TSPL. Podemos construir etiquetas usando comandos TSPL como TEXT
, BARCODE
y QRCODE
. Por ejemplo, si queremos imprimir una etiqueta con un texto y un código de barras, usamos estos comandos con sus propiedades como posición o tamaño, y enviamos estos comandos a la impresora de etiquetas a través de Bluetooth o una conexión en serie.
En el lado izquierdo, puede ver los comandos TSPL y la etiqueta impresa en el lado derecho. Puede encontrar todos los comandos disponibles aquí , pero veamos algunos de ellos para entender cómo usar el TSPL.
Ya sea un TEXT
, CÓDIGO DE BARCODE
o BITMAP
, generalmente, las coordenadas y el tamaño están en puntos. El número de puntos por pulgada depende del DPI de la impresora.
Por ejemplo, si la impresora está
De acuerdo con esto, si queremos agregar un código de barras con una altura de 10 mm y la impresora es de 203 DPI, entonces debemos establecer la altura en 80 (10 mm x 8 = 80 puntos).
Necesitamos decirle a la impresora el tamaño de la etiqueta de esta manera:
SIZE 4,1
Aquí dijimos que el tamaño de la etiqueta es de 4x1 pulgadas.
También podemos configurarlo en un sistema métrico (mm):
SIZE 50 mm,25 mm
Podemos establecer el espacio que es el espacio entre las etiquetas ( GAP m,n
).
GAP 0,0
Aquí el espacio es de cero pulgadas, lo que significa que es una etiqueta continua.
Podemos usar el comando TEXT
para imprimir un texto en la etiqueta. Podemos dar la posición, el tamaño de fuente, la rotación, etc.:
TEXT x,y,“font”,rotation,x-multiplication,y-multiplication,[alignment,] “content”
Parámetro | Descripción |
---|---|
x, y | coordenada x e y |
fuente | Generalmente, podemos configurar 1-8 (1-pequeño, 2-más grande... 8-más grande) |
rotación | 0, 90, 180, 270 en el sentido de las agujas del reloj |
x e y-multiplicación | Factor de escala 1-10 |
alineación | 1 izquierda, 2 centro, 3 derecha (opcional) |
contenido | Contenido del texto |
Comandos de muestra | Resultado |
---|---|
|
Podemos agregar un código de barras a la etiqueta con el comando BARCODE
:
BARCODE X,Y,”code type”,height,human-readable,rotation,narrow,wide,[alignment,]”content”
Parámetro | Descripción |
---|---|
x, y | coordenada x e y |
tipo de código | 128, EAN128, EAN13… |
altura | Altura en puntos |
legible por humanos | 0 - el valor del código de barras (texto) no es visible |
rotación | 0, 90, 180, 270 en el sentido de las agujas del reloj |
angosto | Ancho del elemento estrecho en puntos |
amplio | Ancho del elemento ancho en puntos |
alineación | 1 izquierda, 2 centro, 3 derecha (opcional) |
contenido | Contenido del código de barras |
Ejemplos de comandos:
TEXT 10,10, "2",0,1,1, "Human readable alignment"
BARCODE 10,50, "128",100,1,0,2,2,"left"
BARCODE 310,50, "128",100,2,0,2,2,"center"
BARCODE 610,50, "128",100,3,0,2,2,"right"
Resultado:
Después de construir la etiqueta, debemos decirle a la impresora que la etiqueta está lista para imprimir. Usamos el comando PRINT m[,n]
para hacer esto:
Comandos | Descripción |
---|---|
| - Establecer el tamaño de la etiqueta |
Imprime tres etiquetas; una etiqueta con "Texto 1" y dos etiquetas con "Texto 2".
Agregamos el comando END
al final, para decirle a la impresora que hemos terminado de imprimir. Sin este comando, es posible que la impresora no imprima la última imagen en el búfer.
Los comandos generados se pueden enviar a la impresora a través de Serial o Bluetooth. Para demostrar esto, creé un código simple usando Node.js. Utilicé el paquete ' usb ' para conectar y enviar los comandos (en Windows, es posible que deba instalar un controlador; para obtener más información, visite la página del paquete ).
const usb = require('usb'); const cmds = [ 'SIZE 48 mm,25 mm', 'CLS', 'TEXT 10,10,"4",0,1,1,"HackerNoon"', 'BARCODE 10,60,"128",90,1,0,2,2,"altospos.com"', 'PRINT 1', 'END', ]; // you can get all available devices with usb.getDeviceList() let device = usb.findByIds(/*vid*/8137, /*pid*/8214); device.open(); device.interfaces[0].claim(); const outEndpoint = device.interfaces[0].endpoints.find(e => e.direction === 'out'); outEndpoint.transferType = 2; outEndpoint.transfer(Buffer.from(cmds.join('\r\n')), (err) => { device.close(); });
Y el resultado:
Tuve que recopilar información pieza por pieza sobre la impresión de etiquetas cuando implementé esta función en el proyecto POS e inventario de Alto . Así que escribí este artículo con la esperanza de que sea el punto de partida para alguien en una situación similar.
¡No a la guerra! ✋🏽