top of page

Một mã vạch hoạt động như thế nào?


Nếu nói đến phương diện công nghệ mã vạch thì có nhiều điều thú vị. Lợi ích của nó mang lại với các ngành công nghiệp và quản lý là đều không thể bàn cãi. Nếu bạn đã thử cầm một máy quét để quét rồi, thì chắc cũng băn khoăn một điều. Vậy mã vạch lưu thông tin như thế nào? Và mã vạch hoạt động như thế nào? Mình sẽ cố gắng ngắn gọn và dễ hiểu nhất có thể.



Mình sẽ đi riêng theo từng loại mã vạch 1D và 2D cho dễ hiểu. Vì nguyên tắc hoạt động của 2 mã này có phần tương tự, nhưng cũng không giống nhau. Tách ra và đi từng loại mã kèm theo ví dụ sẽ rõ ràng hơn.

Mã vạch 1D có một chức năng hoạt động khá là dễ hiểu. Có 2 loại thanh mã là thanh đen và thanh trắng. Một số tại liệu có thể nói là thanh mã và khoảng trắng. Sau đó tùy theo quy ước mà các cột mã này sẽ có những quy đổi ra thông tin. Nó có thể chia ra một số kiểu quy đổi như sau:


Mã vạch hoạt động như thế nào - Mã 1D

Mã nhị phân (Binary Code) là mã nền tảng cho rất nhiều loại mã vạch. Không chỉ mã 1D mà mã 2D cũng có liên quan đến mã nhị phân. Vì máy tính thường chỉ nhận dạng được dạng mã phân theo số 0 và 1. Khi máy quét mã vạch quét qua một mã. Nó sẽ nhận dạng mã này theo luật sau:

  • Thanh mã đen không phản xạ ánh sáng nên là số 1

  • Khoảng trống (thanh mã trắng) phản xạ ánh sáng là số 0

Từ đó sự sắp xếp của số 0 và 1 kèm theo các mục mở đầu, kết thúc sẽ tạo ra mã vạch hoàn chỉnh. Mình sẽ lấy ví dụ chi tiết của một mã vạch hoạt động như thế nào ngay dưới đây.


Lấy ví dụ của mã vạch UPC-A 12 chữ số dưới đây. Số dưới mã vạch là 0 51000 01251 7. Ở mã EAN-12 hay UPC-A này, các thanh mã đều bằng nhau. Dù là thanh mã đen hay khoảng trống. Nếu bạn thấy có khoảng trống lớn hay thanh mã dày hơn thì là các thanh giống nhau hợp lại. Theo quy tắc trên, nhìn cột mã này phần thành 0 và 1, sẽ có kết quả như hình.


Mã vạch hoạt động như thế nào - Mã 1D

101 đầu và cuối cùng của mã là mã bắt đầu và mã kết thúc. 5 số ở giữa là mã giữ trung tâm. Ba mã này cho bạn biết khi nào một chuỗi mã vạch bắt đầu. Tương tự là 6 số ở 2 bên bắt đầu và kết thúc ra sao. Điều nay quan trọng. Vhi chia ra như hình. Bạn sẽ thấy ngoài 3 cột mã thì còn có 2 phần. Phần bên trái sẽ thành số theo một quy luật khác nhau. Và bên phải cũng sẽ có luật khác nhau để hình thành số.


Mã vạch hoạt động như thế nào - Mã 1D

Dựa vào hình thì bạn đã hình thành được mã số của nó. Và nó giống hệt mã ghi ở bên dưới đúng không?

Một điểm chú ý là phần bên trái (trừ các số bắt đầu và kết thúc) có lượng số 1 là số lẻ. Còn bên phải thì có số lượng số 1 là số chẵn. Điều này để phân biệt máy tính đang đọc mã vạch ở chiều nào. Nếu máy đọc mã vạch đưa vào máy tính mà thấy số lượng số 1 chẵn ở bên trái? Thì nó sẽ hiểu là mã đã bị lật 180 độ. Máy chỉ cần lật mã lại và xử lý chúng.

Đây cũng là một mã tương tự như UPC-A / EAN-12. Tuy nhiên nó có phần hơi khác biệt. Cách chia 0 và 1 thì giống nhau, và các phần chia ra cũng vậy. Tuy nhiên lúc chia thì sẽ có 1 số đầu tiên, 6 số bên trái và 6 số bên phải. Tổng các số là 13 số. Nhưng 6 số bên trái này có cách tính hơi…kỳ lạ 1 chút. Số đầu tiên không được mã hóa vào mã vạch.


Mã vạch hoạt động như thế nào - Mã 1D

Vì sao lại thế? Mã vạch EAN-13 hoạt động khác UPC như thế nào? Dãy 6 số bên trái quyết định số đầu tiên của mã vạch. 6 số được cấu tạo bởi 3 số lẻ và 3 số chẵn. Tùy theo vị trí của 3 số này mà con số đầu tiên sẽ được quyết định. Với L là số lẻ và G là số chẵn. Mỗi số L và G có cách sắp xếp 0 và 1 ứng với các số từ 0 – 9 khác nhau. Bạn có thể tham khảo cách sẵp xếp các số L và G tại đây.


Lấy ví dụ mã EAN với số 4 070071 967072. Nếu phân tích các mã ra 1 và 0 của nhị phân, ta có kết quả như hình. Nếu bạn nhìn vào số đầu tiên là 4, bạn biết rắc 6 số đằng sau nó phân theo thứ tự LGLLGG. Các số LG được phân như sau:


Nó phù hợp với từng thanh mã 1 và 0 có trên mã vạch. 6 số phía bên phải tính theo số mà UPC dành cho dãy số bên phải. Từ đó mà có mã EAN-13 như bạn đã thấy.


Có một số loại mã 1D được cấu tạo theo độ rộng của các thanh mã. Sự kết hợp của các thanh mã rộng và hẹp sẽ tạo thành một số hay chữ bất kì. Ví dụ dưới đây sẽ chứng tỏ điều đó.

Mã ITF 25 là một trong những ví dụ thú vị của mã 1D. Vậy mã vạch hoạt động như thế nào với ITF 25? Khá đơn giản. Các con số cung cấp thông tin như mã UPC hay EAN. Nhưng các hình thanh các con số thì khác. ITF 25 dựa vào độ rộng các thanh mã để phân thành chữ số. Ngoài thanh đen và khoảng trống, mỗi thanh mã còn phân ra 2 loại là rộng (W) và hẹp (N). Số đầu tiên được xác định bằng 5 thanh đen, số thứ 2 là 5 khoảng trống. Và tiếp tục như thế.



Mã vạch hoạt động như thế nào - Mã 1D

Lấy ví dụ về mã 1234567895. Giả sử nếu không có số kèm theo thì cách đọc như sau:

  • Kí tự bắt đầu (start code) là thanh mã hẹp – khoảng trống hẹp – thanh mã hẹp - khoảng trống hẹp (NNNN). Sau khi xác định mã này, thì số đầu tiên bắt đầu từ thanh mã đen sau khoảng trống đó.

  • Sau khi xong hết 10 số, thì còn dư lại một thanh mã rộng, 1 khoảng trống hẹp và 1 thanh mã hẹp. Đó là kí tự kết thúc (Close code).

Các kí tự từ 0 – 9 được mã hóa theo bảng:


Mã vạch hoạt động như thế nào - Mã 1D

Nói về một mã vạch hoạt động như thế nào thì không thể bỏ qua 2D được. Mã này có cấu trúc hoạt động và các nhận biết hơi phức tạp. Chính vì vậy mà mình tách hẳn ra một phần riêng biệt. Căn bản của mã 2D này theo mô tuýp chung như sau:

Mỗi mã vần một “Mô tuýp tìm kiếm” – Finding Pattern. Nó cho bạn biết được độ lớn và hướng của mã. Sau đó là một alignment pattern giúp kiểm tra mã có bị hư hại hay không. Từ đó khi bạn đưa máy quét mã vạch vào thì máy sẽ dựa theo phần chỉnh lỗi có trong mã để đọc và sửa.


Mã vạch hoạt động như thế nào - Mã 2D

Mỗi mã vạch 2D được phân thành các khung mã nhỏ (Square). Ví dụ như FCN01 thì F là 1 kí tự mã hóa được xếp vào 1 Square. Mỗi khung mã chia thành 8 ô nhỏ, gọi là cell hoặc module. Tùy theo đọ lớn của mã mà trong đó sẽ có bao nhiêu khung. Nếu như 21 x 21 sẽ có 21 khung như vậy. Độ phức tạp cao là nguyên nhân làm các máy quét mã vạch 1D không đọc được chúng.

Làm sao hiểu được mã vạch hoạt động như thế nào nếu chưa nhìn qua mã QR Code phải không? Dưới đây mình có một ví dụ về mã như sau:

Mã này có dòng chữ của Website: Youtube. Nhìn vào mã này, có 5 điểm bạn cần chú ý:


  • Số 1 là Finding Pattern để xác định độ lớn. Máy đọc mã vạch có thể nhận ra cạnh của mã vạch nhờ vào chúng.

  • Số 2 là đường ô trắng đen xen kẽ này. Chúng là Timing Pattern, giúp cho máy nhận biết cột và hàng của mã.

  • Vùng số 3 sẽ cho biết loại thông tin có trong này, web, link hay thông tin khác.

  • Số 4 thể hiện phiên bản của mã QR đó (thường từ 6 đến 40 thì máy quét sẽ dựa vào phần này). Nếu dưới 6 thì máy sẽ nhận diện dựa vào các phần khác trong mã.

  • Phần số 5 là Alignment Pattern như mình nói ở trên.

Phần còn lại là phần chứa thông tin và phần sửa lỗi. Phần sửa lỗi để giúp cho mã có bị hư hại vẫn có thể được đọc. Sau khi máy xác định đúng kiểu hình giải mã, nó sẽ nghịch đảo mã lại. Sau đó sẽ chia ra các square có 8 module và đọc. Từ đó sẽ nhận diện module đen và giải. Mình sẽ đi chi tiết các giải vào một bài khác.



Mã vạch hoạt động như thế nào - Mã 2D

Ví dụ của mã Data Matrix ở dưới đây. Cũng như mã QR, nó được chia thành các square có 8 modules. Finding Pattern là đường đên ngoài cùng lên trái, hình dạng chữ L. Timing Pattern là đường ngoài cùng chữ L ngược, cấu tạo bởi các chấm đen và trắng.

Trong đó là các square nhưng chỉ có một số square được dùng để chứa thông tin. Còn lại là dùng để sửa lỗi cho mã (phòng trường hợp bị hỏng). Cũng như Finding Pattern, các square cũng có hình dáng chữ L với 2 ô trên cùng và 2 hàng 3 ô phía dưới sắp xếp chồng nhau. Trong các ô này, những module màu đen sẽ được cộng và tính bởi máy quét. Từ đó sẽ qui đổi ra thông tin dựa vào bảng ASCII. Mì sẽ đi qua cách giải mã nó và các loại mã 2D ở lần kế tiếp nhé.

Đó là cách một mã vạch hoạt động và chia sẻ thông tin với máy đọc mã. Hơi dài dòng một chút nhưng hi vọng bạn hiểu được phần nào về cách vận hành của chúng. Mã nào cũng có vẻ phức tạp phải không?

Featured Posts
Recent Posts
Archive
Search By Tags
Follow Us
  • Facebook Basic Square
  • Twitter Basic Square
  • Google+ Basic Square
bottom of page