def open_printer(self): if self.device: return try: if device_type == 'usb': printers = self.connected_usb_devices() if printers: printer = printers[0] self.interface = printer.get('interface', 0) self.idVendor = printer.get('vendor') self.idProduct = printer.get('product') self.in_ep = printer.get('in_ep', 0x82) self.out_ep = printer.get('out_ep', 0x01) self.timeout = 0 self.profile = capabilities.get_profile(None) self.magic = MagicEncode(self, {}) self.open() self.vendor_product = '%s_%s' % (self.idVendor, self.idProduct) elif device_type == 'serial': self.devfile = config.get('escpos_driver', 'serial_device_name') self.baudrate = config.getint('escpos_driver', 'serial_baudrate') self.bytesize = config.getint('escpos_driver', 'serial_bytesize') self.timeout = config.getint('escpos_driver', 'serial_timeout') self.open() except Exception as e: self.set_status('error', str(e))
def serial_options(options): values = {} values["port"] = options.get( "port", config.get("serial_driver", "port") or "/dev/ttyS0") values["baudrate"] = options.get( "baudrate", config.getint("serial_driver", "baudrate")) values["bytesize"] = options.get( "bytesize", config.getint("serial_driver", "bytesize")) values["parity"] = options.get("parity", config.get("serial_driver", "parity")) values["stopbits"] = options.get( "stopbits", config.getint("serial_driver", "stopbits")) values["rtscts"] = options.get( "rtscts", config.getboolean("serial_driver", "rtscts")) values["xonxoff"] = options.get( "xonxoff", config.getboolean("serial_driver", "xonxoff")) values["timeout"] = options.get("timeout", config.getint("serial_driver", "timeout")) values["eol_cr"] = options.get( "eol_cr", config.getboolean("serial_driver", "eol_cr")) values["eol_lf"] = options.get( "eol_lf", config.getboolean("serial_driver", "eol_lf")) data = options.get("data", "") if values["eol_cr"]: data += serial.CR if values["eol_lf"]: data += serial.LF return values, data
def __init__(self, *args, **kwargs): self.eprint = None self.vendor_product = None if device_type == "usb": printers = self.connected_usb_devices() if printers: printer = printers[0] idVendor = printer.get("vendor") idProduct = printer.get("product") kwargs["in_ep"] = printer.get("in_ep", 0x82) kwargs["out_ep"] = printer.get("out_ep", 0x01) kwargs["timeout"] = 0 POSDriver.__init__(self, idVendor, idProduct, **kwargs) elif device_type == "serial": kwargs["devfile"] = config.get("escpos_driver", "serial_device_name") kwargs["baudrate"] = config.getint("escpos_driver", "serial_baudrate") kwargs["bytesize"] = config.getint("escpos_driver", "serial_bytesize") kwargs["timeout"] = config.getint("escpos_driver", "serial_timeout") POSDriver.__init__(self, **kwargs) elif device_type == "win32": kwargs["printer_name"] = config.get("escpos_driver", "printer_name") POSDriver.__init__(self, **kwargs) ThreadDriver.__init__(self, *args, **kwargs)
def serial_options(options): values = {} values['port'] = options.get( 'port', config.get('serial_driver', 'port') or '/dev/ttyS0') values['baudrate'] = options.get( 'baudrate', config.getint('serial_driver', 'baudrate')) values['bytesize'] = options.get( 'bytesize', config.getint('serial_driver', 'bytesize')) values['parity'] = options.get('parity', config.get('serial_driver', 'parity')) values['stopbits'] = options.get( 'stopbits', config.getint('serial_driver', 'stopbits')) values['rtscts'] = options.get( 'rtscts', config.getboolean('serial_driver', 'rtscts')) values['xonxoff'] = options.get( 'xonxoff', config.getboolean('serial_driver', 'xonxoff')) values['timeout'] = options.get('timeout', config.getint('serial_driver', 'timeout')) values['eol_cr'] = options.get( 'eol_cr', config.getboolean('serial_driver', 'eol_cr')) values['eol_lf'] = options.get( 'eol_lf', config.getboolean('serial_driver', 'eol_lf')) data = options.get('data', '') if values['eol_cr']: data += serial.CR if values['eol_lf']: data += serial.LF return values, data
def serial_options(options): values = {} values['port'] = options.get('port', config.get('serial_driver', 'port') or '/dev/ttyS0' ) values['baudrate'] = options.get('baudrate', config.getint('serial_driver', 'baudrate') ) values['bytesize'] = options.get('bytesize', config.getint('serial_driver', 'bytesize') ) values['parity'] = options.get('parity', config.get('serial_driver', 'parity') ) values['stopbits'] = options.get('stopbits', config.getint('serial_driver', 'stopbits') ) values['rtscts'] = options.get('rtscts', config.getboolean('serial_driver', 'rtscts') ) values['xonxoff'] = options.get('xonxoff', config.getboolean('serial_driver', 'xonxoff') ) values['timeout'] = options.get('timeout', config.getint('serial_driver', 'timeout') ) values['eol_cr'] = options.get('eol_cr', config.getboolean('serial_driver', 'eol_cr') ) values['eol_lf'] = options.get('eol_lf', config.getboolean('serial_driver', 'eol_lf') ) data = options.get('data','') if values['eol_cr']: data += serial.CR if values['eol_lf']: data += serial.LF return values, data
def printstatus(self, eprint): # <PyWebDriver> Full refactoring of the function to allow # localisation and to make more easy the search of the ip self.open_printer() ip = get_public_ip() if not ip: msg = _("""ERROR: Could not connect to LAN<br/><br/>""" """Please check that your system is correc-<br/>""" """tly connected with a network cable,<br/>""" """ that the LAN is setup with DHCP, and<br/>""" """that network addresses are available""") Layout("<div>" + msg + "</div>").format(self) self.cut() else: addr_lines = [] for ifaceName in interfaces(): addresses = [ i["addr"] for i in ifaddresses(ifaceName).setdefault( AF_INET, [{ "addr": "No IP addr" }]) ] addr_lines.append("<p>" + ",".join(addresses) + " (" + ifaceName + ")" + "</p>") msg = _(""" <div align="center"> <h4>PyWebDriver Software Status</h4> <br/><br/> <h5>IP Addresses:</h5> %s<br/> %s<br/> Port: %i </div> """) % ( ip + " (" + _(u"Public") + ")", "".join(addr_lines), config.getint("flask", "port"), ) Layout("<div>" + msg + "</div>").format(self) self.close()
def printstatus(self, eprint): #<PyWebDriver> Full refactoring of the function to allow # localisation and to make more easy the search of the ip self.open_printer() ip = get_public_ip() if not ip: msg = _("""ERROR: Could not connect to LAN<br/><br/>""" """Please check that your system is correc-<br/>""" """tly connected with a network cable,<br/>""" """ that the LAN is setup with DHCP, and<br/>""" """that network addresses are available""") self.receipt('<div>' + msg + '</div>') self.cut() else: addr_lines = [] for ifaceName in interfaces(): addresses = [ i['addr'] for i in ifaddresses(ifaceName).setdefault( AF_INET, [{ 'addr': 'No IP addr' }]) ] addr_lines.append('<p>' + ','.join(addresses) + ' (' + ifaceName + ')' + '</p>') msg = _(u""" <div align="center"> <h4>PyWebDriver Software Status</h4> <br/> <h5>IP Addresses:</h5> %s<br/> %s<br/> Port šđč枊ĐČĆŽ: %i </div> """) % ( ip + ' (' + _(u'Public') + ')', ''.join(addr_lines), config.getint('flask', 'port'), ) self.receipt(msg)
def printstatus(self,eprint): #<PyWebDriver> Full refactoring of the function to allow # localisation and to make more easy the search of the ip self.open_printer() ip = get_public_ip() if not ip: msg = _( """ERROR: Could not connect to LAN<br/><br/>""" """Please check that your system is correc-<br/>""" """tly connected with a network cable,<br/>""" """ that the LAN is setup with DHCP, and<br/>""" """that network addresses are available""") self.receipt('<div>'+msg+'</div>') self.cut() else: addr_lines = [] for ifaceName in interfaces(): addresses = [i['addr'] for i in ifaddresses(ifaceName).setdefault(AF_INET, [{'addr':'No IP addr'}] )] addr_lines.append( '<p>'+','.join(addresses) + ' (' + ifaceName + ')' + '</p>' ) msg = _(u""" <div align="center"> <h4>PyWebDriver Software Status</h4> <br/> <h5>IP Addresses:</h5> %s<br/> %s<br/> Port šđč枊ĐČĆŽ: %i </div> """) % ( ip + ' (' + _(u'Public') + ')', ''.join(addr_lines), config.getint('flask', 'port'), ) self.receipt(msg)
def print_receipt(receipt): # Add required information if not provided if not receipt.get('precision', False): receipt['precision'] = { 'price': config.getint('odoo', 'precision_price'), 'money': config.getint('odoo', 'precision_money'), 'quantity': config.getint('odoo', 'precision_quantity')} else: if not receipt['precision'].get('price', False): receipt['precision']['price'] = config.getint( 'odoo', 'precision_price') if not receipt['precision'].get('money', False): receipt['precision']['money'] = config.getint( 'odoo', 'precision_money') if not receipt['precision'].get('quantity', False): receipt['precision']['quantity'] = config.getint( 'odoo', 'precision_quantity') drivers['escpos'].push_task('receipt', receipt)
def print_receipt(receipt): # Add required information if not provided if not receipt.get('precision', False): receipt['precision'] = { 'price': config.getint('odoo', 'precision_price'), 'money': config.getint('odoo', 'precision_money'), 'quantity': config.getint('odoo', 'precision_quantity') } else: if not receipt['precision'].get('price', False): receipt['precision']['price'] = config.getint( 'odoo', 'precision_price') if not receipt['precision'].get('money', False): receipt['precision']['money'] = config.getint( 'odoo', 'precision_money') if not receipt['precision'].get('quantity', False): receipt['precision']['quantity'] = config.getint( 'odoo', 'precision_quantity') drivers['escpos'].push_task('print_receipt_7', receipt)
def print_receipt(receipt): # Add required information if not provided if not receipt.get("precision", False): receipt["precision"] = { "price": config.getint("odoo", "precision_price"), "money": config.getint("odoo", "precision_money"), "quantity": config.getint("odoo", "precision_quantity"), } else: if not receipt["precision"].get("price", False): receipt["precision"]["price"] = config.getint( "odoo", "precision_price") if not receipt["precision"].get("money", False): receipt["precision"]["money"] = config.getint( "odoo", "precision_money") if not receipt["precision"].get("quantity", False): receipt["precision"]["quantity"] = config.getint( "odoo", "precision_quantity") drivers["escpos"].push_task("print_receipt_7", receipt)
# and sends 999.99 to the credit card reader !!! # Si I comment the line below -- Alexis # telium_driver.push_task('transaction_start', json.dumps( # self.get_payment_info_from_price(999.99, 'card'), sort_keys=True)) # TODO Improve : Get the real model connected if self.status['status'] == 'connected': self.vendor_product = 'telium_image' else: self.vendor_product = False return self.status driver_config = {} if config.get('telium_driver', 'device_name'): driver_config['telium_terminal_device_name'] =\ config.get('telium_driver', 'device_name') if config.getint('telium_driver', 'device_rate'): driver_config['telium_terminal_device_rate'] =\ config.getint('telium_driver', 'device_rate') telium_driver = TeliumDriver(driver_config) drivers['telium'] = telium_driver @app.route('/hw_proxy/payment_terminal_transaction_start', methods=['POST', 'GET', 'PUT', 'OPTIONS']) @cross_origin(headers=['Content-Type']) def payment_terminal_transaction_start(): app.logger.debug('Telium: Call payment_terminal_transaction_start') payment_info = request.json['params']['payment_info'] app.logger.debug('Telium: payment_info=%s', payment_info) telium_driver.push_task('transaction_start', payment_info) return jsonify(jsonrpc='2.0', result=True)
# So I comment the line below -- Alexis de Lattre # display_driver.push_task( # 'send_text', [_(u'PyWebDriver'), _(u'PosBox Status')]) # TODO Improve Me # For the time being, it's not possible to know if the display # is 'disconnected' in 'error' state # Maybe could be possible, improving pyposdisplay library. except Exception: pass return self.status driver_config = {} if config.get('display_driver', 'device_name'): driver_config['customer_display_device_name'] =\ config.get('display_driver', 'device_name') if config.getint('display_driver', 'device_rate'): driver_config['customer_display_device_rate'] =\ config.getint('display_driver', 'device_rate') if config.getfloat('display_driver', 'device_timeout'): driver_config['customer_display_device_timeout'] =\ config.getfloat('display_driver', 'device_timeout') driver_name = 'bixolon' if config.has_option('display_driver', 'driver_name'): driver_name = config.get('display_driver', 'driver_name') display_driver = DisplayDriver(driver_config, use_driver_name=driver_name) drivers['display_driver'] = display_driver @app.route('/hw_proxy/send_text_customer_display', methods=['POST', 'GET', 'PUT', 'OPTIONS'])
# Si I comment the line below -- Alexis # telium_driver.push_task('transaction_start', json.dumps( # self.get_payment_info_from_price(999.99, 'card'), sort_keys=True)) # TODO Improve : Get the real model connected if self.status["status"] == "connected": self.vendor_product = "telium_image" else: self.vendor_product = False return self.status driver_config = {} if config.get("telium_driver", "device_name"): driver_config["telium_terminal_device_name"] = config.get( "telium_driver", "device_name") if config.getint("telium_driver", "device_rate"): driver_config["telium_terminal_device_rate"] = config.getint( "telium_driver", "device_rate") telium_driver = TeliumDriver(driver_config) drivers["telium"] = telium_driver @app.route("/hw_proxy/payment_terminal_transaction_start", methods=["POST", "GET", "PUT"]) def payment_terminal_transaction_start(): app.logger.debug("Telium: Call payment_terminal_transaction_start") payment_info = request.json["params"]["payment_info"] app.logger.debug("Telium: payment_info=%s", payment_info) result = telium_driver.transaction_start(payment_info) app.logger.debug("Telium: result of transation_start=%s", result)
# So I comment the line below -- Alexis de Lattre # display_driver.push_task( # 'send_text', [_(u'PyWebDriver'), _(u'PosBox Status')]) # TODO Improve Me # For the time being, it's not possible to know if the display # is 'disconnected' in 'error' state # Maybe could be possible, improving pyposdisplay library. except Exception: pass return self.status driver_config = {} if config.get("display_driver", "device_name"): driver_config["customer_display_device_name"] = config.get( "display_driver", "device_name") if config.getint("display_driver", "device_rate"): driver_config["customer_display_device_rate"] = config.getint( "display_driver", "device_rate") if config.getfloat("display_driver", "device_timeout"): driver_config["customer_display_device_timeout"] = config.getfloat( "display_driver", "device_timeout") driver_name = "bixolon" if config.has_option("display_driver", "driver_name"): driver_name = config.get("display_driver", "driver_name") display_driver = DisplayDriver(driver_config, use_driver_name=driver_name) drivers["display_driver"] = display_driver @app.route("/hw_proxy/send_text_customer_display", methods=["POST", "GET", "PUT"])
# and sends 999.99 to the credit card reader !!! # Si I comment the line below -- Alexis # telium_driver.push_task('transaction_start', json.dumps( # self.get_payment_info_from_price(999.99, 'card'), sort_keys=True)) # TODO Improve : Get the real model connected if self.status['status'] == 'connected': self.vendor_product = 'telium_image' else: self.vendor_product = False return self.status driver_config = {} if config.get('telium_driver', 'device_name'): driver_config['telium_terminal_device_name'] =\ config.get('telium_driver', 'device_name') if config.getint('telium_driver', 'device_rate'): driver_config['telium_terminal_device_rate'] =\ config.getint('telium_driver', 'device_rate') telium_driver = TeliumDriver(driver_config) drivers['telium'] = telium_driver @app.route( '/hw_proxy/payment_terminal_transaction_start', methods=['POST', 'GET', 'PUT', 'OPTIONS']) @cross_origin(headers=['Content-Type']) def payment_terminal_transaction_start(): app.logger.debug('Telium: Call payment_terminal_transaction_start') payment_info = request.json['params']['payment_info'] app.logger.debug('Telium: payment_info=%s', payment_info)
# So I comment the line below -- Alexis de Lattre # display_driver.push_task( # 'send_text', [_(u'PyWebDriver'), _(u'PosBox Status')]) # TODO Improve Me # For the time being, it's not possible to know if the display # is 'disconnected' in 'error' state # Maybe could be possible, improving pyposdisplay library. except Exception as e: pass return self.status driver_config = {} if config.get('display_driver', 'device_name'): driver_config['customer_display_device_name'] =\ config.get('display_driver', 'device_name') if config.getint('display_driver', 'device_rate'): driver_config['customer_display_device_rate'] =\ config.getint('display_driver', 'device_rate') if config.getint('display_driver', 'device_timeout'): driver_config['customer_display_device_timeout'] =\ config.getint('display_driver', 'device_timeout') display_driver = DisplayDriver(driver_config) drivers['display_driver'] = display_driver @app.route( '/hw_proxy/send_text_customer_display', methods=['POST', 'GET', 'PUT', 'OPTIONS']) @cross_origin(headers=['Content-Type']) @check(installed, meta) def send_text_customer_display():