From ee3fa52bbe1933a593ad765ca2bc008f0375b0df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20van=20der=20Essen?= Date: Fri, 24 Jan 2014 18:31:19 +0100 Subject: [PATCH] [IMP] hw_escpos: codepage switch sequence for all encodings supported by the TM-T20 printer bzr revid: fva@openerp.com-20140124173119-naktj3usjuapb9sf --- addons/hw_escpos/controllers/main.py | 8 +++++-- addons/hw_escpos/escpos/constants.py | 32 ++++++++++++++++++++++++++++ addons/hw_escpos/escpos/escpos.py | 16 ++++++++++++-- 3 files changed, 52 insertions(+), 4 deletions(-) diff --git a/addons/hw_escpos/controllers/main.py b/addons/hw_escpos/controllers/main.py index e8915a48fed..4fde44de4b3 100644 --- a/addons/hw_escpos/controllers/main.py +++ b/addons/hw_escpos/controllers/main.py @@ -49,19 +49,23 @@ class EscposDriver(hw_proxy.Proxy): @http.route('/hw_proxy/open_cashbox', type='json', auth='admin') def open_cashbox(self): - print 'ESC/POS: OPEN CASHBOX' + _logger.info('ESC/POS: OPEN CASHBOX') eprint = self.get_escpos_printer() if eprint != None: eprint.cashdraw(2) eprint.cashdraw(5) + else: + _logger.error('ESC/POS: OPEN CASHBOX: could not find printer') @http.route('/hw_proxy/print_receipt', type='json', auth='admin') def print_receipt(self, receipt): - print 'ESC/POS: PRINT RECEIPT' + _logger.info('ESC/POS: PRINT RECEIPT') eprint = self.get_escpos_printer() if eprint != None: self.print_receipt_body(eprint,receipt) eprint.cut() + else: + _logger.error('ESC/POS: PRINT RECEIPT: could not find printer') def print_receipt_body(self,eprint,receipt): diff --git a/addons/hw_escpos/escpos/constants.py b/addons/hw_escpos/escpos/constants.py index ebffc62729e..723c67013f0 100644 --- a/addons/hw_escpos/escpos/constants.py +++ b/addons/hw_escpos/escpos/constants.py @@ -44,10 +44,42 @@ 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_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 diff --git a/addons/hw_escpos/escpos/escpos.py b/addons/hw_escpos/escpos/escpos.py index 0e9a965f2ff..df96646c9d7 100644 --- a/addons/hw_escpos/escpos/escpos.py +++ b/addons/hw_escpos/escpos/escpos.py @@ -207,16 +207,28 @@ class Escpos: encoded = '' encoding = self.encoding # we reuse the last encoding to prevent code page switches at every character encodings = { + # TODO use ordering to prevent useless switches + # TODO Support other encodings not natively supported by python ( Thai, Khazakh, Kanjis ) 'cp437': TXT_ENC_PC437, 'cp850': TXT_ENC_PC850, 'cp852': TXT_ENC_PC852, + 'cp857': TXT_ENC_PC857, 'cp858': TXT_ENC_PC858, - 'cp865': TXT_ENC_PC860, + 'cp860': TXT_ENC_PC860, 'cp863': TXT_ENC_PC863, 'cp865': TXT_ENC_PC865, 'cp866': TXT_ENC_PC866, + 'cp862': TXT_ENC_PC862, + 'cp720': TXT_ENC_PC720, + 'iso8859_2': TXT_ENC_8859_2, + 'iso8859_7': TXT_ENC_8859_7, + 'iso8859_9': TXT_ENC_8859_9, + 'cp1254' : TXT_ENC_WPC1254, + 'cp1255' : TXT_ENC_WPC1255, + 'cp1256' : TXT_ENC_WPC1256, + 'cp1257' : TXT_ENC_WPC1257, + 'cp1258' : TXT_ENC_WPC1258, 'katakana' : TXT_ENC_KATAKANA, - # TODO Support other encodings not natively supported by python } remaining = copy.copy(encodings)