Spring til indhold

Barcode Scanner Emulator

Sådan virker stregkodescannere

En stregkodescanning ser øjeblikkelig ud, men den består af fire adskilte trin mellem den fysiske stregkode og det tegn, der lander i din applikation. Når du forstår hvert trin, bliver scannerrelaterede fejl meget lettere at diagnosticere.

De fire trin i en stregkodescanning

1. Belysning og billedoptagelse

Laserscannere fører en stråle hen over stregkoden og måler intensiteten af det reflekterede lys. Billedbaserede scannere (de fleste moderne håndscannere og telefonkameraer) optager et 2D-billede af stregkoden med en lille CMOS-sensor, svarende til et kamera med lav opløsning.

2. Afkodning

Firmwaren i enheden analyserer stregbredderne (eller 2D-billedet ved QR- og Data Matrix-koder) og afkoder dem til den oprindelige digitale nyttelast med algoritmen for den konkrete symbologi — Code 128, Code 39, EAN-13, QR og så videre. Det sker helt inde i scanneren, før nogen data når din computer.

3. Kommunikation

Den afkodede nyttelast sendes til værtscomputeren. Transporten er som regel USB, og langt de fleste forbruger- og industriscannere præsenterer sig for operativsystemet som et USB-HID-tastatur i stedet for en særlig USB-klasse. Nogle scannere understøtter andre tilstande som USB-seriel (COM-portemulering) eller Bluetooth-HID, men tastaturemulering er standard på næsten alle scannere, der sælges i dag.

4. Input i applikationen

Fordi scanneren optræder som et tastatur, leverer operativsystemet nyttelasten som en række tastehændelser til den applikation, der har tastaturfokus. Din applikation taler aldrig direkte med scanneren — den modtager bare tastetryk, præcis som hvis nogen havde skrevet dem meget hurtigt.

Hvorfor de fleste scannere opfører sig som tastaturer

HID-tastaturtilstand er standardkonfigurationen på næsten alle kommercielle stregkodescannere, fordi der ikke skal installeres en driver. Ethvert operativsystem, der understøtter et USB-tastatur, understøtter scanneren med det samme.

USB-tastaturemulering betyder, at scannerens firmware knytter hvert afkodet tegn til den USB-HID-tastekode, et tastatur ville sende for det tegn, og derefter sender almindelige HID-tastaturrapporter over USB-interrupt-endepunktet.

Derfor betyder det noget ved test: Da scanneren ikke kan skelnes fra et tastatur i applikationslaget, kan du teste en stor del af den scannerstyrede adfærd ved blot at skrive hurtigt i et felt med fokus eller ved at bruge et browserværktøj, der undersøger tastaturhændelser (se værktøjerne, der er linket nedenfor).

Suffikserne ENTER og TAB

De fleste scannere er konfigureret til at tilføje et suffiks-tastetryk efter den afkodede nyttelast, oftest ENTER (vognretur, 0x0D), men nogle gange TAB (0x09) eller en brugerdefineret sekvens. Det findes, så den modtagende applikation kan se, hvor den scannede værdi slutter, uden at skulle bruge en timeout — suffikset fungerer som et sendesignal, ligesom når man trykker Enter efter at have skrevet i et tekstfelt.

Scannerens timing

En scanner sender en hel stregkodenyttelast på et godt stykke under et sekund, ofte med mellemrum på få millisekunder mellem tegnene. Et menneske, der skriver den samme streng, har som regel mellemrum på 100–300 ms eller mere mellem tastetrykkene. Den tidsforskel er grundlaget for "scannergenkendelse" i mange POS- og lagerapplikationer, som holder øje med usædvanligt hurtige inputbyger efterfulgt straks af en suffikstast.

For din applikation betyder det: Hvis du vil skelne scannerinput fra manuel indtastning, skal du måle tiden mellem tastetryk i stedet for at lede efter et særligt flag, for almindelige tastaturhændelser i browseren indeholder ingen oplysning om inputkilden.

Prøv det selv

Brug Stregkodeinput-testeren til at scanne en rigtig stregkode og se den registrerede værdi, timingen og suffiksgenkendelsen i realtid. Vil du gå dybere ned i tastaturkilens adfærd, så fortsæt til HID-tastaturkile forklaret.