Make the structure of the ESC/POS commands less opaque
(The commands are intended to be readable by people who grew up with ANSI escape codes so represent them that way in the code)
This commit is contained in:
parent
9159aafd18
commit
4e1f9db5c7
|
@ -10,87 +10,127 @@ moved to `capabilities` as in `escpos-php by @mike42 <https://github.com/mike42/
|
||||||
:license: GNU GPL v3
|
:license: GNU GPL v3
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# Control characters
|
||||||
|
# as labelled in http://www.novopos.ch/client/EPSON/TM-T20/TM-T20_eng_qr.pdf
|
||||||
|
NUL = '\x00'
|
||||||
|
EOT = '\x04'
|
||||||
|
ENQ = '\x05'
|
||||||
|
DLE = '\x10'
|
||||||
|
DC4 = '\x14'
|
||||||
|
CAN = '\x18'
|
||||||
|
ESC = '\x1b'
|
||||||
|
FS = '\x1c'
|
||||||
|
GS = '\x1d'
|
||||||
|
|
||||||
# Feed control sequences
|
# Feed control sequences
|
||||||
CTL_LF = '\x0a' # Print and line feed
|
CTL_LF = '\n' # Print and line feed
|
||||||
CTL_FF = '\x0c' # Form feed
|
CTL_FF = '\f' # Form feed
|
||||||
CTL_CR = '\x0d' # Carriage return
|
CTL_CR = '\r' # Carriage return
|
||||||
CTL_HT = '\x09' # Horizontal tab
|
CTL_HT = '\t' # Horizontal tab
|
||||||
CTL_SET_HT = '\x1b\x44' # Set horizontal tab positions
|
CTL_SET_HT = ESC + '\x44' # Set horizontal tab positions
|
||||||
CTL_VT = '\x1b\x64\x04' # Vertical tab
|
CTL_VT = '\v' # Vertical tab
|
||||||
|
|
||||||
# Printer hardware
|
# Printer hardware
|
||||||
HW_INIT = '\x1b\x40' # Clear data in buffer and reset modes
|
HW_INIT = ESC + '@' # Clear data in buffer and reset modes
|
||||||
HW_SELECT = '\x1b\x3d\x01' # Printer select
|
HW_SELECT = ESC + '=\x01' # Printer select
|
||||||
HW_RESET = '\x1b\x3f\x0a\x00' # Reset printer hardware
|
|
||||||
# Cash Drawer
|
HW_RESET = ESC + '\x3f\x0a\x00' # Reset printer hardware
|
||||||
CD_KICK_2 = '\x1b\x70\x00' # Sends a pulse to pin 2 []
|
# (TODO: Where is this specified?)
|
||||||
CD_KICK_5 = '\x1b\x70\x01' # Sends a pulse to pin 5 []
|
|
||||||
# Paper
|
# Cash Drawer (ESC p <pin> <on time: 2*ms> <off time: 2*ms>)
|
||||||
PAPER_FULL_CUT = '\x1d\x56\x00' # Full cut paper
|
_CASH_DRAWER = lambda m, t1='', t2='': ESC + 'p' + m + t1 + t2
|
||||||
PAPER_PART_CUT = '\x1d\x56\x01' # Partial cut paper
|
CD_KICK_2 = _CASH_DRAWER('\x00') # Sends a pulse to pin 2 []
|
||||||
|
CD_KICK_5 = _CASH_DRAWER('\x01') # Sends a pulse to pin 5 []
|
||||||
|
|
||||||
|
# Paper Cutter
|
||||||
|
_CUT_PAPER = lambda m: GS + 'V' + m
|
||||||
|
PAPER_FULL_CUT = _CUT_PAPER('\x00') # Full cut paper
|
||||||
|
PAPER_PART_CUT = _CUT_PAPER('\x01') # Partial cut paper
|
||||||
|
|
||||||
# Text format
|
# Text format
|
||||||
TXT_NORMAL = '\x1b\x21\x00' # Normal text
|
# TODO: Acquire the "ESC/POS Application Programming Guide for Paper Roll
|
||||||
TXT_2HEIGHT = '\x1b\x21\x10' # Double height text
|
# Printers" and tidy up this stuff too.
|
||||||
TXT_2WIDTH = '\x1b\x21\x20' # Double width text
|
TXT_NORMAL = ESC + '!\x00' # Normal text
|
||||||
TXT_4SQUARE = '\x1b\x21\x30' # Quad area text
|
TXT_2HEIGHT = ESC + '!\x10' # Double height text
|
||||||
TXT_UNDERL_OFF = '\x1b\x2d\x00' # Underline font OFF
|
TXT_2WIDTH = ESC + '!\x20' # Double width text
|
||||||
TXT_UNDERL_ON = '\x1b\x2d\x01' # Underline font 1-dot ON
|
TXT_4SQUARE = ESC + '!\x30' # Quad area text
|
||||||
TXT_UNDERL2_ON = '\x1b\x2d\x02' # Underline font 2-dot ON
|
TXT_UNDERL_OFF = ESC + '\x2d\x00' # Underline font OFF
|
||||||
TXT_BOLD_OFF = '\x1b\x45\x00' # Bold font OFF
|
TXT_UNDERL_ON = ESC + '\x2d\x01' # Underline font 1-dot ON
|
||||||
TXT_BOLD_ON = '\x1b\x45\x01' # Bold font ON
|
TXT_UNDERL2_ON = ESC + '\x2d\x02' # Underline font 2-dot ON
|
||||||
TXT_FONT_A = '\x1b\x4d\x00' # Font type A
|
TXT_BOLD_OFF = ESC + '\x45\x00' # Bold font OFF
|
||||||
TXT_FONT_B = '\x1b\x4d\x01' # Font type B
|
TXT_BOLD_ON = ESC + '\x45\x01' # Bold font ON
|
||||||
TXT_ALIGN_LT = '\x1b\x61\x00' # Left justification
|
TXT_FONT_A = ESC + '\x4d\x00' # Font type A
|
||||||
TXT_ALIGN_CT = '\x1b\x61\x01' # Centering
|
TXT_FONT_B = ESC + '\x4d\x01' # Font type B
|
||||||
TXT_ALIGN_RT = '\x1b\x61\x02' # Right justification
|
TXT_ALIGN_LT = ESC + '\x61\x00' # Left justification
|
||||||
|
TXT_ALIGN_CT = ESC + '\x61\x01' # Centering
|
||||||
|
TXT_ALIGN_RT = ESC + '\x61\x02' # Right justification
|
||||||
|
|
||||||
# Char code table
|
# Char code table
|
||||||
CHARCODE_PC437 = '\x1b\x74\x00' # USA: Standard Europe
|
CHARCODE_PC437 = ESC + '\x74\x00' # USA: Standard Europe
|
||||||
CHARCODE_JIS = '\x1b\x74\x01' # Japanese Katakana
|
CHARCODE_JIS = ESC + '\x74\x01' # Japanese Katakana
|
||||||
CHARCODE_PC850 = '\x1b\x74\x02' # Multilingual
|
CHARCODE_PC850 = ESC + '\x74\x02' # Multilingual
|
||||||
CHARCODE_PC860 = '\x1b\x74\x03' # Portuguese
|
CHARCODE_PC860 = ESC + '\x74\x03' # Portuguese
|
||||||
CHARCODE_PC863 = '\x1b\x74\x04' # Canadian-French
|
CHARCODE_PC863 = ESC + '\x74\x04' # Canadian-French
|
||||||
CHARCODE_PC865 = '\x1b\x74\x05' # Nordic
|
CHARCODE_PC865 = ESC + '\x74\x05' # Nordic
|
||||||
CHARCODE_WEU = '\x1b\x74\x06' # Simplified Kanji, Hirakana
|
CHARCODE_WEU = ESC + '\x74\x06' # Simplified Kanji, Hirakana
|
||||||
CHARCODE_GREEK = '\x1b\x74\x07' # Simplified Kanji
|
CHARCODE_GREEK = ESC + '\x74\x07' # Simplified Kanji
|
||||||
CHARCODE_HEBREW = '\x1b\x74\x08' # Simplified Kanji
|
CHARCODE_HEBREW = ESC + '\x74\x08' # Simplified Kanji
|
||||||
CHARCODE_PC1252 = '\x1b\x74\x11' # Western European Windows Code Set
|
CHARCODE_PC1252 = ESC + '\x74\x11' # Western European Windows Code Set
|
||||||
CHARCODE_PC866 = '\x1b\x74\x12' # Cirillic #2
|
CHARCODE_PC866 = ESC + '\x74\x12' # Cirillic #2
|
||||||
CHARCODE_PC852 = '\x1b\x74\x13' # Latin 2
|
CHARCODE_PC852 = ESC + '\x74\x13' # Latin 2
|
||||||
CHARCODE_PC858 = '\x1b\x74\x14' # Euro
|
CHARCODE_PC858 = ESC + '\x74\x14' # Euro
|
||||||
CHARCODE_THAI42 = '\x1b\x74\x15' # Thai character code 42
|
CHARCODE_THAI42 = ESC + '\x74\x15' # Thai character code 42
|
||||||
CHARCODE_THAI11 = '\x1b\x74\x16' # Thai character code 11
|
CHARCODE_THAI11 = ESC + '\x74\x16' # Thai character code 11
|
||||||
CHARCODE_THAI13 = '\x1b\x74\x17' # Thai character code 13
|
CHARCODE_THAI13 = ESC + '\x74\x17' # Thai character code 13
|
||||||
CHARCODE_THAI14 = '\x1b\x74\x18' # Thai character code 14
|
CHARCODE_THAI14 = ESC + '\x74\x18' # Thai character code 14
|
||||||
CHARCODE_THAI16 = '\x1b\x74\x19' # Thai character code 16
|
CHARCODE_THAI16 = ESC + '\x74\x19' # Thai character code 16
|
||||||
CHARCODE_THAI17 = '\x1b\x74\x1a' # Thai character code 17
|
CHARCODE_THAI17 = ESC + '\x74\x1a' # Thai character code 17
|
||||||
CHARCODE_THAI18 = '\x1b\x74\x1b' # Thai character code 18
|
CHARCODE_THAI18 = ESC + '\x74\x1b' # Thai character code 18
|
||||||
|
|
||||||
# Barcode format
|
# Barcode format
|
||||||
BARCODE_TXT_OFF = '\x1d\x48\x00' # HRI barcode chars OFF
|
_SET_BARCODE_TXT_POS = lambda n: GS + 'H' + n
|
||||||
BARCODE_TXT_ABV = '\x1d\x48\x01' # HRI barcode chars above
|
BARCODE_TXT_OFF = _SET_BARCODE_TXT_POS('\x00') # HRI barcode chars OFF
|
||||||
BARCODE_TXT_BLW = '\x1d\x48\x02' # HRI barcode chars below
|
BARCODE_TXT_ABV = _SET_BARCODE_TXT_POS('\x01') # HRI barcode chars above
|
||||||
BARCODE_TXT_BTH = '\x1d\x48\x03' # HRI barcode chars both above and below
|
BARCODE_TXT_BLW = _SET_BARCODE_TXT_POS('\x02') # HRI barcode chars below
|
||||||
BARCODE_FONT_A = '\x1d\x66\x00' # Font type A for HRI barcode chars
|
BARCODE_TXT_BTH = _SET_BARCODE_TXT_POS('\x03') # HRI both above and below
|
||||||
BARCODE_FONT_B = '\x1d\x66\x01' # Font type B for HRI barcode chars
|
|
||||||
BARCODE_HEIGHT = '\x1d\x68\x64' # Barcode Height [1-255]
|
_SET_HRI_FONT = lambda n: GS + 'f' + n
|
||||||
BARCODE_WIDTH = '\x1d\x77\x03' # Barcode Width [2-6]
|
BARCODE_FONT_A = _SET_HRI_FONT('\x00') # Font type A for HRI barcode chars
|
||||||
BARCODE_UPC_A = '\x1d\x6b\x00' # Barcode type UPC-A
|
BARCODE_FONT_B = _SET_HRI_FONT('\x01') # Font type B for HRI barcode chars
|
||||||
BARCODE_UPC_E = '\x1d\x6b\x01' # Barcode type UPC-E
|
|
||||||
BARCODE_EAN13 = '\x1d\x6b\x02' # Barcode type EAN13
|
BARCODE_HEIGHT = GS + 'h' + '\x64' # Barcode Height [1-255]
|
||||||
BARCODE_EAN8 = '\x1d\x6b\x03' # Barcode type EAN8
|
BARCODE_WIDTH = GS + 'w' + '\x03' # Barcode Width [2-6]
|
||||||
BARCODE_CODE39 = '\x1d\x6b\x04' # Barcode type CODE39
|
|
||||||
BARCODE_ITF = '\x1d\x6b\x05' # Barcode type ITF
|
#NOTE: This isn't actually an ESC/POS command. It's the common prefix to the
|
||||||
BARCODE_NW7 = '\x1d\x6b\x06' # Barcode type NW7
|
# two "print bar code" commands:
|
||||||
|
# - "GS k <type as integer> <data> NUL"
|
||||||
|
# - "GS k <type as letter> <data length> <data>"
|
||||||
|
# The latter command supports more barcode types
|
||||||
|
_SET_BARCODE_TYPE = lambda m: GS + 'k' + m
|
||||||
|
BARCODE_UPC_A = _SET_BARCODE_TYPE('\x00') # Barcode type UPC-A
|
||||||
|
BARCODE_UPC_E = _SET_BARCODE_TYPE('\x01') # Barcode type UPC-E
|
||||||
|
BARCODE_EAN13 = _SET_BARCODE_TYPE('\x02') # Barcode type EAN13
|
||||||
|
BARCODE_EAN8 = _SET_BARCODE_TYPE('\x03') # Barcode type EAN8
|
||||||
|
BARCODE_CODE39 = _SET_BARCODE_TYPE('\x04') # Barcode type CODE39
|
||||||
|
BARCODE_ITF = _SET_BARCODE_TYPE('\x05') # Barcode type ITF
|
||||||
|
BARCODE_NW7 = _SET_BARCODE_TYPE('\x06') # Barcode type NW7
|
||||||
|
|
||||||
# Image format
|
# Image format
|
||||||
S_RASTER_N = '\x1d\x76\x30\x00' # Set raster image normal size
|
# NOTE: _PRINT_RASTER_IMG is the obsolete ESC/POS "print raster bit image"
|
||||||
S_RASTER_2W = '\x1d\x76\x30\x01' # Set raster image double width
|
# command. The constants include a fragment of the data's header.
|
||||||
S_RASTER_2H = '\x1d\x76\x30\x02' # Set raster image double height
|
_PRINT_RASTER_IMG = lambda data: GS + 'v0' + data
|
||||||
S_RASTER_Q = '\x1d\x76\x30\x03' # Set raster image quadruple
|
S_RASTER_N = _PRINT_RASTER_IMG('\x00') # Set raster image normal size
|
||||||
|
S_RASTER_2W = _PRINT_RASTER_IMG('\x01') # Set raster image double width
|
||||||
|
S_RASTER_2H = _PRINT_RASTER_IMG('\x02') # Set raster image double height
|
||||||
|
S_RASTER_Q = _PRINT_RASTER_IMG('\x03') # Set raster image quadruple
|
||||||
|
|
||||||
# Printing Density
|
# Printing Density
|
||||||
PD_N50 = '\x1d\x7c\x00' # Printing Density -50%
|
PD_N50 = GS + '\x7c\x00' # Printing Density -50%
|
||||||
PD_N37 = '\x1d\x7c\x01' # Printing Density -37.5%
|
PD_N37 = GS + '\x7c\x01' # Printing Density -37.5%
|
||||||
PD_N25 = '\x1d\x7c\x02' # Printing Density -25%
|
PD_N25 = GS + '\x7c\x02' # Printing Density -25%
|
||||||
PD_N12 = '\x1d\x7c\x03' # Printing Density -12.5%
|
PD_N12 = GS + '\x7c\x03' # Printing Density -12.5%
|
||||||
PD_0 = '\x1d\x7c\x04' # Printing Density 0%
|
PD_0 = GS + '\x7c\x04' # Printing Density 0%
|
||||||
PD_P50 = '\x1d\x7c\x08' # Printing Density +50%
|
PD_P50 = GS + '\x7c\x08' # Printing Density +50%
|
||||||
PD_P37 = '\x1d\x7c\x07' # Printing Density +37.5%
|
PD_P37 = GS + '\x7c\x07' # Printing Density +37.5%
|
||||||
PD_P25 = '\x1d\x7c\x06' # Printing Density +25%
|
PD_P25 = GS + '\x7c\x06' # Printing Density +25%
|
||||||
PD_P12 = '\x1d\x7c\x05' # Printing Density +12.5%
|
PD_P12 = GS + '\x7c\x05' # Printing Density +12.5%
|
||||||
|
|
Loading…
Reference in New Issue