Skip to content

Desarrollar tu propio driver

Cristian Sebastian Rocha edited this page Nov 6, 2015 · 3 revisions

Cada versión tiene su implementación separada al resto, aunque el protocolo sea el mismo. Las variaciones pueden cambiar la forma de comunicarse por apenas unos códigos, pero eso es suficiente para escribir un nuevo código.

Lo que se puede hacer es dividir aquellas cosas que se mantengan en común entre los protocolos en un objeto de JS, y luego extenderlo con cada versión. En la versión de protocolo de Epson, los cuales existen las versiones D y E, hay un código de empaquetamiento genérico src/epson_common.js, uno específico para la argentina src/epson_common_ar.js que corresponden a mensajes y códigos de error, y luego un archivo para cada versión del protocolo. El driver de la versión E de Epson y driver de la versión D de Epson. Estos dos últimos son los importantes porque definen los objetos que tienen la interface que va a funcionar con Odoo.

Si quieres crear tu propia versión de driver para tu impresora deberías crear un archivo src/P_V_C.js donde P es el nombre del protocolo, V es la versión del protocolo y C es el código ISO-3166-1 alfa-2 del país donde corresponde el protocolo. En el archivo debería estar declarado el objeto con la interface de control de Odoo con el nombre P_V_C.

Ese objeto P_V_C contiene la lógica de comandos para el control del dispositivo. El control por usb o serial lo asocia devices.js. Deberías crear una entrada para USB y otra para SERIAL si es que lo soporta.

Los comandos que tenés que implementar los podés ver en sevents.js . Por ejemplo, el evento "short_test"

'short_test': function(session, event_id, event_data, printers, callback) {
    console.debug("[EVENT] Short test.");
    var printer_id = event_data.name;
    if (typeof printers == 'object' && printer_id in printers) {
        var printer = printers[printer_id];
        printer.short_test(function(res){ session.send({'event_id': event_id, 'printer_id': printer_id}, callback); });
    }
}

llama a printer.short_test. Esta función debería estar declarada en tu archivo de protocolo donde envía los mensajes al dispositivo.

Clone this wiki locally