Android Bluetooth Print

Soporta el envío de texto a una impresora conectada por bluetooth. Se solicita la selección del dispositivo a utilizar en la primera impresión y luego queda guardada esa información durante todo el proceso que esté la aplicación abierta.

Una vez ejecutada la instalación hay que importar en la KB un XPZ que contiene el External Object GeneXus para invocar al compando de impresión. El xpz por defecto se encuentra en el directorio de XPZ de la instalación con el nombre: PXToolsBluetoothPrinter.xpz

Una aplicación demo está disponible en ese link: https://bit.ly/DemoBluetoothPrinter

A modo de ejemplo se deja en el Root Module un Panel for Smart Devices para mostrar el uso del External Object.

En Android (y en general en Smart Devices) no existe el concepto de driver de impresora por lo que se envíe como parámetro de ese método Print deberá ser código que entienda la impresora. Para estandardizar la creación y envío de tickets a distintos modelos de impresoras, creamos una serie de comandos de más alto nivel (basado en xml) que se desarrolló en el módulo Printer Markup Language (PML).

En este Panel se están mostrando Tabs para mostrar 3 formas distintas de envío de texto:

  1. Direct Print: En esta pestaña se muestra una caja de texto con un contenido simple y el botón Direct Print inviará dicho texto directo a la impresora.

    1. En este caso simplemente hay que invocar al método Print del External Object BluetoothPrinter.

      1. El resultado de la impresión de este texto básico es el siguiente en una impresora de Tickets Datamax Oneil:

  1. Driver Print: En esta pestaña se muestra una caja de texto con un contenido en formato XML basado en PML de PXTools. El botón ejecutará primero el proceso RetPrinterCode que transforma el formato XML en código de impresora. En este caso se está generando en formato reconocido por una impresora Datamax Oneil.

    1. En este caso antes de invocar a la impresión invocaremos al procedimiento RetPrinterCode que hace la trasnformación del código XML en formato reconocible por la impresora. El estilo de parseo del XML no se utilizó el XMLReader debido a que con este Objeto no funciona correctamente en aplicaciones Smart Devices Off-line, por lo que se decidió realizar un parseo "manual" para solucionar el problema.

      1. El resultado de la impresión es un formato más elaborado:

  1. Datamax Oneil Print: En esta pestaña se muestra una caja de texto pero con contenido más avanzado y reconocible por una impresora Datamax Oneil. El botón simplemente enviará directo el contenido de la caja al puerto Bluetooth. De esta manera se puede ver como el PML transforma el código de la segunda tab (en formato Xml) al texto de esta tercera pestaña que es el código puro reconocido por la impresora.

    1. En este caso la invocación es igual que el caso de Direct Print pero con una variable con contenido avanzado en formato Datamax Oneil:

      1. El resultado es exáctamente el mismo que el del segundo tab ya que es el código Datamax Oneil que genera el PML resultante del Xml generado en el segundo tab:

        1. En este caso se para poder representar caracteres ASCII que no son soportados por una caja de texto se soporta la declaración de caracteres ASCII mediante un escapeo. Por mas infomración referida a Escapeo de Caracteres especiales seleccione aquí.