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.
![](https://habrastorage.org/webt/cn/xz/wl/cnxzwl9axsgpzkwe7ffc916m2r8.png)
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 . , .. , .
![](https://habrastorage.org/webt/om/gq/h8/omgqh8sv-owk4y02kzmf2epsm3k.png)
COM- ( USB), Ethernet, WiFi Bluetooth, .
Citizen – Windows, PPD CUPS, Java. , , «ESC/POS».
. Citizen , (!) – - , Windows.
USB COM 25 pin, 9 pin – USB. Windows COM-, .
– ( ) . , , – .
![](https://habrastorage.org/webt/bm/vl/z5/bmvlz5w7tgztgtkuaiehv7qqffe.png)
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 , – .
![](https://habrastorage.org/webt/fl/yj/oi/flyjoi6utsdogrun5gj4ksho0di.png)
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:
![](https://habrastorage.org/webt/n1/3a/zb/n13azbda_konmwmibflra_g6vgu.jpeg)
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.