As impressoras de etiquetas podem suportar linguagens de programação como TSPL, ZPL, EPL e assim por diante. Hoje vamos fazer uma visão geral da linguagem TSPL. Podemos construir etiquetas usando comandos TSPL como TEXT
, BARCODE
e QRCODE
. Por exemplo, se queremos imprimir uma etiqueta com texto e código de barras, usamos esses comandos com suas propriedades como posição ou tamanho e enviamos esses comandos para a impressora de etiquetas por Bluetooth ou conexão serial.
No lado esquerdo, você pode ver os comandos TSPL e a etiqueta impressa no lado direito. Você pode encontrar todos os comandos disponíveis aqui , mas vamos ver alguns deles para entender como usar o TSPL.
Seja um TEXT
, BARCODE
ou BITMAP
, geralmente as coordenadas e o tamanho são em pontos. O número de pontos por polegada depende do DPI da impressora.
Por exemplo, se a impressora estiver
De acordo com isso, se quisermos adicionar um código de barras com altura de 10 mm e a impressora for 203DPI, devemos definir a altura como 80 (10 mm x 8 = 80 pontos).
Precisamos informar à impressora o tamanho da etiqueta assim:
SIZE 4,1
Aqui dissemos que o tamanho da etiqueta é 4x1 polegadas.
Também podemos configurá-lo em um sistema métrico (mm):
SIZE 50 mm,25 mm
Podemos definir o intervalo que é o espaço entre os rótulos ( GAP m,n
).
GAP 0,0
Aqui, a lacuna é de zero polegadas, o que significa que é uma etiqueta contínua.
Podemos usar o comando TEXT
para imprimir um texto na etiqueta. Podemos fornecer a posição, tamanho da fonte, rotação e assim por diante:
TEXT x,y,“font”,rotation,x-multiplication,y-multiplication,[alignment,] “content”
Parâmetro | Descrição |
---|---|
x, y | coordenada x e y |
Fonte | Geralmente, podemos definir 1-8 (1-pequeno, 2-maior… 8-maior) |
rotação | 0, 90, 180, 270 no sentido horário |
x e y-multiplicação | Fator de escala 1-10 |
alinhamento | 1-esquerda, 2-centro, 3-direita (opcional) |
contente | conteúdo de texto |
Exemplos de comandos | Resultado |
---|---|
|
Podemos adicionar um código de barras à etiqueta com o comando BARCODE
:
BARCODE X,Y,”code type”,height,human-readable,rotation,narrow,wide,[alignment,]”content”
Parâmetro | Descrição |
---|---|
x, y | coordenada x e y |
tipo de código | 128, EAN128, EAN13… |
altura | Altura em pontos |
legível por humanos | 0 - o valor do código de barras (texto) não é visível |
rotação | 0, 90, 180, 270 no sentido horário |
estreito | Largura do elemento estreito em pontos |
largo | Largura do elemento largo em pontos |
alinhamento | 1-esquerda, 2-centro, 3-direita (opcional) |
contente | Conteúdo do código de barras |
Exemplos 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:
Depois de construir a etiqueta, precisamos informar à impressora que a etiqueta está pronta para ser impressa. Usamos o comando PRINT m[,n]
para fazer isso:
Comandos | Descrição |
---|---|
| - Defina o tamanho da etiqueta |
Imprime três etiquetas; uma etiqueta com “Texto 1” e duas etiquetas com “Texto 2”.
Adicionamos o comando END
no final, para informar à impressora que terminamos de imprimir. Sem esse comando, a impressora pode não imprimir a última imagem no buffer.
Os comandos gerados podem ser enviados para a impressora via Serial ou Bluetooth. Para demonstrar isso, criei um código simples usando Node.js. Usei o pacote ' usb ' para conectar e enviar os comandos (No Windows, pode ser necessário instalar um driver, para saber mais visite a página do pacote ).
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(); });
E o resultado:
Tive que reunir informações peça por peça sobre a impressão de etiquetas quando implementei esse recurso no projeto POS & Inventory da Alto . Então, escrevi este artigo na esperança de que seja o ponto de partida para alguém em uma situação semelhante.
Sem guerra! ✋🏽