[IMP] hw_escpos: codepage switch sequence for all encodings supported by the TM-T20...
authorFrédéric van der Essen <fva@openerp.com>
Fri, 24 Jan 2014 17:31:19 +0000 (18:31 +0100)
committerFrédéric van der Essen <fva@openerp.com>
Fri, 24 Jan 2014 17:31:19 +0000 (18:31 +0100)
bzr revid: fva@openerp.com-20140124173119-naktj3usjuapb9sf

addons/hw_escpos/controllers/main.py
addons/hw_escpos/escpos/constants.py
addons/hw_escpos/escpos/escpos.py

index e8915a4..4fde44d 100644 (file)
@@ -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):
 
index ebffc62..723c670 100644 (file)
@@ -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
index 0e9a965..df96646 100644 (file)
@@ -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)