Blog de conocimiento gratuito: linux, programación, open source, bases de datos, android, frameworks, web e informática en general.
En este artículo vamos a ver cómo comunicar C# con una impresora térmica usando Visual Studio, Mono o cualquier compilador que soporte C#. Es decir, no necesitas VS obligatoriamente siempre y cuando cuentes con el .NET framework necesario.
Podrás usar C# (C sharp) para imprimir texto en una POS printer, alinear, colocar enfatizado, definir tus propios caracteres por si la impresora no lo soporta, imprimir acentos, texto según páginas de códigos y por supuesto podrás imprimir imágenes (locales, de internet o en base64), códigos QR, códigos de barras y todo lo necesario para crear tickets con C# en una thermal printer.
Para esto vamos a usar un conector que he creado con C# y un plugin gratuito. Esto funciona en Linux, Raspberry Pi, Windows y cualquier plataforma donde funcione mi plugin y C# se pueda compilar.
El día de hoy vamos a ver cómo imprimir tickets, recibos o facturas en una impresora térmica desde Angular usando el lenguaje de programación TypeScript y el lenguaje ESC POS para la impresora.
Básicamente vamos a ver cómo comunicar Angular con una thermal printer, pos printer o impresora POS (Epson, Xprinter, etcétera) e imprimir texto, darle formato, imprimir códigos QR, códigos de barras, imágenes, acentos y varias cosas que permitirán crear tickets desde Angular.
Vamos a usar un plugin gratuito y un conector en TypeScript que acabo de crear. Por cierto, el plugin también nos permitirá cortar el papel, abrir el cajón de dinero, definir caracteres personalizados e imprimir en red.
Nota: esto funciona en Windows, Linux, Raspberry Pi y con otro plugin podría incluso funcionar en Android con impresoras Bluetooth.
Hoy te mostraré cómo imprimir directamente a una impresora térmica usando JavaScript en la web o mejor dicho en el navegador web, cuando el sistema operativo es Linux.
Si has seguido mi blog y mi canal de YouTube sabrás que hace tiempo desarrollé un plugin para imprimir en impresoras térmicas con JS pero para Windows. Pues bien, hoy he portado ese plugin para Linux (le di a Archivo > Exportar como > Plugin para Linux).
En este post te mostraré cómo descargarlo y cómo usarlo en Linux. Yo lo probé en una PC con elementary OS.
Por cierto, si lo llegas a probar me gustaría que me indiques en los comentarios en cuál distribución lo has hecho.
Hoy vengo a presentar un generador de códigos QR que es gratis de usar para el usuario final (no necesitas registrarte ni usar una cuenta) además de que es open source para los programadores.
En este post te voy a mostrar el enlace de la aplicación, cómo usarlo y cómo está hecho.
En este post de programación web te voy a mostrar cómo generar códigos QR desde JS o JavaScript para que puedas generar un QR desde la web.
Vamos a usar una librería de terceros; verás que es muy simple crear códigos QR y tal vez esto te anime para crear tu propio generador.
Te aviso que vamos a usar JavaScript puro, así que puedes portar este código para frameworks como Angular, React o Vue.
Resumen: en este post te mostraré cómo imprimir códigos QR legibles en una impresora térmica (también llamada ticketera, impresora de tickets, pos printer, etcétera) usando un plugin gratis.
Si has seguido mis posts sabrás que hace tiempo desarrollé un plugin y que poco a poco le he agregado características nuevas, hasta llegar al día de hoy en donde imprimimos códigos QR en una thermal printer desde JavaScript, Python, Java y muchos otros lenguajes.
Nota: puedes ver la versión en inglés aquí.
Ya vimos cómo leer códigos QR de manera programada con Android; ahora veamos el proceso “inverso”: programar una aplicación que genera un código QR a partir de una cadena de datos.
Con el generador que haremos será posible mostrar directamente el código QR generado o guardarlo en un lugar de nuestro teléfono.
Todo lo que haremos será usar la librería de QRGen y combinarla con Android; en este tutorial mostraré paso a paso cómo incluirla en Android Studio, algunos ejemplos de uso y una aplicación que ejemplifica todo eso.
Leer un código QR debería ser lo más fácil de hacer en Android utilizando Java, pero no es así.
Podemos utilizar la API que ha introducido Google para leer códigos QR, pero el usuario final necesitará tener los Google Play Services.
Otras alternativas sugieren que usemos otra aplicación que ya lea códigos QR (llamar a otra aplicación desde la nuestra) y tomar lo que devuelva; esto confiando en que el usuario tenga una aplicación para leer dichos códigos.
Pero hoy veremos cómo podemos incorporar un lector QR programado por alguien más, que no tiene dependencias más que el mismo lector.
La app que crearemos al final se verá algo así:
Puedes descargarla y probarla por ti mismo.
Comencemos con lo básico. La librería está alojada aquí en GitHub. No es muy popular ni tiene miles de estrellas, pero sí que sirve.
Para incluirla, abrimos el archivo build.gradle (el que dice Project:TuProyecto) y en el apartado allprojects > repositories agregamos lo siguiente:
maven { url 'https://jitpack.io' }
De manera que ese fragmento de nuestro archivo puede quedar así:
Personalmente, y sólo para que sirva de guía, mi archivo se ve así:
Ahora modificaremos nuestro archivo gradle para nuestra app (dice Module: app), en el apartado dependencies. En ese apartado agregaremos lo siguiente:
compile 'com.github.blikoon:QRCodeScanner:0.1.2'
De manera que el fragmento puede quedar así:
Y aquí una imagen del mío:
Seguramente nos pedirá que instalemos las dependencias en un mensaje en la parte superior, así que lo hacemos haciendo click en Sync Now. Una vez hecho esto ya hemos incluido la librería.
El autor de la librería no lo deja claro, pero necesitamos dos permisos: acceder a la cámara y a la vibración. Cuando comencé a probar la librería, habilité permisos para la cámara, pero no para que el dispositivo vibrase, así que la app se cerraba inesperadamente.
En fin, recordemos agregarlos en el manifest. Así:
El mío luce así:
Y con ello ya podemos, ahora sí, programar.
Hagamos un ejemplo básico. Vamos a poner un botón, cuando se haga click en ese botón llamaremos a un método de Java que lanzará el lector, luego recuperaremos lo que se devuelva y lo mostraremos en un Toast.
Voy a poner un simple botón en la vista y también una etiqueta. Vamos a escuchar más tarde el click del botón, en dicho click se llamará al método onClick.
La vista queda así:
Ahora, en nuestra actividad vamos a poner este código:
REQUEST_CODE_QR_SCAN es un número único, ya que siempre podremos hacer peticiones, pero esas peticiones serán hechas con un número único para que cuando respondan podamos ver a cuál de todas están respondiendo. En este caso sólo haremos una, pero puede que luego agreguemos más.
En resumen, puedes cambiar el número. Luego vamos a escuchar cuando se responda nuestra solicitud, así:
Básicamente vemos si pudimos leer, y también si el código QR era válido. En caso de que sí, mostramos un toast con lo que leímos. En caso de que no, pues avisamos.
Juntando todo, nuestra actividad se ve así:
Con ello podemos ejecutar nuestra app y ver qué pasa…
Al abrir la app se ve esto:
Generé un código en mi computadora utilizando AngularJS (sólo para probar rápidamente, pero podemos leer un código QR impreso, de cualquier página web, etcétera) así:
Si quieres entrar y generar uno, haz click aquí.
Luego abrí el lector, se ve así:
Y finalmente, al leer, se mostró el toast:
No hace falta que lo digan; yo también noté que algunas o todas las etiquetas están en inglés. Pues bien, hay una forma de “traducir” esto aunque me parece que no es un método permanente.
Se trata de un archivo que se queda en la caché. Podemos buscarlo en Android Studio con Ctrl + Shift + N, escribiendo “values.xml” y eligiendo editar el que pertenece al lector QR. Es el siguiente:
Ahí vamos a encontrar muchos valores y también colores. Podemos traducir algunos. En mi caso cambié “Scan” por “Escanear” y “Picture” por “Elegir imagen“:
Y la app se ve así (notar que en la parte superior tiene los valores que cambié):
Pero infiero que, como dice caché, se borrará en la siguiente sincronización. Para ello podemos tener un archivo aparte que guardará los valores, o algo que se nos ocurra.
Lo único que tengo que decir es que, si podemos, dejemos una estrella al repositorio en GitHub. Si quieres, descarga la aplicación desde aquí 🙂