Máy quét mã vạch

Máy quét mã vạch là một máy thu nhận hình ảnh của mã vạch in trên các bề mặt và chuyển thông tin chứa trong mã vạch đến máy tính hay các thiết bị cần thông tin này. Nó thường có một nguồn sáng kèm theo thấu kính, để hội tụ ánh sáng lên mã vạch, rồi thu ánh sáng phản xạ về một cảm quang chuyển hóa tín hiệu ánh sáng thành tín hiệu điện. Ngoài ra, nhiều máy quét mã vạch còn có thêm mạch điện tử xử lý tín hiệu thu được từ cảm quang để chuyển thành tín hiệu phù hợp cho kết nối với máy tính. 
Công nghệ máy quét mã vạch định dạng được sử dụng để đọc và giải mã các mã vạch trên sản phẩm. Máy quét được thiết kế để quét qua đường thẳng và khoảng trống của mã vạch, sau đó chuyển đổi chúng thành một mã số hoặc chuỗi ký tự. Mã số này sau đó được sử dụng để truy xuất các thông tin về sản phẩm từ một cơ sở dữ liệu.
Công nghệ mắt đọc cơ bản.
Hiện nay máy quét mã vạch được làm trên ba công nghệ cơ bản:
Phương thức kết nối.
Cổng serial.
Các máy quét mã vạch ban đầu, thuộc mọi định dạng, hầu như đều sử dụng phổ biến giao diện nối tiếp RS-232 phổ biến lúc bấy giờ. Đây là một cách kết nối đơn giản và phần mềm để truy cập nó cũng tương đối đơn giản, mặc dù cần được viết cho các máy tính cụ thể và các cổng nối tiếp của chúng.
Giao diện độc quyền.
Có một vài giao diện khác ít phổ biến hơn. Chúng được sử dụng trong các hệ thống EPOS lớn với phần cứng chuyên dụng, thay vì gắn vào các máy tính hàng hóa hiện có. Trong một số giao diện này, thiết bị quét trả về tín hiệu "thô" tỷ lệ thuận với cường độ nhìn thấy khi quét mã vạch. Điều này sau đó đã được giải mã bởi thiết bị chủ. Trong một số trường hợp, thiết bị quét sẽ chuyển đổi ký hiệu của mã vạch thành ký hiệu mà thiết bị chủ có thể nhận dạng được, chẳng hạn như Code 39 (Mã 39).
Giả lập bàn phím (USB, PS/2, v.v.).
Khi PC với các giao diện tiêu chuẩn khác nhau phát triển, việc kết nối phần cứng vật lý với nó trở nên dễ dàng hơn bao giờ hết. Ngoài ra, có những khuyến khích thương mại để giảm độ phức tạp của phần mềm liên quan. Phần cứng "giả lập bàn phím" ban đầu được cắm vào giữa cổng PS/2 và bàn phím, với các ký tự từ máy quét mã vạch xuất hiện chính xác như thể chúng đã được nhập vào bàn phím. Ngày nay, thuật ngữ này được sử dụng rộng rãi hơn cho bất kỳ thiết bị nào có thể được cắm vào và đóng góp vào luồng dữ liệu đến "giả lập bàn phím". Nêm bàn phím cắm qua Giao diện USB có sẵn.
Phương pháp "giả lập bàn phím" làm cho việc thêm những thứ như đầu đọc mã vạch vào hệ thống trở nên đơn giản. Phần mềm cũng có thể không cần thay đổi.
Sự hiện diện đồng thời của hai "bàn phím" đòi hỏi người dùng phải cẩn thận. Ngoài ra, mã vạch thường chỉ cung cấp một tập hợp con các ký tự được cung cấp bởi bàn phím thông thường.
USB.
Sau thời đại PS/2, đầu đọc mã vạch bắt đầu sử dụng cổng USB thay vì cổng bàn phím, điều này thuận tiện hơn. Để duy trì khả năng tích hợp dễ dàng với các chương trình hiện có, đôi khi cần phải tải trình điều khiển thiết bị được gọi là "phần mềm nêm", điều này tạo điều kiện thuận lợi cho hành vi giả mạo bàn phím của phần cứng "giả lập bàn phím" cũ.
Ngày nay, đầu đọc mã vạch USB là "cắm và chạy", ít nhất là trong các hệ thống Windows. Mọi trình điều khiển cần thiết đều được tải khi thiết bị được cắm vào.
Trong nhiều trường hợp, lựa chọn loại giao diện USB (HID, CDC) được cung cấp. Một số có PoweredUSB.
Mạng không dây.
Một số đầu đọc mã vạch cầm tay hiện đại có thể được vận hành trong mạng không dây theo IEEE 802.11g (WLAN) hoặc IEEE 802.15.1 (Bluetooth). Một số đầu đọc mã vạch cũng hỗ trợ tần số vô tuyến viz. 433 MHz hoặc 910 MHz. Độc giả không có nguồn điện bên ngoài yêu cầu pin của họ thỉnh thoảng được sạc lại, điều này có thể khiến chúng không phù hợp với một số mục đích sử dụng.
Độ phân giải.
Độ phân giải của máy quét được đo bằng kích thước của chấm sáng do đầu đọc phát ra. Nếu chấm sáng này rộng hơn bất kỳ vạch hoặc khoảng trắng nào trong mã vạch, thì nó sẽ chồng lên hai thành phần (hai khoảng trắng hoặc hai vạch) và có thể tạo ra kết quả sai. Mặt khác, nếu sử dụng chấm sáng quá nhỏ, nó có thể hiểu sai bất kỳ điểm nào trên mã vạch khiến đầu ra cuối cùng bị sai.