Barcode Scanner Emulator
Hoe barcodescanners werken
Een barcodescan lijkt direct, maar tussen de fysieke barcode en het teken dat in de toepassing belandt, zitten vier afzonderlijke fasen. Elke fase begrijpen maakt scannerfouten veel eenvoudiger te diagnosticeren.
De vier fasen van een barcodescan
1. Belichting en beeldopname
Laserscanners vegen een straal over de barcode en meten de intensiteit van het weerkaatste licht. Scanners op basis van een imager (de meeste moderne handscanners en telefooncameras) leggen een 2D-beeld van de barcode vast met een kleine CMOS-sensor, vergelijkbaar met een camera met lage resolutie.
2. Decodering
De ingebouwde firmware analyseert de streepbreedten (of het 2D-beeld bij QR- en Data Matrix-codes) en decodeert ze naar de oorspronkelijke digitale gegevens, met het algoritme van de specifieke symbologie: Code 128, Code 39, EAN-13, QR enzovoort. Dit gebeurt volledig in de scanner, voordat er gegevens de computer bereiken.
3. Communicatie
De gedecodeerde gegevens worden naar de hostcomputer verzonden. Het transport is meestal USB, en het overgrote deel van consumenten- en industriële scanners presenteert zich aan het besturingssysteem als een USB HID-toetsenbord, niet als een aangepaste USB-klasse. Sommige scanners ondersteunen andere modi, zoals USB-serieel (COM-poortemulatie) of Bluetooth HID, maar toetsenbordemulatie is de standaard op vrijwel elke scanner die vandaag wordt verkocht.
4. Toepassingsinvoer
Omdat de scanner als toetsenbord werkt, levert het besturingssysteem de gegevens als een reeks toetsgebeurtenissen aan de toepassing die op dat moment toetsenbordfocus heeft. De toepassing praat nooit rechtstreeks met de scanner: ze ontvangt alleen toetsaanslagen, precies alsof iemand ze heel snel had getypt.
Waarom de meeste scanners zich als toetsenborden gedragen
HID-toetsenbordmodus is de standaardconfiguratie op bijna alle commerciële barcodescanners, omdat er geen stuurprogramma geïnstalleerd hoeft te worden. Elk besturingssysteem dat een USB-toetsenbord ondersteunt, ondersteunt de scanner direct.
USB-toetsenbordemulatie betekent dat de firmware van de scanner elk gedecodeerd teken koppelt aan de USB HID-toetscode die een toetsenbord voor dat teken zou sturen, en daarna standaard HID-toetsenbordrapporten via het USB-interrupt-eindpunt verstuurt.
Waarom dit voor testen belangrijk is: omdat de scanner op toepassingsniveau niet van een toetsenbord te onderscheiden is, kun je een groot deel van scannersturing testen door snel in een gefocust veld te typen, of met een browserhulpmiddel dat toetsenbordgebeurtenissen inspecteert (zie de hulpmiddelen hieronder).
ENTER- en TAB-achtervoegsels
De meeste scanners zijn ingesteld om na de gedecodeerde gegevens een achtervoegseltoets te sturen, meestal ENTER (carriage return, 0x0D), soms TAB (0x09) of een aangepaste reeks. Zo kan de ontvangende toepassing zien waar de gescande waarde eindigt zonder een time-out: het achtervoegsel werkt als verzendsignaal, vergelijkbaar met Enter indrukken na het typen in een tekstveld.
Scannertiming
Een scanner verzendt een volledige barcode ruim binnen een seconde, vaak met tussenpozen van enkele milliseconden tussen tekens. Een mens die dezelfde tekenreeks typt, heeft meestal tussenpozen van 100–300 ms of meer. Dit tijdsverschil is de basis van de "scannerdetectie" in veel POS- en voorraadtoepassingen, die letten op ongewoon snelle invoerstoten direct gevolgd door een achtervoegseltoets.
Voor de toepassing betekent dit: wil je scannerinvoer van handmatig typen onderscheiden, meet dan de tijd tussen toetsaanslagen in plaats van naar een speciale vlag te zoeken, want standaard toetsenbordgebeurtenissen in de browser bevatten geen informatie over de invoerbron.
Zelf proberen
Gebruik de barcode-invoertester om een echte barcode te scannen en de vastgelegde waarde, timing en achtervoegseldetectie in realtime te zien. Voor een diepere uitleg van specifiek toetsenbordwiggedrag ga je verder met Uitleg HID-toetsenbordwig.