Barcode Scanner Emulator
Cara kerja pemindai kode batang
Pemindaian kode batang terasa seketika, tetapi ada empat tahap yang berbeda antara kode batang fisik dan karakter yang masuk ke aplikasi Anda. Memahami setiap tahap membuat bug yang terkait pemindai jauh lebih mudah didiagnosis.
Empat tahap pemindaian kode batang
1. Penyinaran dan penangkapan gambar
Pemindai laser menyapu sinar melintasi kode batang dan mengukur intensitas cahaya yang dipantulkan. Pemindai berbasis imager (sebagian besar pemindai genggam modern dan pemindai kamera ponsel) menangkap gambar 2D kode batang dengan sensor CMOS kecil, mirip kamera beresolusi rendah.
2. Dekode
Firmware bawaan menganalisis lebar batang (atau gambar 2D, untuk kode QR dan Data Matrix) lalu mendekodenya menjadi muatan digital asli, memakai algoritma simbologi yang bersangkutan — Code 128, Code 39, EAN-13, QR, dan seterusnya. Semua ini terjadi di dalam pemindai, sebelum data apa pun sampai ke komputer Anda.
3. Komunikasi
Muatan yang sudah didekode dikirim ke komputer host. Transportnya biasanya USB, dan sebagian besar pemindai konsumen maupun industri menampilkan diri ke sistem operasi sebagai perangkat papan ketik USB HID, bukan kelas USB khusus. Beberapa pemindai mendukung mode lain seperti USB serial (emulasi port COM) atau Bluetooth HID, tetapi mode emulasi papan ketik adalah bawaan hampir setiap pemindai yang dijual saat ini.
4. Masukan aplikasi
Karena pemindai bertindak sebagai papan ketik, sistem operasi mengantarkan muatan sebagai rangkaian peristiwa tombol ke aplikasi yang sedang memegang fokus papan ketik. Aplikasi Anda tidak pernah berbicara langsung dengan pemindai — ia hanya menerima ketukan tombol, persis seperti seseorang mengetiknya dengan sangat cepat.
Mengapa sebagian besar pemindai berperilaku seperti papan ketik
Mode papan ketik HID adalah konfigurasi bawaan hampir semua pemindai kode batang komersial karena tidak memerlukan pemasangan driver. Sistem operasi apa pun yang mendukung papan ketik USB mendukung pemindai begitu terhubung.
Emulasi papan ketik USB berarti firmware pemindai memetakan setiap karakter yang didekode ke keycode USB HID yang akan dikirim papan ketik untuk karakter itu, lalu mengirim laporan papan ketik HID standar lewat endpoint interupsi USB.
Mengapa ini penting untuk pengujian: karena di lapisan aplikasi pemindai tidak bisa dibedakan dari papan ketik, Anda dapat menguji sebagian besar perilaku yang digerakkan pemindai dengan mengetik cepat ke bidang yang sedang fokus, atau memakai alat peramban yang memeriksa peristiwa papan ketik (lihat alat yang ditautkan di bawah).
Akhiran ENTER dan TAB
Sebagian besar pemindai dikonfigurasi untuk menambahkan ketukan akhiran setelah muatan yang didekode, paling sering ENTER (carriage return, 0x0D), kadang TAB (0x09) atau urutan khusus. Ini ada agar aplikasi penerima tahu di mana nilai yang dipindai berakhir tanpa perlu timeout — akhiran bertindak sebagai sinyal kirim, mirip menekan Enter setelah mengetik di bidang teks.
Pengaturan waktu pemindai
Pemindai mengirim seluruh muatan kode batang dalam waktu jauh di bawah satu detik, sering dengan jeda beberapa milidetik antar karakter. Orang yang mengetik string yang sama biasanya memberi jeda 100–300 ms atau lebih antar ketukan. Perbedaan waktu ini menjadi dasar logika "deteksi pemindai" di banyak aplikasi POS dan inventaris, yang mengawasi semburan masukan yang luar biasa cepat lalu segera diikuti tombol akhiran.
Bagi aplikasi Anda, artinya: jika Anda ingin membedakan masukan pemindai dari pengetikan manual, ukur waktu antar ketukan, jangan mencari bendera khusus, karena peristiwa papan ketik standar peramban tidak membawa informasi tentang sumber masukan.
Coba sendiri
Gunakan penguji masukan kode batang untuk memindai kode batang sungguhan dan melihat nilai yang tertangkap, pengaturan waktu, serta deteksi akhiran secara real time. Untuk pembahasan lebih dalam tentang perilaku keyboard wedge, lanjutkan ke Penjelasan keyboard wedge HID.