跳至內容

Barcode Scanner Emulator

條碼掃描器如何運作

一次條碼掃描看似瞬間完成,但從實體條碼到字元出現在應用程式之間,其實經過四個各自獨立的階段。弄清楚每個階段,與掃描器有關的缺陷就容易診斷得多。

條碼掃描的四個階段

1. 照明與影像擷取

雷射掃描器以光束掃過條碼,並量測反射光的強度。以影像為基礎的掃描器(多數現代手持掃描器與手機相機掃描器)會用小型 CMOS 感測器擷取條碼的二維影像,類似一台低解析度相機。

2. 解碼

內建韌體分析條寬(QR 與 Data Matrix 則分析二維影像),再依特定條碼制式的演算法解碼成原始數位承載資料,例如 Code 128、Code 39、EAN-13、QR 等。這些全都在掃描器內部完成,任何資料抵達電腦之前就已經結束。

3. 通訊

解碼後的承載資料會傳送到主機。傳輸通常走 USB,絕大多數消費型與工業型掃描器對作業系統呈現為 USB HID 鍵盤,而不是自訂 USB 類別。部分掃描器支援其他模式,例如 USB serial(COM 連接埠模擬)或 Bluetooth HID,但鍵盤模擬是今日幾乎所有販售掃描器的預設模式。

4. 應用程式輸入

由於掃描器扮演鍵盤,作業系統會把承載資料當成一連串按鍵事件,交給目前握有鍵盤焦點的應用程式。應用程式從不直接與掃描器交談,它只是接收按鍵,效果就和有人飛快打字一樣。

為什麼多數掃描器表現得像鍵盤

HID 鍵盤模式是幾乎所有商用條碼掃描器的預設組態,因為不必安裝驅動程式。任何支援 USB 鍵盤的作業系統都能隨插即用。

USB 鍵盤模擬是指掃描器韌體把每個解碼字元對應到鍵盤會為該字元送出的 USB HID 按鍵碼,再經由 USB 中斷端點送出標準 HID 鍵盤報告。

這對測試為何重要: 在應用程式層,掃描器與鍵盤無法區分,因此只要在已取得焦點的欄位裡快速打字,或使用檢查鍵盤事件的瀏覽器工具,就能測試很大一部分由掃描器驅動的行為(請見下方連結的工具)。

ENTER 與 TAB 後綴

多數掃描器會設定成在解碼承載資料之後附加一次按鍵後綴,最常見的是 ENTER(歸位字元,0x0D),有時是 TAB(0x09)或自訂序列。如此接收端不必靠逾時就能知道掃描值在哪裡結束。後綴相當於送出訊號,類似在文字欄位打完字後按下 Enter。

掃描器時序

掃描器會在遠不到一秒內傳完整段條碼承載資料,字元之間的間隔常常只有幾毫秒。人工打出同一串字元時,按鍵間隔通常是 100–300 毫秒或更長。這項時序差異是許多 POS 與庫存應用程式「掃描器偵測」邏輯的基礎:它們尋找異常快速的輸入突發,並且緊接著一個後綴鍵。

對你的應用程式來說,這代表:若要區分掃描器輸入與人工打字,應測量按鍵間隔。標準瀏覽器鍵盤事件不帶輸入來源資訊,因此沒有特殊旗標可查。

親自試試看

使用條碼輸入測試器掃描真實條碼,即時查看擷取值、時序與後綴偵測。若要深入了解 keyboard wedge 行為,請繼續閱讀HID keyboard wedge 說明。