Barcode Scanner Emulator
Как работят баркод скенерите
Сканирането на баркод изглежда мигновено, но между физическия баркод и знака, който попада в приложението, има четири отделни етапа. Когато разбирате всеки етап, грешките, свързани със скенера, се диагностицират много по-лесно.
Четирите етапа на сканиране на баркод
1. Осветяване и заснемане на изображение
Лазерните скенери прекарват лъч през баркода и измерват интензитета на отразената светлина. Скенерите с изображение (повечето съвременни ръчни скенери и камери на телефона) заснемат 2D изображение на баркода с малък сензор CMOS, подобен на камера с ниска разделителна способност.
2. Декодиране
Вграденият фърмуер анализира ширините на чертите (или 2D изображението при кодове QR и Data Matrix) и ги декодира до първоначалния цифров полезен товар с алгоритъма на конкретната симбология — Code 128, Code 39, EAN-13, QR и други. Всичко това става в самия скенер, преди каквито и да е данни да стигнат до компютъра.
3. Комуникация
Декодираният полезен товар се предава към хост компютъра. Преносът обикновено е USB и огромното мнозинство потребителски и промишлени скенери се представят пред операционната система като клавиатура USB HID, а не като собствен USB клас. Някои скенери поддържат други режими, например сериен USB (емулация на COM порт) или Bluetooth HID, но режимът на емулация на клавиатура е подразбиращият се при почти всеки скенер, продаван днес.
4. Въвеждане в приложението
Тъй като скенерът действа като клавиатура, операционната система доставя полезния товар като поредица от клавишни събития на приложението, което в момента има фокус на клавиатурата. Приложението никога не говори директно със скенера — то само получава натискания на клавиши, точно както ако някой ги е написал много бързо.
Защо повечето скенери се държат като клавиатури
Режимът на клавиатура HID е подразбиращата се конфигурация при почти всички търговски баркод скенери, защото не изисква инсталиране на драйвер. Всяка операционна система, която поддържа USB клавиатура, поддържа скенера веднага.
Емулацията на USB клавиатура означава, че фърмуерът на скенера съпоставя всеки декодиран знак с кода на клавиш HID USB, който клавиатурата би изпратила за този знак, и след това предава обикновени отчети за клавиатура HID през крайната точка за прекъсване на USB.
Защо това има значение при тестване: на приложния слой скенерът е неразличим от клавиатура, затова голяма част от поведението, управлявано от скенера, може да се тества с бързо писане във фокусирано поле или с инструмент в браузъра, който разглежда клавишни събития (вижте инструментите по-долу).
Наставки ENTER и TAB
Повечето скенери са настроени да добавят натискане на наставка след декодирания полезен товар, най-често ENTER (връщане на каретката, 0x0D), но понякога TAB (0x09) или собствена поредица. Така приемащото приложение разбира къде свършва сканираната стойност, без да разчита на изчакване — наставката действа като сигнал за изпращане, подобно на натискане на Enter след писане в текстово поле.
Времево поведение на скенера
Скенерът предава целия полезен товар на баркода за доста под една секунда, често с интервали от няколко милисекунди между знаците. Човек, който пише същия низ, обикновено има интервали от 100–300 ms или повече между натисканията. Тази разлика е основата на „разпознаването на скенер“ в много приложения за POS и склад, които следят за необичайно бързи пакети от въвеждане, веднага последвани от клавиш на наставка.
За вашето приложение това означава: ако искате да отличите въвеждането от скенера от ръчното писане, мерете времето между натисканията, вместо да търсите специален флаг. Обикновените клавишни събития в браузъра не носят информация за източника на въвеждането.
Изпробвайте сами
Използвайте тестера за въвеждане на баркод, за да сканирате истински баркод и да видите в реално време заснетата стойност, времето и разпознаването на наставката. За по-задълбочен поглед върху клавиатурния клин продължете към Обяснение на клавиатурния клин HID.