Hoppa till innehållet

Barcode Scanner Emulator

Så fungerar streckkodsläsare

En streckkodsavläsning ser omedelbar ut, men mellan den fysiska streckkoden och tecknet som hamnar i programmet finns fyra skilda steg. Att förstå varje steg gör det mycket enklare att diagnostisera fel som beror på läsaren.

De fyra stegen i en streckkodsavläsning

1. Belysning och bildtagning

Laserläsare sveper en stråle över streckkoden och mäter intensiteten hos det reflekterade ljuset. Bildbaserade läsare (de flesta moderna handhållna läsare och läsare med telefonkamera) tar en 2D-bild av streckkoden med en liten CMOS-sensor, ungefär som en kamera med låg upplösning.

2. Avkodning

Den inbyggda fasta programvaran analyserar streckbredderna (eller 2D-bilden för koder av typen QR och Data Matrix) och avkodar dem till den ursprungliga digitala nyttolasten med algoritmen för den aktuella symbologin — Code 128, Code 39, EAN-13, QR och så vidare. Allt detta sker inuti läsaren, innan några data når datorn.

3. Kommunikation

Den avkodade nyttolasten skickas till värddatorn. Transporten är vanligen USB, och den stora majoriteten av konsument- och industriella läsare presenterar sig för operativsystemet som ett USB HID-tangentbord i stället för en egen USB-klass. Vissa läsare stöder alternativa lägen, till exempel USB serial (emulering av COM-port) eller Bluetooth HID, men tangentbordsemulering är standard på nästan alla läsare som säljs i dag.

4. Inmatning i programmet

Eftersom läsaren fungerar som ett tangentbord levererar operativsystemet nyttolasten som en följd av tangentbordshändelser till det program som för tillfället har tangentbordsfokus. Programmet talar aldrig direkt med läsaren — det tar bara emot tangenttryckningar, precis som om någon hade skrivit dem mycket snabbt.

Varför de flesta läsare beter sig som tangentbord

HID-tangentbordsläge är standardkonfigurationen på nästan alla kommersiella streckkodsläsare eftersom det inte kräver någon drivrutinsinstallation. Varje operativsystem som stöder ett USB-tangentbord stöder läsaren direkt.

USB-tangentbordsemulering innebär att läsarens fasta programvara mappar varje avkodat tecken till den USB HID-tangentkod som ett tangentbord skulle skicka för det tecknet och sedan överför vanliga HID-tangentbordsrapporter via USB-avbrottsslutpunkten.

Därför spelar det roll vid test: eftersom läsaren på programnivån inte går att skilja från ett tangentbord kan du testa en stor del av det läsarstyrda beteendet genom att skriva snabbt i ett fält med fokus, eller med ett webbläsarverktyg som granskar tangentbordshändelser (se verktygen som länkas nedan).

Suffixen ENTER och TAB

De flesta läsare är konfigurerade att lägga till ett suffix som tangenttryckning efter den avkodade nyttolasten, oftast ENTER (vagnretur, 0x0D) men ibland TAB (0x09) eller en egen följd. Det finns för att det mottagande programmet ska veta var det avlästa värdet slutar utan en tidsgräns — suffixet fungerar som en sändsignal, ungefär som att trycka på Enter efter att ha skrivit i ett textfält.

Läsarens timing

En läsare överför en hel streckkodsnyttolast på väl under en sekund, ofta med luckor på några millisekunder mellan tecknen. En människa som skriver samma sträng har vanligen luckor på 100–300 ms eller mer mellan tangenttryckningarna. Den tidsskillnaden är grunden för logik för ”läsardetektering” i många POS- och lagerprogram, som letar efter ovanligt snabba inmatningsskurar som omedelbart följs av ett suffix.

För ditt program innebär det: om du vill skilja läsarinmatning från manuell inskrivning ska du mäta tiden mellan tangenttryckningarna. Vanliga tangentbordshändelser i webbläsaren bär ingen information om inmatningskällan, så det finns ingen särskild flagga att kontrollera.

Prova själv

Använd streckkodsinmatningstestaren för att läsa av en riktig streckkod och se det infångade värdet, timingen och suffixdetekteringen i realtid. För en djupare genomgång av just keyboard wedge, fortsätt till HID keyboard wedge förklarat.