Przejdź do treści

Barcode Scanner Emulator

Jak działają skanery kodów kreskowych

Skan kodu kreskowego wygląda na natychmiastowy, ale między fizycznym kodem a znakiem, który trafia do aplikacji, są cztery odrębne etapy. Zrozumienie każdego z nich znacznie ułatwia diagnozowanie błędów związanych ze skanerem.

Cztery etapy skanu kodu kreskowego

1. Oświetlenie i przechwycenie obrazu

Skanery laserowe przesuwają wiązkę po kodzie kreskowym i mierzą natężenie odbitego światła. Skanery obrazujące (większość współczesnych skanerów ręcznych i aparatów w telefonach) przechwytują obraz 2D kodu małym czujnikiem CMOS, podobnie jak aparat o niskiej rozdzielczości.

2. Dekodowanie

Wbudowane oprogramowanie układowe analizuje szerokości kresek (albo obraz 2D w przypadku kodów QR i Data Matrix) i dekoduje je do pierwotnych danych cyfrowych algorytmem danej symboliki: Code 128, Code 39, EAN-13, QR i tak dalej. Całość dzieje się w samym skanerze, zanim jakiekolwiek dane dotrą do komputera.

3. Komunikacja

Zdekodowane dane są przesyłane do komputera hosta. Transportem jest zwykle USB, a zdecydowana większość skanerów konsumenckich i przemysłowych przedstawia się systemowi operacyjnemu jako urządzenie klawiatury USB HID, a nie niestandardowa klasa USB. Niektóre skanery obsługują inne tryby, na przykład szeregowy USB (emulacja portu COM) albo Bluetooth HID, ale emulacja klawiatury jest ustawieniem domyślnym niemal każdego skanera sprzedawanego dziś.

4. Wprowadzanie do aplikacji

Ponieważ skaner działa jak klawiatura, system operacyjny dostarcza dane jako ciąg zdarzeń klawiszy do aplikacji, która ma obecnie fokus klawiatury. Aplikacja nigdy nie rozmawia ze skanerem bezpośrednio. Otrzymuje tylko naciśnięcia klawiszy, dokładnie tak, jakby ktoś wpisał je bardzo szybko.

Dlaczego większość skanerów zachowuje się jak klawiatury

Tryb klawiatury HID jest konfiguracją domyślną niemal wszystkich komercyjnych skanerów kodów kreskowych, bo nie wymaga instalacji sterownika. Każdy system operacyjny obsługujący klawiaturę USB obsługuje skaner od razu.

Emulacja klawiatury USB oznacza, że oprogramowanie układowe skanera mapuje każdy zdekodowany znak na kod klawisza USB HID, który klawiatura wysłałaby dla tego znaku, a następnie przesyła standardowe raporty klawiatury HID przez punkt końcowy przerwań USB.

Dlaczego to ważne przy testach: skoro na warstwie aplikacji skaner jest nieodróżnialny od klawiatury, dużą część zachowania sterowanego skanerem można sprawdzić, szybko wpisując tekst w polu z fokusem albo narzędziem przeglądarki badającym zdarzenia klawiatury (zobacz narzędzia poniżej).

Sufiksy ENTER i TAB

Większość skanerów jest skonfigurowana tak, by po zdekodowanych danych dodawać naciśnięcie klawisza sufiksu, najczęściej ENTER (powrót karetki, 0x0D), czasem TAB (0x09) albo własną sekwencję. Dzięki temu aplikacja odbierająca wie, gdzie kończy się zeskanowana wartość, bez limitu czasu. Sufiks działa jak sygnał wysłania, podobnie jak naciśnięcie Enter po wpisaniu tekstu w pole.

Czas skanera

Skaner przesyła cały ładunek kodu kreskowego znacznie szybciej niż w sekundę, często z odstępami kilku milisekund między znakami. Człowiek wpisujący ten sam ciąg ma zwykle odstępy 100–300 ms lub więcej. Ta różnica czasu jest podstawą logiki „wykrywania skanera” w wielu aplikacjach POS i magazynowych, które wypatrują nietypowo szybkich serii znaków zakończonych od razu klawiszem sufiksu.

Dla aplikacji oznacza to: jeśli chcesz odróżnić wprowadzanie ze skanera od ręcznego pisania, mierz czas między naciśnięciami klawiszy, a nie szukaj specjalnej flagi, bo standardowe zdarzenia klawiatury w przeglądarce nie zawierają informacji o źródle wprowadzania.

Sprawdź samodzielnie

Użyj testera wprowadzania kodów kreskowych, aby zeskanować prawdziwy kod i zobaczyć na żywo przechwyconą wartość, czas oraz wykrycie sufiksu. Aby dokładniej poznać działanie klina klawiaturowego, przejdź do Wyjaśnienia klina klawiaturowego HID.