Перейти до вмісту

Barcode Scanner Emulator

Як працюють сканери штрихкодів

Зчитування штрихкоду виглядає миттєвим, але між фізичним штрихкодом і символом, який потрапляє в застосунок, є чотири окремі етапи. Розуміння кожного етапу значно спрощує діагностику помилок, пов’язаних зі сканером.

Чотири етапи зчитування штрихкоду

1. Освітлення й захоплення зображення

Лазерні сканери проводять промінь штрихкодом і вимірюють інтенсивність відбитого світла. Сканери на основі зображення (більшість сучасних ручних сканерів і сканерів із камерою телефона) захоплюють 2D-зображення штрихкоду невеликим датчиком CMOS, подібно до камери з низькою роздільністю.

2. Декодування

Вбудована прошивка аналізує ширину штрихів (або 2D-зображення для кодів QR і Data Matrix) і декодує їх у початкові цифрові дані алгоритмом конкретної символіки — Code 128, Code 39, EAN-13, QR тощо. Усе це відбувається всередині сканера, перш ніж будь-які дані потраплять до комп’ютера.

3. Обмін даними

Декодовані дані передаються на хост-комп’ютер. Передача зазвичай іде через USB, і переважна більшість споживчих та промислових сканерів постає перед операційною системою як клавіатура USB HID, а не як власний клас USB. Деякі сканери підтримують інші режими, наприклад USB serial (емуляція порту COM) або Bluetooth HID, але режим емуляції клавіатури є типовим майже для кожного сканера, який продається сьогодні.

4. Введення в застосунок

Оскільки сканер діє як клавіатура, операційна система доставляє дані як послідовність подій клавіш до застосунку, який зараз має фокус клавіатури. Застосунок ніколи не спілкується зі сканером напряму — він лише отримує натискання клавіш, точно так, ніби хтось набрав їх дуже швидко.

Чому більшість сканерів поводиться як клавіатура

Режим клавіатури HID є типовою конфігурацією майже всіх комерційних сканерів штрихкодів, бо не потребує встановлення драйвера. Будь-яка операційна система, що підтримує клавіатуру USB, підтримує сканер одразу після підключення.

Емуляція клавіатури USB означає, що прошивка сканера зіставляє кожен декодований символ із кодом клавіші USB HID, який клавіатура надіслала б для цього символу, а потім передає стандартні звіти клавіатури HID через кінцеву точку переривання USB.

Чому це важливо для тестування: оскільки на рівні застосунку сканер невідрізненний від клавіатури, значну частину поведінки, керованої сканером, можна перевірити швидким набором у полі з фокусом або засобом браузера, який досліджує події клавіатури (див. інструменти за посиланнями нижче).

Суфікси ENTER і TAB

Більшість сканерів налаштовано додавати після декодованих даних суфікс у вигляді натискання клавіші, найчастіше ENTER (повернення каретки, 0x0D), іноді TAB (0x09) або власну послідовність. Завдяки цьому застосунок-одержувач знає, де закінчується зчитане значення, без тайм-ауту: суфікс діє як сигнал надсилання, подібно до натискання Enter після введення в текстове поле.

Часова поведінка сканера

Сканер передає весь вміст штрихкоду значно менше ніж за секунду, часто з проміжками лише в кілька мілісекунд між символами. Людина, яка набирає той самий рядок, зазвичай має проміжки 100–300 мс або більше між натисканнями. Ця різниця в часі є основою логіки «виявлення сканера» в багатьох застосунках POS і складського обліку, які шукають незвично швидкі пакети введення, за якими одразу йде клавіша-суфікс.

Для вашого застосунку це означає: якщо потрібно відрізнити введення зі сканера від ручного набору, вимірюйте час між натисканнями клавіш. Стандартні події клавіатури в браузері не несуть відомостей про джерело введення, тож спеціального прапорця шукати не можна.

Спробуйте самі

За допомогою тестера введення штрихкодів зчитайте справжній штрихкод і в реальному часі побачте захоплене значення, часову поведінку й виявлення суфікса. Глибше про поведінку keyboard wedge читайте в посібнику Пояснення HID keyboard wedge.