Add support for slip/cheque dot matrix printers

This commit is contained in:
Mathieu Poussin 2022-07-05 20:29:05 +02:00 committed by Mathieu Poussin
parent 5e80764ff5
commit 028fdeed6a
3 changed files with 51 additions and 0 deletions

View File

@ -1,9 +1,11 @@
Ahmed Tahri Ahmed Tahri
akeonly akeonly
Alejandro Hernández
Alexander Bougakov Alexander Bougakov
Alex Debiasio Alex Debiasio
Asuki Kono Asuki Kono
belono belono
B. Howell
Brian Brian
Christoph Heuel Christoph Heuel
Cody (Quantified Code Bot) Cody (Quantified Code Bot)
@ -11,6 +13,7 @@ csoft2k
Curtis // mashedkeyboard Curtis // mashedkeyboard
Davis Goglin Davis Goglin
Dean Rispin Dean Rispin
dependabot[bot]
Dmytro Katyukha Dmytro Katyukha
Gerard Marull-Paretas Gerard Marull-Paretas
Hark Hark
@ -21,6 +24,7 @@ Kristi
ldos ldos
Lucy Linder Lucy Linder
Manuel F Martinez Manuel F Martinez
Mathieu Poussin
Maximilian Wagenbach Maximilian Wagenbach
Michael Billington Michael Billington
Michael Elsdörfer Michael Elsdörfer

View File

@ -77,6 +77,12 @@ LINE_DISPLAY_CLOSE = ESC + b"\x3d\x01"
SHEET_SLIP_MODE = ESC + b"\x63\x30\x04" # slip paper SHEET_SLIP_MODE = ESC + b"\x63\x30\x04" # slip paper
SHEET_ROLL_MODE = ESC + b"\x63\x30\x01" # paper roll SHEET_ROLL_MODE = ESC + b"\x63\x30\x01" # paper roll
# Slip specific codes
SLIP_EJECT = ESC + b"\x4b\xc0" # Eject the slip or cheque
SLIP_SELECT = FS # Select the slip station as default station
SLIP_SET_WAIT_TIME = ESC + b"\x1b\x66" # Set timeout waiting for a slip/cheque to be inserted
SLIP_PRINT_AND_EJECT = b"\x0c" # Print the buffer and eject (after waiting for the paper to be inserted)
# Text format # Text format
# TODO: Acquire the "ESC/POS Application Programming Guide for Paper Roll # TODO: Acquire the "ESC/POS Application Programming Guide for Paper Roll
# Printers" and tidy up this stuff too. # Printers" and tidy up this stuff too.

View File

@ -30,6 +30,11 @@ from .constants import (
QR_ECLEVEL_M, QR_ECLEVEL_M,
QR_ECLEVEL_H, QR_ECLEVEL_H,
QR_ECLEVEL_Q, QR_ECLEVEL_Q,
SHEET_ROLL_MODE,
SHEET_SLIP_MODE,
SLIP_PRINT_AND_EJECT,
SLIP_SELECT,
SLIP_EJECT
) )
from .constants import ( from .constants import (
QR_MODEL_1, QR_MODEL_1,
@ -1015,6 +1020,42 @@ class Escpos(object):
if status[0] & RT_MASK_PAPER == RT_MASK_PAPER: if status[0] & RT_MASK_PAPER == RT_MASK_PAPER:
return 2 return 2
"""
Select where to print to
Print to the thermal printer by default (ROLL) or
print to the slip dot matrix printer if supported (SLIP)
"""
def target(self, type='ROLL'):
if type.upper() == 'ROLL':
self._raw(SHEET_ROLL_MODE)
elif type.upper() == 'SLIP':
self._raw(SHEET_SLIP_MODE)
else:
raise ValueError("Unsupported target")
"""
Eject the slip/cheque
"""
def eject_slip(self):
self._raw(SLIP_EJECT)
"""
Prints data from the buffer to the slip station and if the paper sensor is covered,
reverses the slip out the front of the printer far enough to be accessible to the operator.
The impact station opens the platen in all cases.
"""
def print_and_eject_slip(self):
self._raw(SLIP_PRINT_AND_EJECT)
"""
Selects the Slip Station for all functions.
The receipt station is the default setting after the printer is initialized or
the Clear Printer (0x10) command is received
"""
def use_slip_only(self):
self._raw(SLIP_SELECT)
class EscposIO(object): class EscposIO(object):
"""ESC/POS Printer IO object """ESC/POS Printer IO object