Barcode Scanner Emulator
Paano gumagana ang mga barcode scanner
Mukhang agad ang isang barcode scan, ngunit may apat na magkakahiwalay na yugto sa pagitan ng pisikal na barcode at ng karakter na lumalabas sa iyong application. Kapag naintindihan ang bawat yugto, mas madaling suriin ang mga bug na may kinalaman sa scanner.
Ang apat na yugto ng isang barcode scan
1. Pag-ilaw at pagkuha ng imahe
Ang mga laser scanner ay nagwawalis ng sinag sa barcode at sinusukat ang lakas ng naaninag na liwanag. Ang mga imager-based na scanner (karamihan ng modernong handheld at phone-camera scanner) ay kumukuha ng 2D na imahe ng barcode gamit ang maliit na CMOS sensor, katulad ng isang camera na mababa ang resolusyon.
2. Pag-decode
Sinusuri ng onboard na firmware ang lapad ng mga bar (o ang 2D na imahe, para sa mga QR at Data Matrix code) at dine-decode ang mga ito tungo sa orihinal na digital na payload, gamit ang algorithm ng partikular na symbology — Code 128, Code 39, EAN-13, QR, at iba pa. Nangyayari ang lahat ng ito sa loob mismo ng scanner, bago makarating ang anumang data sa iyong computer.
3. Komunikasyon
Ipinapadala ang na-decode na payload sa host computer. Karaniwang USB ang transport, at ang napakalaking mayorya ng consumer at industrial na scanner ay nagpapakita sa OS bilang USB HID keyboard device sa halip na custom na USB class. May ilang scanner na sumusuporta sa alternatibong mode gaya ng USB serial (COM port emulation) o Bluetooth HID, ngunit ang keyboard-emulation mode ang default sa halos lahat ng scanner na ibinebenta ngayon.
4. Input ng application
Dahil kumikilos ang scanner bilang keyboard, inihahatid ng operating system ang payload bilang sunud-sunod na key event sa anumang application na kasalukuyang may keyboard focus. Hindi kailanman direktang nakikipag-usap ang iyong application sa scanner — tumatanggap lang ito ng mga keystroke, eksaktong para bang may mabilis na nag-type ng mga ito.
Bakit kumikilos na parang keyboard ang karamihan ng scanner
Ang HID keyboard mode ang default na configuration sa halos lahat ng komersyal na barcode scanner dahil hindi ito nangangailangan ng pag-install ng driver. Anumang OS na sumusuporta sa USB keyboard ay sumusuporta sa scanner mula sa unang pagkakakonekta.
Ang USB keyboard emulation ay nangangahulugang ini-map ng firmware ng scanner ang bawat na-decode na karakter sa USB HID keycode na ipapadala ng keyboard para sa karakter na iyon, pagkatapos ay nagpapadala ng karaniwang HID keyboard report sa USB interrupt endpoint.
Bakit mahalaga ito sa pagsubok: dahil hindi matukoy ng application layer ang scanner mula sa isang keyboard, masusubok mo ang malaking bahagi ng kilos na hinihimok ng scanner sa pamamagitan ng mabilis na pag-type sa isang naka-focus na field, o sa pamamagitan ng browser tool na nagsusuri ng keyboard event (tingnan ang mga tool na naka-link sa ibaba).
Mga hulaping ENTER at TAB
Karamihan ng scanner ay naka-configure na magdagdag ng suffix keystroke pagkatapos ng na-decode na payload, pinakakaraniwan ang ENTER (carriage return, 0x0D) ngunit kung minsan ay TAB (0x09) o custom na sequence. Umiiral ito upang malaman ng tumatanggap na application kung saan nagtatapos ang na-scan na halaga nang hindi nangangailangan ng timeout — ang suffix ay nagsisilbing senyales ng pagsusumite, katulad ng pagpindot ng Enter pagkatapos mag-type sa isang text field.
Timing ng scanner
Ipinapadala ng scanner ang buong barcode payload nang mas mababa sa isang segundo, kadalasang may agwat na ilang millisecond sa pagitan ng mga karakter. Ang taong nagta-type ng parehong string ay karaniwang may agwat na 100–300 ms o higit pa sa pagitan ng mga keystroke. Ang pagkakaibang ito ng timing ang batayan ng lohika ng "scanner detection" sa maraming POS at inventory application, na nagmamasid sa hindi pangkaraniwang mabilis na burst ng input na agad sinusundan ng suffix key.
Para sa iyong application, ibig sabihin nito: kung gusto mong tukuyin ang input ng scanner mula sa manuwal na pag-type, sukatin ang oras sa pagitan ng mga keystroke sa halip na humanap ng espesyal na flag, dahil ang karaniwang keyboard event ng browser ay walang impormasyon tungkol sa pinagmulan ng input.
Subukan mo mismo
Gamitin ang Tester ng barcode input para mag-scan ng totoong barcode at makita nang real time ang nakuhang halaga, timing, at pagtukoy ng suffix. Para sa mas malalim na talakayan ng kilos ng keyboard wedge, magpatuloy sa Paliwanag sa HID keyboard wedge.