Barcode Scanner Emulator
Cum funcționează scanerele de coduri de bare
O scanare de cod de bare pare instantanee, dar între codul fizic și caracterul care ajunge în aplicație există patru etape distincte. Înțelegerea fiecărei etape face erorile legate de scaner mult mai ușor de diagnosticat.
Cele patru etape ale unei scanări de cod de bare
1. Iluminare și captură de imagine
Scanerele laser mătură un fascicul peste codul de bare și măsoară intensitatea luminii reflectate. Scanerele pe bază de imagine (majoritatea scanerelor de mână moderne și a camerelor de telefon) capturează o imagine 2D a codului cu un senzor CMOS mic, asemănător unei camere de rezoluție redusă.
2. Decodificare
Firmware-ul încorporat analizează lățimile barelor (sau imaginea 2D, pentru codurile QR și Data Matrix) și le decodifică în sarcina digitală originală, cu algoritmul simbologiei respective: Code 128, Code 39, EAN-13, QR și așa mai departe. Totul se petrece în interiorul scanerului, înainte ca vreun dat să ajungă la calculator.
3. Comunicare
Sarcina decodificată este transmisă calculatorului gazdă. Transportul este de obicei USB, iar marea majoritate a scanerelor de consum și industriale se prezintă sistemului de operare ca dispozitiv de tastatură USB HID, nu ca o clasă USB personalizată. Unele scanere acceptă moduri alternative, cum ar fi serial USB (emulare de port COM) sau Bluetooth HID, dar emularea de tastatură este implicită la aproape fiecare scaner vândut astăzi.
4. Introducere în aplicație
Pentru că scanerul acționează ca o tastatură, sistemul de operare livrează sarcina ca o secvență de evenimente de tastă aplicației care are în acel moment focalizarea tastaturii. Aplicația nu vorbește niciodată direct cu scanerul. Primește doar apăsări de taste, exact ca și cum cineva le-ar fi tastat foarte repede.
De ce majoritatea scanerelor se comportă ca tastaturile
Modul tastatură HID este configurația implicită la aproape toate scanerele comerciale de coduri de bare, deoarece nu cere instalarea unui driver. Orice sistem de operare care acceptă o tastatură USB acceptă scanerul din prima.
Emularea de tastatură USB înseamnă că firmware-ul scanerului asociază fiecare caracter decodificat cu codul de tastă USB HID pe care o tastatură l-ar trimite pentru acel caracter, apoi transmite rapoarte standard de tastatură HID prin punctul terminal de întrerupere USB.
De ce contează la testare: fiindcă, la nivelul aplicației, scanerul nu se poate deosebi de o tastatură, o mare parte din comportamentul condus de scaner se poate testa scriind repede într-un câmp focalizat sau cu un instrument de browser care inspectează evenimentele de tastatură (vedeți instrumentele de mai jos).
Sufixele ENTER și TAB
Majoritatea scanerelor sunt configurate să adauge o apăsare de sufix după sarcina decodificată, cel mai des ENTER (revenire de car, 0x0D), uneori TAB (0x09) sau o secvență personalizată. Astfel aplicația receptoare poate ști unde se termină valoarea scanată fără un timp de așteptare. Sufixul funcționează ca semnal de trimitere, asemănător cu apăsarea Enter după scrierea într-un câmp de text.
Temporizarea scanerului
Un scaner transmite întreaga sarcină a codului de bare în mult sub o secundă, adesea cu intervale de câteva milisecunde între caractere. Un om care tastează același șir are de obicei intervale de 100–300 ms sau mai mult. Această diferență de timp stă la baza logicii de „detectare a scanerului” din multe aplicații POS și de inventar, care urmăresc rafale de introducere neobișnuit de rapide urmate imediat de o tastă de sufix.
Pentru aplicație, asta înseamnă: dacă vreți să deosebiți introducerea de la scaner de tastarea manuală, măsurați timpul dintre apăsări, nu căutați un indicator special, pentru că evenimentele de tastatură obișnuite din browser nu spun nimic despre sursa introducerii.
Încercați
Folosiți testerul de introducere a codurilor de bare ca să scanați un cod real și să vedeți în timp real valoarea captată, temporizarea și detectarea sufixului. Pentru o privire mai adâncă asupra penei de tastatură, continuați cu Explicația penei de tastatură HID.