Activa las notificaciones push PhoneGap Spain

Foro

Home Forums PhoneGap Imprimir Bluetooth desde Phonegap

This topic contains 22 replies, has 9 voices, and was last updated by  sbotta 4 meses, 1 semana .

Viendo 15 respuestas - de la 1 a 15 (de 23 en total)
  • Imprimir Bluetooth desde Phonegap

    Intervenciones
  • Yarini
    Yarini 
    Participant

    Hola.

    Me gustaría saber si alguno ha desarrollado o usado un alguna plugin para imprimir a través de bluetooth desde la apk desarrollada en Cordova. Gracias de antemano.


    Jose Jesus Perez Rivas
    Jose Jesus Perez Rivas 
    Keymaster

    Hola Yarini,

    Quiero recordar que en el foro hay varios hilos hablando sobre este tema, además en el directorio de plugins de Apache Cordova puedes encontrar muchos plugin que puedes utilizar para enlazar tu app mediante bluetooth con otro dispositivo.

    Te dejo por aquí el enlace: http://plugins.cordova.io/#/search?search=bluetooth

    Saludos!


    CEO y Director de desarrollo en Cero y Uno Desarrollamos Aplicaciones – ¿tienes algún proyecto? ¡trabajemos juntos! contacto@ceroyuno.eshttp://www.ceroyuno.es Fundador de PhoneGap Spain http://www.phonegapspain.com Twitter: https://twitter.com/JoseJ_PR


    Jose Jesus Perez Rivas
    Jose Jesus Perez Rivas 
    Keymaster

    Aquí te dejo uno que es fácil de implementar:

    https://build.phonegap.com/plugins/1256

    https://github.com/don/BluetoothSerial/blob/17425bd/README.md

    Saludos!


    CEO y Director de desarrollo en Cero y Uno Desarrollamos Aplicaciones – ¿tienes algún proyecto? ¡trabajemos juntos! contacto@ceroyuno.eshttp://www.ceroyuno.es Fundador de PhoneGap Spain http://www.phonegapspain.com Twitter: https://twitter.com/JoseJ_PR


    Yarini
    Yarini 
    Participant

    Hola Jose Jesús. Gracias por responder.

    Al parecer es un plugin facil de usar, pero no logro encontrar ejemplos que lo usen , y estoy intentando poner la conexión como explica el ejemplo, pero la primera función falla.

    bluetoothSerial.connect(macAddress_or_uuid, connectSuccess, connectFailure);

    me dice que es “macAddress_or_uuid ” no está definido y si lo declaro como una variable, falla directamente la función. Si alguien lo ha usado , por favor ayuda. Gracias a todos


    Yarini
    Yarini 
    Participant

    Hola buenas.

    He leido que el plugin de Bluetooth Serial no sirve para imprimir, se utiliza para otras cosas, alguna sugerencia, o si estoy equivocado y alguien lo ha usado por favor que me diga como?. Gracias.


    Yarini
    Yarini 
    Participant

    Hola he logrado imprimir con el plugin. va perfectamente.

    function imprimirEjemplo() {
    bluetoothSerial.list(function(device) {
    bluetoothSerial
    .connect(device[0].address, conexionExito, conexionFallo);
    }, function() {

    });}

    function conexionExito() {
    var data = “texto \r\n”;
    bluetoothSerial.write(data, impresionExito, impresionFallo);
    }

    con este código va bien. El problema ahora está es que necesito imprimir un logo. Y no se como imprimir una imagen


    Yarini
    Yarini 
    Participant

    Es posible imprimir una imagen con el plugin Bluetooth Serial ?. Si alguien lo ha conseguido por favor que me diga como debo codificarla. ya que el texo lo imprime de maravillas pero cuando tiene que imprimir una imagen , muestra caracteres raros.


    Nailuj Peloz 
    Participant

    Yarini muchas gracias tu información me fue extremadamente útil, llevaba muchas horas intentando, también estoy buscando una solución para imprimir imágenes.
    Saludos desde Colombia


    Yarini
    Yarini 
    Participant

    Hola, gracias. Aun no he podido imprimir una imagen , he intentado muchas cosas y no he podido , te dejo un hilo que me respondieron en el github en la pagina del plugin , a ver si alguien con las cosas que dicen ahí pueden lograr algo satisfactorio. Supongo que a la impresora se le debe decir de alguna manera que lo que va a imprimir es una imagen , porque todo lo que se le pasa lo imprime como texto.

    https://github.com/don/BluetoothSerial/issues/136

    A ver si hay suerte.


    Nailuj Peloz 
    Participant

    También he intentado codificarla pero imprime la cadena. He intentado generar la imagen con ASCII pero el papel es demasiado angosto y se deforma la imagen. Seguiré mirando a ver que encuentro


    Yarini
    Yarini 
    Participant

    Hola Nailuj.

    Me gustaría que me explicaras como es eso de generar la imagen con ASCII , para ver si puedo sacar petróleo de eso ?. Gracias. O si has encontrado alguna otra solución seria ideal. Sabes de algun otro plugin u otra via de poder imprimir tickets con texto e imagenes. Saludos.


    Jose Jesus Perez Rivas
    Jose Jesus Perez Rivas 
    Keymaster

    Hola Yarini, Nailuj comenta la idea de pasar de base64 o de jpg a ASCII, simplemente es otra codificación. Hay varias webs que lo permiten (https://www.base64decode.org/).

    Dale una vuelta a esta url.. puede que te ayude con el tema: https://developer.mozilla.org/es/docs/Web/API/WindowBase64/Base64_codificando_y_decodificando

    Saludos!

    PD: ¿Qué es ASCII? -> http://es.wikipedia.org/wiki/ASCII


    CEO y Director de desarrollo en Cero y Uno Desarrollamos Aplicaciones – ¿tienes algún proyecto? ¡trabajemos juntos! contacto@ceroyuno.eshttp://www.ceroyuno.es Fundador de PhoneGap Spain http://www.phonegapspain.com Twitter: https://twitter.com/JoseJ_PR


    Yarini
    Yarini 
    Participant

    Hola buenas.

    He logrado imprimir, imagenes, códigos de barra y texto, para ellos use la api de datecs , tiene unas funciones para imprimir imagenes y todo tipo de cosas. Lo que he echo es agregar las librerías esas y usar las funciones. Va perfecto. Gracias.


    Webserveis
    Webserveis 
    Participant

    Me alegro que el final has encontrado la solución para imprimir imágenes.
    Seria de interés general que si puedes realizar un pequeño tutorial de tus hazañas con el plugin y librerias para imprimir vía bluetooth.
    Saludos


    Happy code!


    Yarini
    Yarini 
    Participant

    Hola buenas, espero que sea ayuda!

    1 -Lo primero que hice fue instalar el plugin Bluetooth Serial. Desde https://github.com/don/BluetoothSerial . Ademas de añadir las librerias de DATECS

    Con esta función establezco la conexión con el dispositivo . (Debes haber habilitado el bluetooth en ambos equipos y tenerlos vinculados)
    function imprimirEjemplo() {
    bluetoothSerial.list(function(device) {
    bluetoothSerial.connect(device[0].address, conexionExito, conexionFallo);
    }, function() {

    });}

    Con esta mando a imprimir algo.
    function conexionExito() {
    var data = “texto \r\n”;
    bluetoothSerial.write(data, impresionExito, impresionFallo);
    }

    Para imprimir imagenes y demás cosas. Me cree mi propia función. Donde paso el nombre de la imagen que quiero imprimir.

    index. js
    function conexionExito() {
    bluetoothSerial
    .writeImage(“logo.png”, impresionImagenExito, impresionFallo);
    }

    BluetoothSerial.js

    Agrego mi nueva función
    writeImage: function (data, success, failure) {
    cordova.exec(success, failure, “BluetoothSerial”, “writeImage”, [data]);
    },

    BluetoothSerial.java
    La declaro en la clase java del plugin
    private static final String WRITEIMAGE = “writeImage”;

    y en la misma clase implemento el tratamiento de la imagen. (Añadir la imagen en la carpeta del plugin en el src del proyecto)

    else if (action.equals(WRITEIMAGE)) {
    String src = args.getString(0);
    Bitmap bitmap = BitmapFactory.decodeStream(this.getClass()
    .getResourceAsStream(src));
    final int width = bitmap.getWidth();
    final int height = bitmap.getHeight();
    final int[] argb = new int[width * height];
    bitmap.getPixels(argb, 0, width, 0, 0, width, height);
    bluetoothSerialService.writeImage(argb, width, height);
    callbackContext.success();

    }

    BluetoothSerialService.java

    Añado un nuevo método en el service del plugin
    public void writeImage(int[] argb, int width, int height) {
    // Create temporary object
    ConnectedThread r;
    // Synchronize a copy of the ConnectedThread
    synchronized (this) {
    if (mState != STATE_CONNECTED)
    return;
    r = mConnectedThread;
    }
    // Perform the write unsynchronized
    r.writeImage(argb, width, height);
    }

    Y luego llamo al método que envía los datos a la impresiora

    public void writeImage(int[] argb, int width, int height) {
    try {
    mPrinter mPrinter = new Printer(mmOutStream);
    mPrinter.reset();
    mPrinter.printImage(argb, width, height, Printer.ALIGN_CENTER,
    true);

    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    Y listo. es muy sencillo. Como mismo esta el print image , se puede ajustar el texto , imprimir código de barras etc


Viendo 15 respuestas - de la 1 a 15 (de 23 en total)

You must be logged in to reply to this topic.