On 10/13/2015 01:48 PM, Alcides Rivera wrote:
Necesito realizar la impresión de un ticket de cocina utilizando ODOO 8 en el módulo TPV a través de pos_restaurant sin embargo solo dispongo de una impresora serial y el sistema utiliza USB para dicha impresión lo que he hecho es adquirir un convertidor SERIAL a USB pero tengo el siguiente inconveniente al intentar acceder a la impresora he simulado en el siguiente script de python el acceso a la impresora:

import usb

class FindUsbClass(object):
    def __init__(self, usb_class):
        self._class = usb_class
    def __call__(self, device):
        # first, let's check the device
        if device.bDeviceClass == self._class:
            return True
        # transverse all devices and look through their interfaces to
        # find a matching class
        for cfg in device:
intf = usb.util.find_descriptor(cfg, bInterfaceClass=self._class)

            if intf is not None:
                return True

        return False

printers = usb.core.find(find_all=True, custom_match=FindUsbClass(0))

for printer in printers:
    if hex(printer.idVendor) == '0x67b':
        print hex(printer.idVendor)
        print hex(printer.idProduct)
        print usb.util.get_string(printer, 256, printer.iManufacturer)

Pero al intentar ejecutar con el usuario openerp da el sigueinte error:

0x67b
0x2303
Traceback (most recent call last):
  File "prueba.py", line 26, in <module>
    print usb.util.get_string(printer, 256, printer.iManufacturer)
File "/home/openerp/.local/lib/python2.7/site-packages/usb/util.py", line 271, in get_string
    langid
File "/home/openerp/.local/lib/python2.7/site-packages/usb/control.py", line 173, in get_descriptor
    data_or_wLength = desc_size)
File "/home/openerp/.local/lib/python2.7/site-packages/usb/core.py", line 955, in ctrl_transfer
    self._ctx.managed_open()
File "/home/openerp/.local/lib/python2.7/site-packages/usb/core.py", line 105, in managed_open
    self.handle = self.backend.open_device(self.dev)
File "/home/openerp/.local/lib/python2.7/site-packages/usb/backend/libusb1.py", line 722, in open_device
    return _DeviceHandle(dev)
File "/home/openerp/.local/lib/python2.7/site-packages/usb/backend/libusb1.py", line 600, in __init__
    _check(_lib.libusb_open(self.devid, byref(self.handle)))
File "/home/openerp/.local/lib/python2.7/site-packages/usb/backend/libusb1.py", line 552, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 13] Access denied (insufficient permissions)

He agregado al usuario "openerp" a los grupos: "dialout", "tty", "lp", "lpadmin".

Pero sigo sin poder ejecutar con éxito. Al ejecutar con sudo python prueba.py se realiza correctamente es decir el script funciona, pero no puedo ejecutar con "sudo" desde ODOO.

Su ayuda por favor,

Saludos

--
Ing. Alcides Rivera
*JEFE DE SISTEMAS, DESARROLLO Y TECNOLOGÍA
*
*VIRTUALSAMI CIA. LTDA.*
*Dirección:* Carlos Elías Almeida 7-29 y Gabriela Mistral
                Tras el Centro Comercial Laguna Mall,
                Barrio Pilanquí del IESS, Ibarrra - Imbabura - Ecuador
*Teléfonos:* 065002485, 062953199, 0991463145
*Correos Electrónicos:* alci...@virtualsami.com.ec <mailto:alci...@virtualsami.com.ec>,
alcides.river...@gmail.com <mailto:alcides.river...@gmail.com>
*Sitio Web:* http://www.virtualsami.com.ec


_______________________________________________
Lista de Correo Asociacion@listas.asle.ec
Visite http://listas.asle.ec/mailman/listinfo/asociacion
para modificar las opciones de suscripción (suscribirse, retirarse, etc).

Participa en las listas y próximo foro, como socio de ASLE 
http://www.asle.ec/portal2/node/7

Visita el canal IRC #asle en irc.freenode.org para consultas en tiempo real.

Todo mensaje que sea enviado a esta lista es público (especialmente los que 
contengan una nota de confidencialidad) y cualquiera puede hacer el uso que 
desee de él.

Si pones un adaptador USB serial, la impresión sigue siendo en modo serial, por lo tanto tu programa debera imprimir con comandos ESC/POS, pero si lo que quieres es que use el modo USB con cups deberás cambiar el módulo de la impresora, en las epson es muy simple y se consigue modulos RS232, Paralelo, Ethernet y USB.

Ahora también puedes probar corriendo tu programa(ODOO) como root para descartar permisos, si ahí funciona entonces lidiar con permisos y udev.
_______________________________________________
Lista de Correo Asociacion@listas.asle.ec
Visite http://listas.asle.ec/mailman/listinfo/asociacion
para modificar las opciones de suscripción (suscribirse, retirarse, etc).

Participa en las listas y próximo foro, como socio de ASLE 
http://www.asle.ec/portal2/node/7

Visita el canal IRC #asle en irc.freenode.org para consultas en tiempo real.

Todo mensaje que sea enviado a esta lista es público (especialmente los que 
contengan una nota de confidencialidad) y cualquiera puede hacer el uso que 
desee de él.

Responder a