Barcode Scanner Emulator
Cómo funcionan los escáneres de códigos de barras
Un escaneo parece instantáneo, pero hay cuatro etapas bien separadas entre el código de barras físico y el carácter que termina en tu app. Si entiendes cada etapa, diagnosticar las fallas del escáner se vuelve mucho más directo.
Las cuatro etapas de un escaneo de código de barras
1. Iluminación y captura de la imagen
Los escáneres láser recorren el código con un haz y miden qué tan intensa es la luz que rebota. Los escáneres por imagen (la mayoría de los equipos de mano actuales y la cámara del celular) toman una imagen 2D del código con un sensor CMOS pequeño, parecido a una cámara de baja resolución.
2. Decodificación
El firmware del equipo analiza el ancho de las barras (o la imagen 2D, cuando se trata de códigos QR o Data Matrix) y las convierte en la carga digital original, con el algoritmo de la simbología correspondiente: Code 128, Code 39, EAN-13, QR y otras. Todo eso ocurre dentro del escáner, antes de que cualquier dato llegue a la computadora.
3. Comunicación
La carga ya decodificada se manda a la computadora host. El transporte casi siempre es USB, y la gran mayoría de los escáneres de consumo e industriales se anuncian ante el sistema operativo como un teclado USB HID, no como una clase USB propia. Algunos también ofrecen modos como USB serial (emulación de puerto COM) o Bluetooth HID, pero la emulación de teclado viene activada de fábrica en casi todos los modelos que se venden hoy.
4. Entrada en la aplicación
Como el escáner se hace pasar por teclado, el sistema operativo entrega la carga como una serie de eventos de tecla a la app que tiene el foco del teclado en ese momento. Tu app nunca habla directo con el escáner: solo recibe teclazos, igual que si alguien los hubiera tecleado a toda velocidad.
Por qué casi todos los escáneres se comportan como un teclado
El modo de teclado HID es la configuración de fábrica de casi todos los escáneres comerciales porque no hay que instalar un driver. Cualquier sistema operativo que acepte un teclado USB acepta el escáner desde el primer momento.
La emulación de teclado USB significa que el firmware asigna cada carácter decodificado al código de tecla HID USB que un teclado enviaría para ese carácter y luego manda reportes de teclado HID normales por el endpoint de interrupción de USB.
Por qué importa al hacer pruebas: en la capa de la app, el escáner no se distingue de un teclado. Por eso puedes cubrir una buena parte del comportamiento con solo teclear rápido en un campo enfocado, o con una herramienta del navegador que revise los eventos de teclado (mira las herramientas enlazadas más abajo).
Sufijos ENTER y TAB
Casi todos los escáneres se configuran para agregar un teclazo de sufijo después de la carga decodificada. Lo más común es ENTER (retorno de carro, 0x0D); a veces es TAB (0x09) o una secuencia personalizada. Así la app que recibe los datos sabe dónde termina el valor escaneado sin depender de un tiempo de espera. El sufijo funciona como señal de confirmación, parecida a oprimir Enter después de escribir en un campo de texto.
El ritmo del escáner
Un escáner manda toda la carga de un código de barras en mucho menos de un segundo, a menudo con pausas de unos pocos milisegundos entre caracteres. Una persona que teclea la misma cadena suele dejar pausas de 100–300 ms o más. Esa diferencia es la base de la “detección de escáner” en muchas apps de POS e inventario: buscan ráfagas de entrada inusualmente rápidas seguidas de inmediato por una tecla de sufijo.
Para tu app, la consecuencia es clara: si quieres separar la entrada del escáner de la escritura manual, mide el tiempo entre teclazos. No busques una bandera especial, porque los eventos de teclado normales del navegador no dicen de dónde vino la entrada.
Pruébalo tú mismo
Usa el Verificador de entrada de códigos de barras para escanear un código real y ver al momento el valor capturado, el tiempo y la detección del sufijo. Si quieres profundizar en la emulación de teclado, sigue con Emulación de teclado HID explicada.