Пређи на садржај

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 ms или више између притисака. Та разлика у времену је основа логике „препознавања скенера“ у многим POS и магацинским апликацијама, које траже необично брзе налеве уноса одмах праћене суфиксом.

За вашу апликацију то значи: ако желите да разликујете унос са скенера од ручног куцања, мерите време између притисака тастера. Стандардни догађаји тастатуре у прегледачу не носе никакву информацију о извору уноса, па посебну ознаку није могуће проверити.

Испробајте сами

Помоћу тестера уноса бар-кодова скенирајте прави бар-код и у реалном времену видите ухваћену вредност, временски ток и откривање суфикса. За дубље објашњење понашања keyboard wedge наставите на Објашњење HID keyboard wedge.