Saltar al contenido

Barcode Scanner Emulator

Cómo funcionan los lectores de códigos de barras

Una lectura de código de barras parece instantánea, pero comprende cuatro fases distintas entre el código físico y el carácter que llega a tu aplicación. Entender cada fase hace mucho más fácil diagnosticar los fallos relacionados con el lector.

Las cuatro fases de una lectura de código de barras

1. Iluminación y captura de imagen

Los lectores láser barren el código con un haz y miden la intensidad de la luz reflejada. Los lectores basados en imagen (la mayoría de los lectores de mano modernos y las cámaras del teléfono) capturan una imagen 2D del código con un pequeño sensor CMOS, parecido a una cámara de baja resolución.

2. Descodificación

El firmware interno analiza el grosor de las barras (o la imagen 2D, en los códigos QR y Data Matrix) y las descodifica hasta obtener la carga útil digital original, con el algoritmo de la simbología concreta: Code 128, Code 39, EAN-13, QR, etc. Todo ocurre dentro del propio lector, antes de que ningún dato llegue al ordenador.

3. Comunicación

La carga útil descodificada se transmite al ordenador anfitrión. El transporte suele ser USB, y la inmensa mayoría de los lectores de consumo e industriales se presentan al sistema operativo como un teclado USB HID, no como una clase USB propia. Algunos admiten modos alternativos, como el serie USB (emulación de puerto COM) o Bluetooth HID, pero el modo de emulación de teclado es el predeterminado en casi todos los lectores que se venden hoy.

4. Entrada en la aplicación

Como el lector actúa como un teclado, el sistema operativo entrega la carga útil como una secuencia de eventos de tecla a la aplicación que tiene el foco del teclado. Tu aplicación nunca habla directamente con el lector: solo recibe pulsaciones, exactamente como si alguien las hubiera tecleado muy deprisa.

Por qué la mayoría de los lectores se comportan como teclados

El modo de teclado HID es la configuración predeterminada en casi todos los lectores comerciales porque no exige instalar ningún controlador. Cualquier sistema operativo que admita un teclado USB admite el lector desde el primer momento.

La emulación de teclado USB significa que el firmware del lector asigna cada carácter descodificado al código de tecla HID USB que enviaría un teclado para ese carácter y, a continuación, transmite informes de teclado HID normales por el extremo de interrupción USB.

Por qué importa al probar: como en la capa de aplicación el lector es indistinguible de un teclado, puedes probar gran parte del comportamiento guiado por el lector tecleando rápido en un campo con foco, o con una herramienta del navegador que inspeccione los eventos de teclado (consulta las herramientas enlazadas más abajo).

Sufijos ENTER y TAB

La mayoría de los lectores se configuran para añadir una pulsación de sufijo tras la carga útil descodificada, casi siempre ENTER (retorno de carro, 0x0D), aunque a veces es TAB (0x09) o una secuencia personalizada. Así la aplicación receptora sabe dónde termina el valor leído sin necesidad de un tiempo de espera: el sufijo actúa como señal de envío, igual que pulsar Intro después de escribir en un campo de texto.

Temporización del lector

Un lector transmite toda la carga útil de un código de barras en bastante menos de un segundo, a menudo con huecos de unos pocos milisegundos entre caracteres. Una persona que teclea la misma cadena suele dejar huecos de 100–300 ms o más entre pulsaciones. Esa diferencia de tiempo es la base de la «detección de lector» en muchas aplicaciones de POS e inventario, que vigilan ráfagas de entrada inusualmente rápidas seguidas de inmediato por una tecla de sufijo.

Para tu aplicación, esto implica lo siguiente: si quieres distinguir la entrada del lector de la escritura manual, mide el tiempo entre pulsaciones en lugar de buscar una marca especial, porque los eventos de teclado habituales del navegador no indican el origen de la entrada.

Pruébalo tú mismo

Usa el Probador de entrada de códigos de barras para leer un código real y ver al momento el valor capturado, la temporización y la detección del sufijo. Si quieres profundizar en el comportamiento de la cuña de teclado, continúa con La cuña de teclado HID explicada.