Kami, spesialis IT, sering kali memiliki tugas untuk mencetak sesuatu yang sederhana dan satu kali - misalnya, nama pengguna dan kata sandi untuk karyawan baru, tiket untuk pemasang, atau sesuatu seperti itu. Menghabiskan kertas dan kartrij seperti itu sangat mahal. Pada saat yang sama, ada printer dengan pencetakan kecepatan tinggi yang sangat murah, yang jarang diingat oleh siapa pun, meskipun kita sering melihatnya setiap hari. Kita berbicara tentang memeriksa printer termal.

Saya akan mulai, mungkin, dengan demo sehingga Anda dapat menghargai kecepatan cetak 20 cm per detik:
( - , . :) )
. 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 - β . , , , Β« !Β» β , .
Akhirnya - contoh aplikasi. Akhir pekan lalu, sekolah saya merayakan ulang tahun berikutnya (sudah yang ke 143), dan secara tradisi, siswa sekolah menengah atas mengadakan berbagai kontes dan hiburan untuk tingkat sekolah dasar dan lulusan. Saya bertanggung jawab atas Bingo - dengan menekan tombol, printer saya mencetak tiket untuk pemain, dan nomor ditampilkan di papan tulis. Kode QR pada tiket memungkinkan untuk memeriksa apakah pemain mencoret angka dengan benar selama pertandingan:

Untuk resistensi perusak, Orange Pi disembunyikan di podium kayu lapis, disekrup erat ke printer, dan perintah pencetakan tiket ditampilkan pada tombol yang terhubung ke GPIO. Untuk keamanan, layar I2C ditambahkan, di mana alamat IP Orange Pi ditampilkan, dalam hal ini, untuk mengetahui cara mengaksesnya melalui SSH.