Chuyển tới nội dung

Barcode Scanner Emulator

Máy quét mã vạch hoạt động như thế nào

Một lần quét mã vạch trông như tức thì, nhưng giữa mã vạch vật lý và ký tự xuất hiện trong ứng dụng có bốn giai đoạn riêng. Hiểu từng giai đoạn giúp chẩn đoán lỗi liên quan đến máy quét dễ hơn nhiều.

Bốn giai đoạn của một lần quét mã vạch

1. Chiếu sáng và chụp ảnh

Máy quét laser quét một tia qua mã vạch và đo cường độ ánh sáng phản xạ. Máy quét dựa trên ảnh (hầu hết máy quét cầm tay hiện đại và máy quét bằng camera điện thoại) chụp ảnh 2D của mã vạch bằng cảm biến CMOS nhỏ, giống một camera độ phân giải thấp.

2. Giải mã

Phần mềm cơ sở trên thiết bị phân tích độ rộng vạch (hoặc ảnh 2D với mã QR và Data Matrix) rồi giải mã thành dữ liệu số gốc bằng thuật toán của ký hiệu cụ thể — Code 128, Code 39, EAN-13, QR, v.v. Tất cả diễn ra bên trong máy quét, trước khi bất kỳ dữ liệu nào tới máy tính.

3. Giao tiếp

Dữ liệu đã giải mã được truyền tới máy tính chủ. Đường truyền thường là USB, và phần lớn máy quét tiêu dùng lẫn công nghiệp tự trình diện với hệ điều hành như bàn phím USB HID chứ không phải một lớp USB riêng. Một số máy quét hỗ trợ chế độ khác như USB serial (mô phỏng cổng COM) hoặc Bluetooth HID, nhưng chế độ mô phỏng bàn phím là mặc định trên gần như mọi máy quét bán hiện nay.

4. Đầu vào ứng dụng

Vì máy quét đóng vai trò bàn phím, hệ điều hành đưa dữ liệu thành một chuỗi sự kiện phím tới ứng dụng đang có tiêu điểm bàn phím. Ứng dụng không bao giờ nói chuyện trực tiếp với máy quét — nó chỉ nhận các lần nhấn phím, đúng như thể ai đó gõ rất nhanh.

Vì sao hầu hết máy quét hoạt động như bàn phím

Chế độ bàn phím HID là cấu hình mặc định trên gần như mọi máy quét mã vạch thương mại vì không cần cài trình điều khiển. Hệ điều hành nào hỗ trợ bàn phím USB thì hỗ trợ máy quét ngay khi cắm.

Mô phỏng bàn phím USB nghĩa là phần mềm cơ sở của máy quét ánh xạ mỗi ký tự đã giải mã sang mã phím USB HID mà bàn phím sẽ gửi cho ký tự đó, rồi truyền các báo cáo bàn phím HID chuẩn qua điểm cuối ngắt USB.

Vì sao điều này quan trọng khi kiểm thử: vì ở tầng ứng dụng máy quét không phân biệt được với bàn phím, bạn có thể kiểm thử phần lớn hành vi do máy quét điều khiển chỉ bằng cách gõ nhanh vào trường đang có tiêu điểm, hoặc bằng công cụ trình duyệt kiểm tra sự kiện bàn phím (xem các công cụ được liên kết bên dưới).

Hậu tố ENTER và TAB

Hầu hết máy quét được cấu hình thêm một lần nhấn phím hậu tố sau dữ liệu đã giải mã, thường là ENTER (xuống dòng, 0x0D), đôi khi TAB (0x09) hoặc một chuỗi tùy chỉnh. Nhờ đó ứng dụng nhận biết dữ liệu quét kết thúc ở đâu mà không cần hết thời gian chờ — hậu tố đóng vai trò tín hiệu gửi, giống nhấn Enter sau khi gõ vào trường văn bản.

Thời gian của máy quét

Máy quét truyền toàn bộ nội dung mã vạch trong chưa đầy một giây, thường với khoảng cách vài mili giây giữa các ký tự. Người gõ cùng chuỗi thường có khoảng cách 100–300 ms trở lên giữa các lần nhấn. Khác biệt thời gian này là cơ sở của logic “nhận diện máy quét” trong nhiều ứng dụng POS và kho, vốn theo dõi các đợt nhập nhanh bất thường rồi ngay sau đó là phím hậu tố.

Với ứng dụng của bạn, điều này có nghĩa: nếu muốn phân biệt đầu vào máy quét với việc gõ tay, hãy đo thời gian giữa các lần nhấn phím. Sự kiện bàn phím chuẩn của trình duyệt không mang thông tin về nguồn nhập, nên không có cờ đặc biệt để kiểm tra.

Tự thử

Dùng trình kiểm thử đầu vào mã vạch để quét một mã vạch thật và xem giá trị thu được, thời gian cùng việc phát hiện hậu tố theo thời gian thực. Để đi sâu vào hành vi keyboard wedge, hãy xem Giải thích HID keyboard wedge.