Plugin ESC POS v3

Emitir sonido y parpadear LED en impresora térmica

Algunas impresoras térmicas ESC POS tienen un buzzer o zumbador que puede emitir sonidos, también conocidos como pitidos o como “hacer beep“. Otras impresoras, además del buzzer, tienen un LED para enviar notificaciones al momento de imprimir, avisando que un trabajo de impresión está por empezar o por terminar.

Luz y sonido en impresora térmica (Buzzer y LED)

En este post te voy a enseñar cómo hacer que una impresora térmica emita un sonido y envíe una notificación usando su luz LED, teniendo la opción de solo usar sonido, solo el LED o ambos.

Vas a poder hacer que la impresora emita sonidos o encienda su LED incluso si no envías ningún trabajo de impresión, así que puedes usar la POS printer para avisarle al usuario sobre alguna notificación usando sonido.

Recuerda que no todas las impresoras tienen el mismo hardware, en mi caso mi GOOJPRT PT-210 cuenta tanto con un buzzer para hacer pitidos (beep) como con un LED.

Hacer sonido

Para hacer un sonido debemos indicar la cantidad de pitidos o beeps y la duración de los mismos. En este caso hay que usar la operación Beep pasando los 2 argumentos numéricos: la cantidad de beeps y la duración que será multiplicada por 50 milisegundos.

Aquí hay un ejemplo de invocación con JavaScript que después puedes migrar a otros lenguajes de programación:

const cargaUtil = {
  "serial": "",
  "nombreImpresora": "Termica",
  "operaciones": [
    {
      "nombre": "Beep",
      "argumentos": [
        3,
        2
      ]
    }
  ]
};
const respuestaHttp = await fetch("http://localhost:8000/imprimir", {
    method: "POST",
    body: JSON.stringify(cargaUtil)
});
const respuesta = await respuestaHttp.json();
if (respuesta.ok) {
    console.log("Impreso correctamente")
} else {
    console.error("Petición ok pero error en el plugin: " + respuesta.message);
}

Con este código de programación, la impresora emitirá un sonido 3 veces, durando 100 milisegundos cada uno de ellos. Es importante que sepas que al menos en mi GOOJPRT PT-210 el parámetro de duración no tiene efecto, pero seguramente en otras impresoras sí lo tiene.

Que la duración no funcione con Beep no presenta ningún problema, pues para eso existe la función de las impresoras térmicas que permite hacer un beep y “encender la alarma” que básicamente es hacer pitidos y parpadear el LED.

Beep y LED en impresora térmica

Esta operación sí funciona en mi thermal printer. Lo que me gusta es que es una alternativa perfecta a la operación que hace que la impresora emita sonidos, pues aquí sí podemos cambiar la duración de cada sonido, así como elegir si queremos solo usar el LED (alarma), solo el buzzer o ambos.

Veamos un ejemplo a continuación con JavaScript, mismo que puedes usar más adelante con otros lenguajes de programación.

const cargaUtil = {
  "serial": "",
  "nombreImpresora": "Termica",
  "operaciones": [
    {
      "nombre": "BeepAndAlarm",
      "argumentos": [
        3,
        2,
        3
      ]
    }
  ]
};
const respuestaHttp = await fetch("http://localhost:8000/imprimir", {
    method: "POST",
    body: JSON.stringify(cargaUtil)
});
const respuesta = await respuestaHttp.json();
if (respuesta.ok) {
    console.log("Impreso correctamente")
} else {
    console.error("Petición ok pero error en el plugin: " + respuesta.message);
}

En este caso estoy indicando que quiero que se emita un sonido y se parpadee el LED 3 veces con una duración de 100 milisegundos (2 x 50ms), además de indicar que quiero que se use la alarma (LED) y el buzzer para hacer un pitido, siguiendo la descripción de los parámetros de la documentación.

Configurar impresora y descargar servidor HTTP a ESC POS

Para que el código funcione necesitas el servidor local de la API ESC POS ejecutándose y que tu impresora esté compartida. Por favor, sigue los pasos que aparecen en la página previamente enlazada, ya que ahí está la API unificada.

La documentación completa está en: https://parzibyte.me/http-esc-pos-desktop-docs/es/

Notas adicionales

Por alguna extraña razón, solo se puede hacer un beep o beep y alarma una vez por trabajo de impresión. No es necesario imprimir nada, pero sí es necesario enviar un nuevo conjunto de comandos ESC POS cada vez que se quiera emitir sonidos y encender el LED.

Lo he intentado reiniciar con la operación Iniciar y similares, pero me parece que no es posible al menos en mi impresora.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Tailwind CSS – Centrar verticalmente

En este corto tutorial de programación CSS con Tailwind vamos a ver cómo centrar un…

1 semana hace

Cámara a impresora térmica – Aplicación web

Hoy te voy a enseñar una aplicación web (programada con JavaScript en el lado del…

1 semana hace

Mejorar calidad de imágenes en impresora térmica

En este artículo te voy a enseñar una técnica para mejorar la calidad de las…

1 semana hace

Convertir OffscreenCanvas a imagen en base64

La API de OffscreenCanvas permite trabajar con un canvas en JavaScript sin tener que usar…

1 semana hace

Actualización Plugin ESC POS 3.5.0 – Dithering y respuesta al imprimir

En este post voy a describir las novedades de mi plugin HTTP a ESC POS.…

2 semanas hace

Leer 10 mil números y ordenar con C

En el ejercicio de programación de hoy vamos a trabajar con ANSI C para leer…

1 mes hace

Esta web usa cookies.