187 lines
7.3 KiB
Python
187 lines
7.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
""" ESC/POS Commands (Constants) """
|
|
|
|
# Feed control sequences
|
|
CTL_LF = '\x0a' # Print and line feed
|
|
CTL_FF = '\x0c' # Form feed
|
|
CTL_CR = '\x0d' # Carriage return
|
|
CTL_HT = '\x09' # Horizontal tab
|
|
CTL_VT = '\x0b' # Vertical tab
|
|
|
|
# RT Status commands
|
|
DLE_EOT_PRINTER = '\x10\x04\x01' # Transmit printer status
|
|
DLE_EOT_OFFLINE = '\x10\x04\x02'
|
|
DLE_EOT_ERROR = '\x10\x04\x03'
|
|
DLE_EOT_PAPER = '\x10\x04\x04'
|
|
|
|
# Printer hardware
|
|
HW_INIT = '\x1b\x40' # Clear data in buffer and reset modes
|
|
HW_SELECT = '\x1b\x3d\x01' # Printer select
|
|
HW_RESET = '\x1b\x3f\x0a\x00' # Reset printer hardware
|
|
# Cash Drawer
|
|
CD_KICK_2 = '\x1b\x70\x00' # Sends a pulse to pin 2 []
|
|
CD_KICK_5 = '\x1b\x70\x01' # Sends a pulse to pin 5 []
|
|
# Paper
|
|
PAPER_FULL_CUT = '\x1d\x56\x00' # Full cut paper
|
|
PAPER_PART_CUT = '\x1d\x56\x01' # Partial cut paper
|
|
# Text format
|
|
TXT_NORMAL = '\x1b\x21\x00' # Normal text
|
|
TXT_2HEIGHT = '\x1b\x21\x10' # Double height text
|
|
TXT_2WIDTH = '\x1b\x21\x20' # Double width text
|
|
TXT_DOUBLE = '\x1b\x21\x30' # Double height & Width
|
|
TXT_UNDERL_OFF = '\x1b\x2d\x00' # Underline font OFF
|
|
TXT_UNDERL_ON = '\x1b\x2d\x01' # Underline font 1-dot ON
|
|
TXT_UNDERL2_ON = '\x1b\x2d\x02' # Underline font 2-dot ON
|
|
TXT_BOLD_OFF = '\x1b\x45\x00' # Bold font OFF
|
|
TXT_BOLD_ON = '\x1b\x45\x01' # Bold font ON
|
|
TXT_FONT_A = '\x1b\x4d\x00' # Font type A
|
|
TXT_FONT_B = '\x1b\x4d\x01' # Font type B
|
|
TXT_ALIGN_LT = '\x1b\x61\x00' # Left justification
|
|
TXT_ALIGN_CT = '\x1b\x61\x01' # Centering
|
|
TXT_ALIGN_RT = '\x1b\x61\x02' # Right justification
|
|
TXT_COLOR_BLACK = '\x1b\x72\x00' # Default Color
|
|
TXT_COLOR_RED = '\x1b\x72\x01' # Alternative Color ( Usually Red )
|
|
|
|
# Text Encoding
|
|
|
|
TXT_ENC_PC437 = '\x1b\x74\x00' # PC437 USA
|
|
TXT_ENC_KATAKANA= '\x1b\x74\x01' # KATAKANA (JAPAN)
|
|
TXT_ENC_PC850 = '\x1b\x74\x02' # PC850 Multilingual
|
|
TXT_ENC_PC860 = '\x1b\x74\x03' # PC860 Portuguese
|
|
TXT_ENC_PC863 = '\x1b\x74\x04' # PC863 Canadian-French
|
|
TXT_ENC_PC865 = '\x1b\x74\x05' # PC865 Nordic
|
|
TXT_ENC_KANJI6 = '\x1b\x74\x06' # One-pass Kanji, Hiragana
|
|
TXT_ENC_KANJI7 = '\x1b\x74\x07' # One-pass Kanji
|
|
TXT_ENC_KANJI8 = '\x1b\x74\x08' # One-pass Kanji
|
|
TXT_ENC_PC851 = '\x1b\x74\x0b' # PC851 Greek
|
|
TXT_ENC_PC853 = '\x1b\x74\x0c' # PC853 Turkish
|
|
TXT_ENC_PC857 = '\x1b\x74\x0d' # PC857 Turkish
|
|
TXT_ENC_PC737 = '\x1b\x74\x0e' # PC737 Greek
|
|
TXT_ENC_8859_7 = '\x1b\x74\x0f' # ISO8859-7 Greek
|
|
TXT_ENC_WPC1252 = '\x1b\x74\x10' # WPC1252
|
|
TXT_ENC_PC866 = '\x1b\x74\x11' # PC866 Cyrillic #2
|
|
TXT_ENC_PC852 = '\x1b\x74\x12' # PC852 Latin2
|
|
TXT_ENC_PC858 = '\x1b\x74\x13' # PC858 Euro
|
|
TXT_ENC_KU42 = '\x1b\x74\x14' # KU42 Thai
|
|
TXT_ENC_TIS11 = '\x1b\x74\x15' # TIS11 Thai
|
|
TXT_ENC_TIS18 = '\x1b\x74\x1a' # TIS18 Thai
|
|
TXT_ENC_TCVN3 = '\x1b\x74\x1e' # TCVN3 Vietnamese
|
|
TXT_ENC_TCVN3B = '\x1b\x74\x1f' # TCVN3 Vietnamese
|
|
TXT_ENC_PC720 = '\x1b\x74\x20' # PC720 Arabic
|
|
TXT_ENC_WPC775 = '\x1b\x74\x21' # WPC775 Baltic Rim
|
|
TXT_ENC_PC855 = '\x1b\x74\x22' # PC855 Cyrillic
|
|
TXT_ENC_PC861 = '\x1b\x74\x23' # PC861 Icelandic
|
|
TXT_ENC_PC862 = '\x1b\x74\x24' # PC862 Hebrew
|
|
TXT_ENC_PC864 = '\x1b\x74\x25' # PC864 Arabic
|
|
TXT_ENC_PC869 = '\x1b\x74\x26' # PC869 Greek
|
|
TXT_ENC_PC936 = '\x1C\x21\x00' # PC936 GBK(Guobiao Kuozhan)
|
|
TXT_ENC_8859_2 = '\x1b\x74\x27' # ISO8859-2 Latin2
|
|
TXT_ENC_8859_9 = '\x1b\x74\x28' # ISO8859-2 Latin9
|
|
TXT_ENC_PC1098 = '\x1b\x74\x29' # PC1098 Farsi
|
|
TXT_ENC_PC1118 = '\x1b\x74\x2a' # PC1118 Lithuanian
|
|
TXT_ENC_PC1119 = '\x1b\x74\x2b' # PC1119 Lithuanian
|
|
TXT_ENC_PC1125 = '\x1b\x74\x2c' # PC1125 Ukrainian
|
|
TXT_ENC_WPC1250 = '\x1b\x74\x2d' # WPC1250 Latin2
|
|
TXT_ENC_WPC1251 = '\x1b\x74\x2e' # WPC1251 Cyrillic
|
|
TXT_ENC_WPC1253 = '\x1b\x74\x2f' # WPC1253 Greek
|
|
TXT_ENC_WPC1254 = '\x1b\x74\x30' # WPC1254 Turkish
|
|
TXT_ENC_WPC1255 = '\x1b\x74\x31' # WPC1255 Hebrew
|
|
TXT_ENC_WPC1256 = '\x1b\x74\x32' # WPC1256 Arabic
|
|
TXT_ENC_WPC1257 = '\x1b\x74\x33' # WPC1257 Baltic Rim
|
|
TXT_ENC_WPC1258 = '\x1b\x74\x34' # WPC1258 Vietnamese
|
|
TXT_ENC_KZ1048 = '\x1b\x74\x35' # KZ-1048 Kazakhstan
|
|
|
|
TXT_ENC_KATAKANA_MAP = {
|
|
# Maps UTF-8 Katakana symbols to KATAKANA Page Codes
|
|
|
|
# Half-Width Katakanas
|
|
'\xef\xbd\xa1':'\xa1', # 。
|
|
'\xef\xbd\xa2':'\xa2', # 「
|
|
'\xef\xbd\xa3':'\xa3', # 」
|
|
'\xef\xbd\xa4':'\xa4', # 、
|
|
'\xef\xbd\xa5':'\xa5', # ・
|
|
|
|
'\xef\xbd\xa6':'\xa6', # ヲ
|
|
'\xef\xbd\xa7':'\xa7', # ァ
|
|
'\xef\xbd\xa8':'\xa8', # ィ
|
|
'\xef\xbd\xa9':'\xa9', # ゥ
|
|
'\xef\xbd\xaa':'\xaa', # ェ
|
|
'\xef\xbd\xab':'\xab', # ォ
|
|
'\xef\xbd\xac':'\xac', # ャ
|
|
'\xef\xbd\xad':'\xad', # ュ
|
|
'\xef\xbd\xae':'\xae', # ョ
|
|
'\xef\xbd\xaf':'\xaf', # ッ
|
|
'\xef\xbd\xb0':'\xb0', # ー
|
|
'\xef\xbd\xb1':'\xb1', # ア
|
|
'\xef\xbd\xb2':'\xb2', # イ
|
|
'\xef\xbd\xb3':'\xb3', # ウ
|
|
'\xef\xbd\xb4':'\xb4', # エ
|
|
'\xef\xbd\xb5':'\xb5', # オ
|
|
'\xef\xbd\xb6':'\xb6', # カ
|
|
'\xef\xbd\xb7':'\xb7', # キ
|
|
'\xef\xbd\xb8':'\xb8', # ク
|
|
'\xef\xbd\xb9':'\xb9', # ケ
|
|
'\xef\xbd\xba':'\xba', # コ
|
|
'\xef\xbd\xbb':'\xbb', # サ
|
|
'\xef\xbd\xbc':'\xbc', # シ
|
|
'\xef\xbd\xbd':'\xbd', # ス
|
|
'\xef\xbd\xbe':'\xbe', # セ
|
|
'\xef\xbd\xbf':'\xbf', # ソ
|
|
'\xef\xbe\x80':'\xc0', # タ
|
|
'\xef\xbe\x81':'\xc1', # チ
|
|
'\xef\xbe\x82':'\xc2', # ツ
|
|
'\xef\xbe\x83':'\xc3', # テ
|
|
'\xef\xbe\x84':'\xc4', # ト
|
|
'\xef\xbe\x85':'\xc5', # ナ
|
|
'\xef\xbe\x86':'\xc6', # ニ
|
|
'\xef\xbe\x87':'\xc7', # ヌ
|
|
'\xef\xbe\x88':'\xc8', # ネ
|
|
'\xef\xbe\x89':'\xc9', # ノ
|
|
'\xef\xbe\x8a':'\xca', # ハ
|
|
'\xef\xbe\x8b':'\xcb', # ヒ
|
|
'\xef\xbe\x8c':'\xcc', # フ
|
|
'\xef\xbe\x8d':'\xcd', # ヘ
|
|
'\xef\xbe\x8e':'\xce', # ホ
|
|
'\xef\xbe\x8f':'\xcf', # マ
|
|
'\xef\xbe\x90':'\xd0', # ミ
|
|
'\xef\xbe\x91':'\xd1', # ム
|
|
'\xef\xbe\x92':'\xd2', # メ
|
|
'\xef\xbe\x93':'\xd3', # モ
|
|
'\xef\xbe\x94':'\xd4', # ヤ
|
|
'\xef\xbe\x95':'\xd5', # ユ
|
|
'\xef\xbe\x96':'\xd6', # ヨ
|
|
'\xef\xbe\x97':'\xd7', # ラ
|
|
'\xef\xbe\x98':'\xd8', # リ
|
|
'\xef\xbe\x99':'\xd9', # ル
|
|
'\xef\xbe\x9a':'\xda', # レ
|
|
'\xef\xbe\x9b':'\xdb', # ロ
|
|
'\xef\xbe\x9c':'\xdc', # ワ
|
|
'\xef\xbe\x9d':'\xdd', # ン
|
|
|
|
'\xef\xbe\x9e':'\xde', # ゙
|
|
'\xef\xbe\x9f':'\xdf', # ゚
|
|
}
|
|
|
|
# Barcod format
|
|
BARCODE_TXT_OFF = '\x1d\x48\x00' # HRI barcode chars OFF
|
|
BARCODE_TXT_ABV = '\x1d\x48\x01' # HRI barcode chars above
|
|
BARCODE_TXT_BLW = '\x1d\x48\x02' # HRI barcode chars below
|
|
BARCODE_TXT_BTH = '\x1d\x48\x03' # HRI barcode chars both above and below
|
|
BARCODE_FONT_A = '\x1d\x66\x00' # Font type A for HRI barcode chars
|
|
BARCODE_FONT_B = '\x1d\x66\x01' # Font type B for HRI barcode chars
|
|
BARCODE_HEIGHT = '\x1d\x68\x64' # Barcode Height [1-255]
|
|
BARCODE_WIDTH = '\x1d\x77\x03' # Barcode Width [2-6]
|
|
BARCODE_UPC_A = '\x1d\x6b\x00' # Barcode type UPC-A
|
|
BARCODE_UPC_E = '\x1d\x6b\x01' # Barcode type UPC-E
|
|
BARCODE_EAN13 = '\x1d\x6b\x02' # Barcode type EAN13
|
|
BARCODE_EAN8 = '\x1d\x6b\x03' # Barcode type EAN8
|
|
BARCODE_CODE39 = '\x1d\x6b\x04' # Barcode type CODE39
|
|
BARCODE_ITF = '\x1d\x6b\x05' # Barcode type ITF
|
|
BARCODE_NW7 = '\x1d\x6b\x06' # Barcode type NW7
|
|
# Image format
|
|
S_RASTER_N = '\x1d\x76\x30\x00' # Set raster image normal size
|
|
S_RASTER_2W = '\x1d\x76\x30\x01' # Set raster image double width
|
|
S_RASTER_2H = '\x1d\x76\x30\x02' # Set raster image double height
|
|
S_RASTER_Q = '\x1d\x76\x30\x03' # Set raster image quadruple
|