Saltar al contenido

Barcode Scanner Emulator

El lector funciona en Notepad pero no en el POS

Es uno de los problemas de códigos de barras que más se comunican, y casi siempre significa que el lector y la conexión están bien: el fallo está en cómo tu aplicación trata la entrada de teclado.

Problema

Leer en un editor de texto sin formato produce el valor correcto siempre, pero leer en el sistema de POS, la aplicación web o la herramienta interna no produce nada, produce una entrada parcial o un comportamiento incorrecto.

Causas posibles

  • El campo de destino no tiene el foco del teclado en el momento de la lectura, o el foco está en un elemento que no es de entrada
  • Un controlador de keydown llama a preventDefault() de un modo que bloquea la entrada de caracteres
  • La aplicación depende de eventos paste o input que las pulsaciones del lector no disparan como esperas
  • Una máscara de entrada o una expresión de validación rechaza un carácter válido de la carga útil leída
  • El sufijo ENTER/TAB dispara una acción no deseada (enviar el formulario antes de tiempo, cerrar un modal, salir de la página)
  • La lectura es más rápida de lo que un controlador con antirrebote o limitación puede registrar cada pulsación

Flujo de diagnóstico

  1. Abre el Probador de eventos de teclado en el mismo navegador y lee el código. Si aquí se registra cada carácter correctamente, el navegador y el sistema operativo reciben bien los eventos, así que el fallo está en el tratamiento de eventos de tu aplicación.
  2. Comprueba si el campo de entrada tiene el foco justo antes de la lectura en el flujo real (no solo cuando haces clic a mano para probar).
  3. Abre la consola de DevTools del navegador y busca errores de JavaScript lanzados durante la lectura: un error a mitad de un controlador puede detener en silencio el procesamiento de las pulsaciones siguientes.
  4. Quita temporalmente cualquier máscara de entrada, validación o lógica de antirrebote y vuelve a probar para aislar qué capa descarta la entrada.
  5. Comprueba si la aplicación escucha keypress (en desuso y poco fiable con algunas teclas) en lugar de keydown/keyup.

Cómo corregirlo

  • Asegúrate de que el campo de destino recibe el foco por código siempre que el flujo espera una lectura (por ejemplo, justo después de añadir una línea)
  • Sustituye los escuchadores de keypress por keydown/keyup, porque keypress está en desuso y trata algunas teclas de forma incoherente
  • Revisa las llamadas a preventDefault() en los controladores de teclado para que no bloqueen teclas de carácter legítimas
  • Relaja las máscaras y la validación para aceptar todo el intervalo de caracteres que pueden producir tus simbologías y valida después el valor ensamblado, no cada pulsación
  • Haz coincidir el sufijo del lector con lo que espera el formulario (consulta Sufijos ENTER y TAB)

Herramientas relacionadas

Probador de eventos de teclado · Probador de entrada de códigos de barras