Nós, especialistas em TI, geralmente temos a tarefa de imprimir algo simples e único - por exemplo, um nome de usuário e senha para um novo funcionário, um ticket para um instalador ou algo parecido. Gastar papel e cartucho assim é muito caro. Ao mesmo tempo, existem impressoras com impressão em alta velocidade e barata, das quais raramente alguém se lembra, embora as vejamos todos os dias várias vezes. Estamos falando de impressoras térmicas de cheque.

Começarei, talvez, com uma demonstração para que você possa apreciar a velocidade de impressão de 20 cm por segundo:
( - , . :) )
. Citizen CT-S2000, – 58 80 . , , , . , : , , ( !).
80 . 58 . , .. , .

COM- ( USB), Ethernet, WiFi Bluetooth, .
Citizen – Windows, PPD CUPS, Java. , , «ESC/POS».
. Citizen , (!) – - , Windows.
USB COM 25 pin, 9 pin – USB. Windows COM-, .
– ( ) . , , – .

ESC/POS, Python- python-escpos . Orange PI PC Debian, .
lsusb ID , 2730:0fff:
Bus 006 Device 002: ID 2730:0fff Citizen
USB endpoints, ID :
bEndpointAddress 0x81 EP 1 IN
bEndpointAddress 0x02 EP 2 OUT
Python:
from escpos import Usb
p = printer.Usb(0x2730, 0x0fff, 0, 0x81, 0x02)
, , Epson TM-T88III, , , , — . .
– , ESC/POS:
""" , , """
p.set(font='a', align=u'left', height=3)
""" ( DPI!) """
p.image('/home/test/example.png')
""" (- ,
) """
p.text("Hello, world!\n")
""" QR- """
p.qr("https://gbougakov.dev", size=5, center=True)
""" - ( ,
checksum) """
p.barcode('1324354657687','EAN13')
p.barcode('123456', 'CODE39')
""" - –
"""
p.soft_barcode('code39', '123456')
""" : """
p.cut(mode='PART')
""" : """
p.cut()
"""
( RJ-25): """
p.cashdraw(2)
p.cashdraw(5)
– . , , , . – 24 , – .

Raspberry Pi - – . , , , « !» — , .
Finalmente - um exemplo de aplicação. No fim de semana passado, minha escola comemorou seu prĂłximo aniversário (atĂ© o 143Âş) e, por tradição, os alunos do ensino mĂ©dio organizaram vários concursos e entretenimento para alunos do ensino fundamental e mĂ©dio. Eu era responsável pelo Bingo - ao pressionar um botĂŁo, minha impressora imprimia bilhetes para jogadores e os nĂşmeros eram exibidos no quadro. O cĂłdigo QR no tĂquete permitiu verificar se o jogador cruzou os nĂşmeros corretamente durante o jogo:

Para resistĂŞncia a vandalismo, o Orange Pi estava escondido em um pĂłdio de madeira compensada, parafusado firmemente na impressora, e o comando de impressĂŁo de tĂquetes era exibido nos botões conectados ao GPIO. Por segurança, foi adicionada uma tela I2C, na qual o endereço IP do Orange Pi era exibido, para que, no caso, soubĂ©ssemos fazer login via SSH.