QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA TOÁN - TIN HỌC CHUYÊN NGÀNH : TOÁN – TIN ỨNG DỤNG
WUX
LUẬN VĂN TỐT NGHIỆP
ĐỀ TÀI :
Giáo Viên Hướng Dẫn : ThS PHẠM THẾ BẢO
Giáo Viên Phản Biện : ThS NGUYỄN GIANG SƠN Sinh Viên Thực Hiện : ÂU DƯƠNG ĐẠT
LÊ THÀNH NGUYÊN
Trang 2NIÊN KHOÁ 2000 - 2004
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Trang 3
LỜI CẢM ƠN
Chúng em xin bày tỏ chân thành lòng biết ơn đến thầy Phạm Thế Bảo, người đã
cung cấp tài liệu, tận tình hướng dẫn, chỉ bảo chúng em trong suốt quá trình làm và
hoàn thành luận văn
Chúng em xin cảm ơn các thầy, cô trong khoa Toán – Tin học đã tạo mọi điều
kiện thuận lợi giúp đỡ chúng em trong suốt bốn năm học đại học
Đồng thời, chúng em xin cảm ơn các anh, chị khóa trước đã giúp đỡ chúng em
nhiệt tình và cho chúng em nhiều lời khuyên bổ ích
Cảm ơn các bạn sinh viên lớp Toán – Tin học 2000 đã chia sẻ và động viên chúng
tôi trong suốt quá trình thực hiện luận văn
Cuối cùng, chúng con xin gửi lời cảm ơn chân thành nhất đến bố mẹ và mọi
người trong gia đình đã động viên, giúp đỡ chúng con cả về vật chất lẫn tinh thần để
chúng con có được kết quả ngày hôm nay
TP Hồ Chí Minh, tháng 7 năm 2004
Trang 4II Mã vạch 2 chiều: Error! Bookmark not defined II.1 Thông tin về mã vạch 2 chiều: Error! Bookmark not defined II.1.1 Mã vạch 2 chiều là gì? Error! Bookmark not defined II.1.2 Mã vạch 2 chiều chứa đựng thông tin gì? Error! Bookmark not
defined.
II.1.3 Cấu trúc của mã vạch 2 chiều: Error! Bookmark not defined II.2 Ứng dụng trong thực tế: Error! Bookmark not defined II.3 Ưu khuyết điểm: Error! Bookmark not defined II.3.1 Ưu điểm: Error! Bookmark not defined II.3.2 Khuyết điểm: Error! Bookmark not defined.
Trang 5II.4 Giới thiệu một số loại mã vạch: Error! Bookmark not defined.
II.4.1.PDF417: Error! Bookmark not defined.
II.4.2.Data Matrix: Error! Bookmark not defined II.4.3 Maxi Code: Error! Bookmark not defined II.5 So sánh giữa các loại mã vạch: Error! Bookmark not defined II.6 Mã vạch PDF417: Error! Bookmark not defined II.6.1 Mã hóa mã vạch PDF417: Error! Bookmark not defined II.6.1.1 Mã hóa mức cao: Error! Bookmark not defined II.6.1.2 Mã hóa mức thấp Error! Bookmark not defined II.6.2 Cơ chế phát hiện và sửa lỗi của mã vạch PDF417: Error! Bookmark
not defined.
II.6.2.1 Cấp độ sửa lỗi được đề nghị : Error! Bookmark not defined II.6.2.2 Những vấn đề khác cần biết đến khi sử dụng cấp độ sửa lỗi: Error!
Bookmark not defined.
II.6.2.3 Bảng hệ số đa thức khai triển tương ứng các cấp độ bảo mật: Error!
Bookmark not defined.
III Ứng dụng thực tế của mã vạch: Error! Bookmark not defined III.1 Ứng dụng trong xét nghiệm Error! Bookmark not defined III.2 Ứng dụng trong việc trồng và bán rau sạch Error! Bookmark not defined.
III.3.Ứng dụng trong việc tránh sử dụng nhầm thuốc Error! Bookmark not
defined.
III.4 Ứng dụng trong việc làm CMND Error! Bookmark not defined III.5 Ứng dụng trong làm thẻ học sinh Error! Bookmark not defined III.6 Ứng dụng trong việc ghi hạn sử dụng của sữa Vinamilk Error! Bookmark
CHƯƠNG 2 – QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH Error!
Bookmark not defined
Trang 6I Đặt vấn đề: Error! Bookmark not defined.
II Phân tích yêu cầu: Error! Bookmark not defined II.1 Về mặt ứng dụng: Error! Bookmark not defined II.1.1 Module 1: Error! Bookmark not defined II.1.2 Module 2: Error! Bookmark not defined II.1.3 Module 3: Error! Bookmark not defined II.1.4 Module 4: Error! Bookmark not defined II.2 Về mặt kĩ thuật: Error! Bookmark not defined II.3 Các yêu cầu khác: Error! Bookmark not defined III Thiết kế: Error! Bookmark not defined III.1 Kiến trúc hệ thống: Error! Bookmark not defined III.2 Thiết kế tổng quát: Error! Bookmark not defined III.2.1 Thủ thư: Error! Bookmark not defined III.2.1.1 Ứng dụng web: Error! Bookmark not defined III.2.1.2 Ứng dụng trên máy đơn: Error! Bookmark not defined III.2.2 Sinh viên: Error! Bookmark not defined III.3 Thiết kế Cơ sở dữ liệu: Error! Bookmark not defined III.3.1 Bảng Sinh viên: Error! Bookmark not defined III.3.2 Bảng Hẹn: Error! Bookmark not defined III.3.3 Bảng Hẹn sinh viên: Error! Bookmark not defined III.3.4 Bảng Lớp: Error! Bookmark not defined III.3.5 Bảng Phòng máy: Error! Bookmark not defined III.3.6 Bảng Thủ thư : Error! Bookmark not defined III.4 Thiết kế xử lý: Error! Bookmark not defined III.4.1 Xử lý: đăng kí làm thẻ của sinh viên Error! Bookmark not defined III.4.2 Xử lý: đăng nhập của sinh viên Error! Bookmark not defined III.4.3 Xử lý: đăng nhập của thủ thư Error! Bookmark not defined III.4.4 Xử lý: hẹn ngày chụp hình của thủ thư Error! Bookmark not defined III.4.5 Xử lý: thêm lớp của thủ thư Error! Bookmark not defined III.4.6 Xử lý: tìm kiếm sinh viên của thủ thư Error! Bookmark not defined III.4.7 Xử lý: quy định thời gian của thủ thư Error! Bookmark not defined.
Trang 7III.4.9 Xử lý: in phiếu chụp hình cho sinh viên của thủ thư Error! Bookmark
CHƯƠNG 3 – CÔNG NGHỆ SỬ DỤNG Error! Bookmark not defined.
I JSP / Servlet: Error! Bookmark not defined I.1 Java Server Page (JSP): Error! Bookmark not defined I.1.1 Khái niệm: Error! Bookmark not defined I.1.2 Cấu trúc thẻ: Error! Bookmark not defined I.1.2.1 Thẻ chỉ dẫn: Error! Bookmark not defined I.1.2.2 Thẻ kịch bản: Error! Bookmark not defined I.1.2.3 Các hành động chuẩn: Error! Bookmark not defined I.1.3 Các đối tượng ẩn (implicit object): Error! Bookmark not defined I.1.3.1 Đối tượng Request: Error! Bookmark not defined I.1.3.2 Đối tượng Response: Error! Bookmark not defined I.1.3.3 Đối tượng session: Error! Bookmark not defined I.1.3.4 Đối tượng Application: Error! Bookmark not defined I.1.3.5 Đối tượng Out: Error! Bookmark not defined I.1.3.6 Đối tượng Config: Error! Bookmark not defined I.1.3.7 Đối tượng Exception: Error! Bookmark not defined I.1.4 Chu trình sống của JSP Error! Bookmark not defined I.1.4.1 Biên dịch trang JSP: Error! Bookmark not defined I.1.4.2 Nạp trang: Error! Bookmark not defined I.1.4.3 Khởi tạo: Error! Bookmark not defined I.1.4.4 Thực thi: Error! Bookmark not defined I.1.4.5 Dọn dẹp: Error! Bookmark not defined I.2 Servlet: Error! Bookmark not defined I.2.1 Khái niệm: Error! Bookmark not defined I.2.2 Các phương thức xử lý cơ bản: Error! Bookmark not defined I.2.2.1 Phương thức khởi tạo init(): Error! Bookmark not defined.
Trang 8I.2.2.2 Phương thức phục vụ service(): Error! Bookmark not defined I.2.2.3 Phương thức huỷ destroy(): Error! Bookmark not defined I.2.2.4 Phương thức getServletConfig() và getServletInfo(): Error!
Bookmark not defined.
I.2.3 Chu trình sống của servlet: Error! Bookmark not defined I.2.3.1 Nạp servlet: Error! Bookmark not defined I.2.3.2 Khởi tạo servlet: Error! Bookmark not defined I.2.3.3 Thực thi servlet: Error! Bookmark not defined I.2.3.4 Dọn dẹp servlet: Error! Bookmark not defined I.3 So sánh giữa JSP và Servlet: Error! Bookmark not defined.
II JDBC: Error! Bookmark not defined II.1 Giới thiệu: Error! Bookmark not defined II.2 Khái quát: Error! Bookmark not defined II.2.1 java.sql.DriverManager Error! Bookmark not defined II.2.2 java.sql.Connection Error! Bookmark not defined II.2.3 java.sql.Statement Error! Bookmark not defined II.2.4 java.sql.ResultSet Error! Bookmark not defined II.3 Các kiểu JDBC: Error! Bookmark not defined II.3.1 Kiểu 1:JDBC sử dụng cầu nối ODBC (JDBC-ODBC Bridge) Error!
Bookmark not defined.
II.3.2 Kiểu 2:JDBC kết nối trực tiếp với các trình điều khiển cơ sở dữ liệu
Error! Bookmark not defined II.3.3 Kiểu 3:JDBC kết nối thông qua các ứng dụng mạng trung gian Error!
Bookmark not defined.
II.3.4 Kiểu 4:JDBC kết nối thông qua các trình điều khiển đặc thù ở xa Error!
Bookmark not defined.
II.4 Truy xuất cơ sở dữ liệu: Error! Bookmark not defined II.4.1 Kết nối với cơ sở dữ liệu: Error! Bookmark not defined II.4.2 Truy vấn dữ liệu: Error! Bookmark not defined II.4.3 Trích xuất dữ liệu: Error! Bookmark not defined II.4.4 Đóng kết nối: Error! Bookmark not defined.
Trang 9III.1 Tổng quan: Error! Bookmark not defined III.2 Kiến trúc JMF: Error! Bookmark not defined III.2.1 Dữ liệu nguồn: Error! Bookmark not defined III.2.1.1 Dữ liệu nguồn kéo: Error! Bookmark not defined III.2.1.2 Dữ liệu nguồn đẩy: Error! Bookmark not defined III.2.2 Thiết bị thu: Error! Bookmark not defined III.2.3 Player: Error! Bookmark not defined III.2.3.1 Không nhận biết: Error! Bookmark not defined III.2.3.2 Nhận biết: Error! Bookmark not defined III.2.3.3 Đã nhận biết: Error! Bookmark not defined III.2.3.4 Tìm kiếm: Error! Bookmark not defined III.2.3.5 Đã tìm kiếm: Error! Bookmark not defined III.2.3.6 Bắt đầu: Error! Bookmark not defined III.2.4 Processor: Error! Bookmark not defined III.2.4.1 Định hình: Error! Bookmark not defined III.2.4.2 Đã định hình: Error! Bookmark not defined III.2.5 DataSink: Error! Bookmark not defined III.2.6 Format: Error! Bookmark not defined III.2.7 Manager: Error! Bookmark not defined III.2.7.1 Manager: Error! Bookmark not defined III.2.7.2 CaptureDeviceManager: Error! Bookmark not defined III.2.7.3 PlugInManager: Error! Bookmark not defined III.3 Các phương thức thực hiện: Error! Bookmark not defined III.3.1 Tạo ra Player: Error! Bookmark not defined III.3.2 Thu dữ liệu media Error! Bookmark not defined III.4 Lấy hình ảnh từ webcam sử dụng JMF: Error! Bookmark not defined III.4.1 Giới thiệu: Error! Bookmark not defined III.4.2 Tên thiết bị : Error! Bookmark not defined III.4.3 Lấy định dạng đúng: Error! Bookmark not defined III.4.4 Lấy DataSource: Error! Bookmark not defined III.4.5 Lấy Processor Error! Bookmark not defined III.4.6 PushBufferStream: Error! Bookmark not defined.
Trang 10III.4.7 Lấy Image: Error! Bookmark not defined III.5 Chương trình đầy đủ minh họa việc lấy ảnh từ camera: Error! Bookmark
not defined.
CHƯƠNG 4 – CÀI ĐẶT, ĐÁNH GIÁ VÀ HƯỚNG PHÁT TRIỂN Error!
Bookmark not defined
I Cài đặt: Error! Bookmark not defined I.1 Tại sao cần cài đặt cơ chế chia sẻ kết nối (Connnection Pool): Error!
Bookmark not defined.
I.2 Tại sao lại sử dụng JMF: Error! Bookmark not defined I.3 Hình ảnh các module của hệ thống Error! Bookmark not defined.
II Đánh giá: Error! Bookmark not defined II.1 Tự đánh giá: Error! Bookmark not defined II.2 Thư viện đánh giá: Error! Bookmark not defined III Hướng phát triển: Error! Bookmark not defined.
PHỤ LỤC Error! Bookmark not defined.
I Cài đặt hệ quản trị CSDL: MS SQL Server 2000 Error! Bookmark not defined.
II Cài đặt Webserver : Apache Tomcat 5.0.25 Error! Bookmark not defined III Cài đặt JMF : Java Media Framework Error! Bookmark not defined.
TÀI LIỆU THAM KHẢO Error! Bookmark not defined.
Trang 11LỜI MỞ ĐẦU
Trong những năm gần đây với sự phát triển vượt bậc của công nghệ thông tin, những ứng dụng của công nghệ thông tin vào các lãnh vực đã đóng vai trò to lớn cho
sự phát triển của nhân loại Áp dụng quản lý bằng máy tính thay cho quản lý bằng tay
ở các tổ chức, công ty, cơ quan, đơn vị… là vô cùng cần thiết khi ở đó, sự nhanh chóng, chính xác và tính hiệu quả được đặt lên hàng đầu
Ở Thư viện trường Đại học Khoa Học Tự Nhiên, việc quản lý sinh viên sử dụng phòng máy của thư viện từ trước đến nay đều chủ yếu thực hiện bằng tay, từ việc làm thẻ, dán ảnh, đến nhập thông tin của sinh viên vào máy tính Vì vậy, sẽ mất nhiều thời gian cho việc quản lý và hiệu quả không cao Do đó, mục tiêu của đề tài là xây dựng chương trình quản lý sinh viên sử dụng phòng máy và tạo thẻ dựa trên mã vạch, qua
đó tăng độ chính xác và giảm thiểu sai sót
Chương trình quản lý sinh viên sử dụng phòng máy là một bộ công cụ hỗ trợ quản lý phòng máy thư viện bao gồm: hệ thống Web cho phép sinh viên đăng kí trực tuyến, hẹn ngày chụp hình trực tuyến, thủ thư quản lý sinh viên; công cụ tạo và in thẻ phòng máy; công cụ quản lý sử dụng máy tính Chương trình sử dụng Java là ngôn ngữ mạnh theo hướng thuần đối tượng, mã nguồn mở để xây dựng các ứng dụng Chương trình chạy trên môi trường Window có giao diện thân thiện với người sử dụng
Do khả năng có hạn và thời gian không cho phép nên không tránh khỏi những sai sót, rất mong sự góp ý của quý thầy cô và các bạn
Một lần nữa xin chân thành cảm ơn tất cả quý Thầy, Cô và các bạn !
Trang 12CHƯƠNG 1 – KHÁI NIỆM MÃ VẠCH
Trang 13I.1.2 Mã vạch chứa đựng thông tin gì?
Nội dung được chứa đựng trong mã vạch tuỳ thuộc vào người dùng muốn mã hoá cái gì, nội dung đó có thể là mã số một mặt hàng, tên nhân viên, tên hàng hoá,
Đa số các mã vạch có một hàng gồm chữ và số ngay bên dưới mã vạch Chúng ta
có thể dễ dàng đọc nội dung trong hàng này Nó được sử dụng khi mã vạch vì một lý
do nào đó bị hư hại, không đọc được Khi đó, hàng này sẽ đóng vai trò cung cấp lại nội dung đã được mã hoá trong mã vạch
Bản thân mã vạch một chiều không chứa đựng cơ sở dữ liệu Khi mã được nhận thông qua một máy quét, người sử dụng lấy thông tin bằng cách tương ứng mã nhận được này vào một CSDL có sẵn, từ đó có được những nội dung cần biết
Trang 14Hình 1.2
I.1.3 Cấu trúc của mã vạch 1 chiều:
Mỗi mã vạch bắt đầu bằng kí tự bắt đầu và kết thúc bằng kí tự kết thúc Những kí
tự đặc biệt này giúp cho máy đọc có thể xác định được vị trí của mã vạch và quét từ đầu đến cuối
Mỗi mã vạch có thể có một kí tự kiểm tra ngay trước kí tự kết thúc Kí tự kiểm tra này được tính toán khi mã vạch được in ra dựa trên những kí tự trên mã vạch Máy đọc thực hiện tính toán kí tự kiểm tra và so sánh kết quả tính được với kí tự kiểm tra đọc được ở cuối mã vạch Nếu hai kết quả này không giống nhau, máy đọc sẽ cho rằng có cái gì đó sai sót, nó sẽ thoát ra và thử thực hiện lại một lần nữa
Nhằm nâng cao sự chính xác trong việc đọc mã vạch, có một vùng trống tại nơi
bắt đầu và kết thúc của mã vạch gọi là Quiet Zone Vùng trống này giúp cho máy đọc
mã vạch có thể xác định chính xác vị trí của kí tự bắt đầu và kết thúc của mã vạch
Thông thường, độ rộng của vùng Quiet Zone phải gấp 10 lần chiều rộng của thanh
hẹp nhất
Trang 15Hình 1.3
I.1.4 Tập kí tự:
Tập kí tự tuỳ thuộc vào loại dữ liệu mà mã vạch có thể mã hóa Thông thường, có
3 loại tập kí tự: số, chữ cái và số, và tất cả các kí tự trong bảng mã ASCII
Một mã vạch có tập kí tự số có nghĩa là mã vạch đó chỉ có thể mã hóa dữ liệu số
từ 0 đến 9 Một số kí tự bổ sung có thể được mã hóa bình thường là những kí tự điều khiển của mã vạch, ví dụ như là kí tự bắt đầu, kết thúc
Một mã vạch có tập kí tự gồm chữ cái và số có nghĩa là mã vạch đó có thể mã hóa các số từ 0 đến 9 và chữ cái từ A đến Z Thêm vào đó, một số kí tự bổ sung có thể được mã hóa, ví dụ như là kí tự bắt đầu, kết thúc
Một mã vạch có tập kí tự bao gồm tất cả những kí tự trong bảng mã ASCII cho phép mã hóa tất cả các kí tự trong bảng mã ASCII Nó bao gồm tất cả các kí tự trong bảng mã ASCII, có giá trị từ 0 đến 127 và có thể được mã hóa bởi mã vạch
Trên lý thuyết, để mã hoá cùng một dữ liệu như nhau, mã vạch dùng tập kí tự số
sẽ sử dụng nhiều không gian vật lý hơn so với mã vạch dùng tập kí tự bao gồm tất cả các kí tự trong bảng mã ASCII Tuy nhiên, mã vạch có tập kí tự bao gồm tất cả các kí
tự trong bảng mã ASCII cho phép bạn linh động trong việc mã hóa nhiều dạng thông tin hơn so với mã vạch dùng tập kí tự số
I.1.5 Gián đoạn, liên tục:
Thông thường có hai loại mã vạch: gián đoạn và liên tục
Trang 16Mã vạch gián đoạn là dạng mã vạch mà mỗi kí tự được mã hóa trong mã vạch có thể được biểu diển riêng lẻ mà không có mối liên hệ nào đến phần còn lại trong mã vạch Những mã vạch như vậy có những kí tự ở cả đầu và cuối của mã vạch Những kí
tự riêng lẻ được tách biệt bởi một số khoảng trắng giữa các kí tự Khoảng trắng giữa những kí tự không chứa đựng thông tin gì cả, chức năng duy nhất của nó là tách biệt những kí tự ra
Hình 1.4
Mã vạch liên tục là một dạng mã vạch mà mỗi kí tự riêng lẻ của mã vạch không thể được tách biệt Thực tế là do những kí tự bắt đầu bằng một thanh và kết thúc bằng một khoảng trắng Khoảng trắng cuối cùng được kết thúc bởi thanh bắt đầu của kí tự tiếp theo Do đó, không có cách nào để có thể biết được khoảng trắng cuối cùng rộng bao nhiêu và cũng không thể biết được kí tự tiếp theo bắt đầu ở đâu Những mã vạch liên tục thông thường sử dụng một vài loại thanh kết thúc đặc biệt hay chuỗi kết thúc,
do đó khoảng trắng cuối cùng của kí tự dữ liệu cuối cùng được kết thúc bởi thanh kết thúc
Hình 1.5Trong ví dụ trên, mỗi kí tự bao gồm 4 thanh và 4 khoảng trắng Khoảng trắng cuối cùng của kí tự 1 được kết thúc bởi thanh đầu tiên của kí tự 2 Khoảng trắng cuối cùng của kí tự 2 được kết thúc bởi thanh đầu tiên của kí tự 3 Khoảng trắng cuối cùng
Trang 17của kí tự 3 được kết thúc bởi thanh đầu tiên của kí tự 4 Khoảng trắng cuối cùng của kí
tự 4 được kết thúc bởi thanh kết thúc
Với cùng một dữ liệu cần mã hoá như nhau, mã vạch gián đoạn cần sử dụng nhiều không gian hơn so với mã vạch liên tục do mã vạch gián đoạn tốn không gian cho khoảng trắng giữa các kí tự Tuy nhiên, mã vạch gián đoạn thông thường có thể được in ra với chất lượng kém- điều này đồng nghĩa với việc có thể sử dụng máy in rẻ Ngoài số lượng khoảng trắng mà hai loại mã vạch yêu cầu, cũng như loại và chất lượng của phần cứng được sử dụng để in nó, không có sự khác biệt tự nhiên nào trong vấn đề an toàn Điều này có nghĩa là, không thể nói rằng mã vạch liên tục thì an toàn hơn so với mã vạch gián đoạn hay ngược lại
I.1.6 Mã vạch có độ dài cố định, thay đổi:
Mã vạch có thể có chiều dài cố định hay thay đổi
Theo định nghĩa, mã vạch có chiều dài cố định mã hóa một số lượng kí tự xác định Ví dụ, mã vạch UPC-A thường mã hóa 12 kí tự Một ứng dụng không thể mã hoá
ít hơn hay nhiều hơn chiều dài được quy định trước là 12 kí tự Bản thân mã vạch xác định chiều dài dữ liệu
Mã vạch có chiều dài thay đổi có thể mã hoá một số lượng kí tự bất kì Ví dụ, Code128 có thể mã hóa một số lượng kí tự bất kì Bản thân mã vạch không xác định cụ thể bao nhiêu kí tự dữ liệu có thể được mã hoá
Chú ý rằng, tuỳ thuộc vào hiệu quả sử dụng, mã vạch có chiều dài thay đổi cũng
có thể được sử dụng như mã vạch có chiều dài cố định Ví dụ, nếu chúng ta sử dụng Code 128 để mã hoá một số nhận dạng có chiều dài luôn là 10 thì có nghĩa là chúng ta
đã sử dụng Code 128 như thể nó là mã vạch có chiều dài cố định
I.1.7 Mã vạch tự kiểm tra:
Mã vạch được xem như “tự kiểm tra” nếu có một lỗi in hay quét thì mã vạch sẽ không cho phép đọc một kí tự trong mã vạch thành một kí tự hợp lệ khác
Chú ý rằng “tự kiểm tra” không có nghĩa là tự sửa lỗi
Trang 18I.2 Ứng dụng:
Trong thực tế, chúng ta bắt gặp việc sử dụng mã vạch tại một số siêu thị trên cả nước giúp tăng hiệu quả bán hàng, giúp cho việc phục vụ khách hàng một cách nhanh chóng và hiệu quả Trên mỗi mặt hàng đều có một mã vạch tương ứng, khi khách hàng đem đến quầy tính tiền, nhân viên chỉ cần quét qua máy đọc mã vạch tất cả các mặt hàng, từ đó máy tính sẽ cho biết tổng số tiền khách hàng phải trả Điều này giúp giảm thiểu sự sai sót trong tính toán và nâng cao khả năng phục vụ cho khách hàng
Ứng dụng trong những quy trình kinh doanh, những quy trình cần được tự động tăng năng suất và giảm thiểu sự sai lầm của con người
Ứng dụng trong những sản phẩm xuất khẩu Hiện nay, hầu hết những quốc gia trên thế giới (hơn 80 quốc gia) đã đưa vào sử dụng mã vạch trên sản phẩm của họ Nền công nghiệp Việt Nam sẽ phải sử dụng mã vạch nếu muốn xuất khẩu sản phẩm của mình ra nước ngoài
Nói chung, mã vạch được ứng dụng khi có yêu cầu về sự nhận diện chính xác và tốc độ nhận diện
Tuỳ từng yêu cầu cụ thể của người sử dụng mà có các loại mã vạch tương ứng
Những mặt hàng ở USA và Canada UPC/EAN
Những mặt hàng trên toàn thế giới UPC/EAN
Những thùng carton được vận chuyển bằng
tàu
Code 128
Những thùng carton được vận chuyển bằng
tàu
Interleaved 2 of 5 hay Code 128
Những thùng carton được vận chuyển bằng
tàu
Interleaved 2 of 5 hay Code 128
Những thùng carton được vận chuyển bằng
tàu
Code 128
Số sêri trong việc xuất bản hàng loạt Code 128
Số sêri trong việc xuất bản hàng loạt Code 128
Địa chỉ thư trong các bưu điện ở Mỹ POSTNET
Kiểm tra trong ngân hàng MICR E-13B hay CMC-7
Trang 19I.3 Ưu khuyết điểm:
I.3.1 Ưu điểm:
Cải thiện hiệu quả thao tác
Tiết kiệm thời gian
Giảm bớt việc mắc lỗi
Giúp cho việc quản lý dễ dàng
I.3.2 Khuyết điểm:
Khuyết điểm chính của mã vạch một chiều đó là bản thân nó không thể chứa đựng thông tin của cơ sở dữ liệu Đây chính là điểm yếu của nó so với mã vạch hai chiều
I.4 Giới thiệu một số loại mã vạch:
Mã số EAN-13 gồm 13 con số có cấu tạo như sau :
Từ trái sang phải
Mã quốc gia: hai hoặc ba con số đầu
Mã doanh nghiệp: có thể là bốn, năm hoặc sáu con số
Mã mặt hàng: có thể là năm, bốn hoặc ba con số tùy thuộc vào mã doanh
nghiệp
Số cuối cùng là số kiểm tra
Để đảm bảo tính thống nhất và tính đơn nhất của mã số, mã quốc gia phải do tổ chức mã số vật phẩm quốc tế (EAN lnternational) cấp cho các qưốc gia là thành viên của tổ chức này Mã số quốc gia của Việt Nam là 893 Mã số EAN-8 gồm 8 con số có
Trang 20cấu tạo như sau : ba số đầu là mã số quốc gia giống như EAN-13, bốn số sau là mã mặt hàng, số cuối cùng là số kiểm tra
00-13: USA & Canada 20-29: In-Store Functions 30-37: France
40-44: Germany 45: Japan (also 49) 46: Russian Federation
471: Taiwan 474: Estonia 475: Latvia
477: Lithuania 479: Sri Lanka 480: Philippines
482: Ukraine 484: Moldova 485: Armenia
486: Georgia 487: Kazakhstan 489: Hong Kong
49: Japan (JAN-13) 50: United Kingdom 520: Greece
528: Lebanon 529: Cyprus 531: Macedonia
535: Malta 539: Ireland 54: Belgium & Luxembourg 560: Portugal 569: Iceland 57: Denmark
590: Poland 594: Romania 599: Hungary
600 & 601: South Africa 609: Mauritius 611: Morocco
613: Algeria 619: Tunisia 622: Egypt
625: Jordan 626: Iran 64: Finland
690-692: China 70: Norway 729: Israel
73: Sweden 740: Guatemala 741: El Salvador
742: Honduras 743: Nicaragua 744: Costa Rica
746: Dominican Republic 750: Mexico 759: Venezuela
76: Switzerland 770: Colombia 773: Uruguay
775: Peru 777: Bolivia 779: Argentina
780: Chile 784: Paraguay 785: Peru
786: Ecuador 789: Brazil 80 - 83: Italy
84: Spain 850: Cuba 858: Slovakia
859: Czech Republic 860: Yugloslavia 869: Turkey
87: Netherlands 880: South Korea 885: Thailand
888: Singapore 890: India 893: Vietnam
899: Indonesia 90 & 91: Austria 93: Australia
94: New Zealand 955: Malaysia 977: International Standard Serial Number for Periodicals (ISSN) 978: International Standard
Book Numbering (ISBN)
979: International Standard Music Number (ISMN) 980: Refund receipts
981 & 982: Common
Currency Coupons 99: Coupons
Mã EAN-8 chỉ sử dụng trên những sản phẩm có kích thước nhỏ, không đủ chỗ ghi mã EAN-13 (ví dụ như thỏi son, bút bi)
+ Cách tính số kíểm tra cho mã EAN-13 và mã EAN-8
Bước 1 : Từ phải sang trái, cộng tất các con số ở vị trí lẻ (trừ số kiểm tra C); Bước 2: Nhân kết quả bước 1 với 3;
Bước 3 : Cộng giá tri của các con số còn lại
Trang 21Bước 5 : Lấy bội số của 10 lớn hơn và gần kết quả bước 4 nhất trừ đi kết quả bước 4, kết quả là số kiểm tra C
Ví dụ : Tính số kiểm tra cho mã 893456501001 C
+ Các điểm cần chú ý khi in mã EAN :
Không in chữ hay bất kỳ hình vẽ gì vào vùng diện tích xung quanh mã (đánh dấu bằng khung đen trên film master): Màu lý tưởng để in mã vạch là màu đen trên nền trắng Có thể in một số màu nền và màu vạch khác để bao bì đẹp hơn ; khi đó phải tuân thủ theo bảng các màu nền và màu vạch tiêu chuẩn do tổ chức EAN quốc gia cung cấp; Mã vạch nên đặt ngang, các vạch vuông góc với mặt phẳng đáy sản phẩm,
mã số ở dưới
I.4.2 Code 128:
+ Thông tin về Code 128:
Code 128 là một loại mã vạch mã hoá dữ liệu chữ và số có hiệu quả sử dụng và
độ dày cao Mã vạch này được ứng dụng rộng rãi, đặc biệt trong những trường hợp cần
mã hoá một lượng dữ liệu tương đối lớn trong một khoảng không gian tương đối hẹp
Hình 1.7+ Tính toán số kiểm tra:
Trước khi Code 128 được mã hóa, phần mềm phải tính toán xem số kiểm tra trên mã vạch có đúng không Những bước để tính toán số kiểm tra như sau:
1 Lấy giá trị của kí tự bắt đầu (103, 104, hay 105) và tạo giá trị bắt đầu của số kiểm tra
2 Bắt đầu từ kí tự theo sau kí tự đầu tiên, lấy giá trị của kí tự (giữa 0 và 102), nhân nó với vị trí của kí tự (1) và thêm nó vào số kiểm tra đang
sử dụng
3 Xét từng kí tự trên dữ liệu, lấy giá trị của nó nhân với vị trí của nó và cộng vào giá trị số kiểm tra
Trang 224 Chia kết quả số kiểm tra cho 103 Số dư trở thành số kiểm tra, được thêm vào cuối của thông điệp
5 Kí tự kết thúc được thêm vào sau kí tự kiểm tra
Để dễ hiểu ta xem xét ví dụ sau Tính giá trị của số kiểm tra cho mã vạch sau:
“HI345678” Số kiểm tra có trong tất cả các mã vạch Code 128, nhưng nó không được
in như là một phần của phần văn bản phía dưới mã vạch (giống như UPC và EAN)
Hình 1.8 + Cấu trúc mã vạch Code 128:
Code 128 gồm một vùng trống đầu, một trong ba kí tự bắt đầu, dữ liệu,
số kiểm tra, kí tự kết thúc, và vùng trống
Trang 23Để mã hoá giá trị trong mã vạch Code 128, đầu tiên chúng ta phải tính kí
tự kiểm tra và phần dữ liệu của mã vạch, bao gồm cả số kiểm tra, sau đó chúng ta mới
có thể mã hóa chúng thành một dãy gồm những thanh và khoảng trắng
Một mã vạch Code 128 có cấu trúc vật lý như sau:
1 Mã đầu tiên, là mã 103, 104, hay 105 lấy từ bảng mã hóa bên dưới
2 Mỗi kí tự dữ liệu được mã hóa dựa theo bảng mã hóa bên dưới
3 Kí tự kiểm tra được tính như được đề cập ở trên và được mã hóa sử dụng bảng bên dưới
KÍ TỰ GIÁ
Trang 2450 R R 50 11000101110 103 Start A Start A Start A 11010000100
51 S S 51 11011101000 104 Start B Start B Start B 11010010000
52 T T 52 11011100010 105 Start C Start C Start C 11010011100
+ Ví dụ mã hóa:
Xét ví dụ sau, mã hoá HI345678 trên mã vạch Code 128 Theo cách tính
số kiểm tra như phần trên, chúng ta thu được số kiểm tra đối với trường hợp này là 67 Chúng ta mã hóa từng kí tự sử dụng bảng mã hóa trên:
Trang 25+ Thông tin về Code 39:
Code 39 là loại mã vạch chữ và số đầu tiên được phát triển, hiện nay vẫn còn được sử dụng rộng rãi, đặc biệt là trong việc bán sỉ hàng hoá Nó là một chuẩn mã vạch được sử dụng bởi Bộ Quốc Phòng Mỹ Code 39 cũng được biết với tên “3 of 9 Code” hay “USD-3”
Một mã vạch Code 39 có dạng như sau:
Hình 1.10 Code 39 thuộc dạng mã vạch gián đoạn, có chiều dài thay đổi Nó có thể
tự kiểm tra vì vậy một kí tự in sai không thể được đọc và chuyển thành một kí tự đúng được
+ Tính số kiểm tra:
Vì Code 39 có khả năng tự kiểm tra nên thông thường số kiểm tra không còn cần thiết nữa Tuy nhiên, trong những trường hợp cần đòi hỏi độ chính xác cao thì
có thể thêm số kiểm tra vào
Để tính số kiểm tra tự chọn, ta theo những bước sau:
1 Lấy giá trị (0 đến 42) của từng kí tự trong mã vạch Những kí tự bắt đầu và kết thúc không được tính trong quá trình tính số kiểm tra
2 Tính tổng những giá trị trong bước 1
3 Chia giá trị trong bước 2 cho 43
Trang 264 Phần dư trong pháp chia ở bước 3 là kí tự kiểm tra, được thêm vào trước kí tự kết thúc
+ Mã hoá mã vạch:
Trong phần này, chúng ta sẽ xem xét cách mã hoá mã vạch bằng cách xem như
“1” đại diện cho thanh, “0” đại diện cho khoảng trắng trên mã vạch Vì vậy số 1101 biểu diễn mã vạch gồm 2 thanh (11), tiếp theo là một khoảng trắng (0), tiếp theo là một thanh (1) Cuối cùng ta có mã vạch như sau:
Hình 1.11
+ Cấu trúc mã vạch Code 39:
Mã vạch Code 39 có cấu trúc sau:
1 Kí tự bắt đầu- kí tự *
2 Những kí tự được mã hoá dựa trên bảng
3 Số kiểm tra tuỳ chọn như đã đề cập ở trên được mã hóa từ bảng bên dưới
4 Kí tự kết thúc là kí tự * thứ hai
+ Bảng mã hoá:
Giá trị kiểm tra
Kí tự ASCII Mã hóa độ rộng
Mã hóa mã vạch
Trang 27Chúng ta sẽ mã hóa dữ liệu TEST8052 sử dụng mã vạch Code 39 Trong trường hợp này chúng ta không sử dụng số kiểm tra
Trang 29SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 19
I.5 So sánh giữa các loại mã vạch:
EAN-13 Toàn số
12 con số dữ liệu
và 1 con số kiểm tra; 2 hoặc 5 con
số thêm vào tuỳ ý
Cần thiết Đánh dấu hàng hoá bán lẻ toàn thế giới
EAN Bookland Toàn số Cần thíết Ứng dụng đặc biệt của EAN-13 trong việc mã hoá IBSN cho sách Interleaved 2 of 5 Toàn số Có thể thay đổi Không bắt buộc
Rất dày đặc, mã hoá số theo từng cặp do
đó chiều dài tổng cộng phải là số chẵn những con số
N, or T Có thể thay đổi Không định rõ
Một loại mã cũ, thường được sử dụng trong thư viện và trong ngân hàng máu
Plessey Toàn số Có thể thay đổi Cần thiết Những thẻ trên kệ các cửa hàng tạp hoá
Code 39 Kí tự hoa A-Z; Số 0-9; Khoảng trắng - $ / + % Có thể thay đổi Không bắt buộc Sử dụng rất rộng rãi cho rất nhiều loại ứng dụng
Code 93 Kí tự hoa A-Z; Số 0-9; Khoảng trắng - $ / + % Có thể thay đổi Không bắt buộc Họ hàng của Code 39 ít được sử dụng
Intended Code 39 Tất cả kí tự mã ASCII và mã điều khiển Có thể thay đổi Không bắt buộc Sử dụng từng cặp kí tự để mã hoá những kí hiệu không chuẩn, lãng phí không gian Code 128 Tất cả kí tự mã ASCII và mã điều khiển Có thể thay đổi Cần thiết Được sử dụng rộng rãi, tuyệt vời với một số ứng dụng LOGMARS Kí tự hoa A-Z; Số 0-9; Khoảng trắng - $ / + % Có thể thay đổi Không bắt buộc Tương tự như Code 39, nhưng là chuẩn của Mỹ
Trang 30Mã vạch 2 chiều là loại mã vạch mà thông tin có thể được biểu diễn và lưu trữ theo cả các vạch theo chiều ngang lẫn các vạch theo chiều dọc, tận dụng được nhiều không gian hơn
Mã vạch 2 chiều được phát triển nhằm thay thế dần mã vạch 1 chiều truyền thống không những về khả năng chứa được nhiều dữ liệu hơn, xử lí nhanh hơn mà nó còn
được phát triển như là một cơ sở dữ liệu thu nhỏ, di động được (Portable database)
II.1.2 Mã vạch 2 chiều chứa đựng thông tin gì?
Tương tự như mã vạch một chiều, nội dung được chứa đựng trong mã vạch 2 chiều cũng tuỳ thuộc vào người dùng muốn mã hoá cái gì, nội dung đó có thể là mã số một mặt hàng, tên nhân viên, tên hàng hoá,
Tuy nhiên nếu như mã vạch 1 chiều chỉ chứa giá trị là khóa chính trong các bảng của một cơ sở dữ liệu, thì những thông tin mà mã vạch 2 chiều biểu diễn và lưu trữ được, có thể là một record, một bảng, thậm chí một cơ sở dữ liệu đầy đủ
II.1.3 Cấu trúc của mã vạch 2 chiều:
Khác với mã vạch một chiều, mã vạch 2 chiều có cấu trúc đặc trưng phụ thuộc vào loại mã vạch 2 chiều đó là loại nào
Trang 31Mã vạch 2 chiều được phát triển bởi nhiều công ty, tổ chức cũng các cá nhân khác nhau Vì vậy trên phạm vi toàn thế giới, mã vạch 2 chiều có rất nhiều loại khác nhau tùy theo nhu cầu và mục đích sử dụng chúng
Hiện nay thị trường đang tồn tại khoảng trên 20 loại mã vạch 2 chiều và được chia thành 2 nhóm chính sau đây
Mã vạch 2 chiều dạng stacked code
Mã vạch 2 chiều dạng matrix code
email=ptbao@mathdep.hcmuns.
edu.vn Reason: I am the author of this document
Date: 2006.08.20 12:21:35 +07'00'
Trang 32II.3.1 Ưu điểm:
Hình 1.13
Mã vạch 2 chiều có khả năng chứa đựng, mã hóa thông tin nhiều hơn hẳn so với
mã vạch một chiều Ngoài ra mã vạch 2 chiều còn có độ chính xác cao hơn
II.3.2 Khuyết điểm:
Tuy nhiên chi phí đầu tư ban đầu cho các loại thiết bị đầu cuối dùng cho mã vạch
2 chiều tốn kém hơn so với mã vạch một chiều
II.4 Giới thiệu một số loại mã vạch:
II.4.1 PDF417:
PDF417 là loại mã vạch 2 chiều dạng
stacked code, có thể mã hóa bất kỳ chữ cái, số,
hoặc kí tự nào trong thực tế
Mỗi kí tự bao gồm 4 vạch và 4 khoảng
trống trong một cấu trúc có 17 phần Tên loại
Hình 1.14
Trang 33mã vạch này được đặt xuất phát từ định dạng mã của nó PDF được viết tắt từ chữ
"Portable Data File“
Mỗi ký hiệu PDF417 có từ 3 đến 90 dòng stack được bao quanh bởi một vùng tĩnh trên tất cả bốn cạnh
Mỗi dòng bao gồm : một vùng tĩnh leading, mẫu bắt đầu , kí tự chỉ định dòng bên trái, từ một đến ba mươi kí tự chứa dữ liệu, kí tự chỉ định dòng bên phải, mẫu kết thúc,
và một vùng tĩnh trailing
PDF417 hỗ trợ việc nén văn bản, nén số, và nén byte theo cơ chế tương quan ánh
xạ giữa những giá trị codeword và dữ liệu được giải mã
Ngoài ra, PDF417 có thể hỗ trợ lên tới 340 kí tự trên một inch vuông, với khả năng lưu trữ dữ liệu cực đại là 1850 kí tự dạng văn bản
II.4.2 Data Matrix:
Data Matrix là loại mã vạch 2 chiều dạng matrix
code, có khả năng mã hóa tất cả 128 kí tự của bảng mã
ASCII và một số tập hợp kí tự khác nhau
Mỗi ký hiệu Data Matrix gồm có : một vùng tĩnh
perimeter xung quanh, tiếp giáp với hai đường viền liên
tục và hai đường viền đứt quãng, và những ô bên trong các
đường này có thể có màu sáng hay màu tối
2 đường viền liên tục cùng với những ô dữ liệu được sử dụng để nhận dạng ký hiệu, việc định hướng và định vị các ô
Data Matrix có khả năng lưu trữ lên đến 500 MB dữ liệu trên mỗi inches vuông, hay từ 1 đến 2335 kí tự
Data Matrix là loại mã vạch được thiết kế giảm đến mức tối đa sự dư thừa, tận dụng không gian để biểu diễn thông tin và khắc phục tương đối hoàn hảo những khuyết điểm khi in
Hình 1.15
Trang 34II.4.3 Maxi Code:
Maxi Code là loại mã vạch 2 chiều matrix code,
thường được sử dụng bởi United Pacel Service, dùng để
sắp xếp và phân loại các thư từ khi chuyển phát nhanh
Maxi Code được phát triển để có thể đọc và quét
được bằng các scanner ở tốc độ cao và theo bất kì phương
hướng nào
Maxi Code là loại mã vạch có kích thước cố định bao gồm 866 lục giác được xếp vào 33 dòng, xung quanh finder pattern nằm ở giữa
Kích thước của một ký hiệu Maxi Code từ 1,05 cho đến 1,1 inch
Một ký hiệu Maxi Code đơn có thể mã hóa lên đến 93 kí tự dữ liệu và sử dụng 5 phương thức khác nhau để có thể mã hóa được 256 kí tự của bảng mã ASCII MaxiCode sử dụng ba thuộc tính đặc trưng duy nhất khi mã hóa dữ liệu : Loại dịch vụ,
Mã quốc gia, và Mode
II.5 So sánh giữa các loại mã vạch:
Loại mã vạch Độ chính xác thấp nhất Độ chính xác cao nhất
Data Matrix 1 lỗi trên 10,5 triệu 1 lỗi trên 612,9 triệu
PDF 417 1 lỗi trên 10,5 triệu 1 lỗi trên 612,4 triệu
Code 129 1 lỗi trên 2,8 triệu 1 lỗi trên 37 triệu
Code 39 1 lỗi trên 1,7 triệu 1 lỗi trên 4,5 triệu
UPC 1 lỗi trên 349.000 1 lỗi trên 800.000
Hình 1.16
Trang 35II.6 Mã vạch PDF417:
II.6.1 Mã hóa mã vạch PDF417:
Hình 1.17Công việc mã hóa dữ liệu sang mã vạch PDF417 bao gồm 2 bước xử lí :
Đầu tiên, dữ liệu được chuyển đổi ra các giá trị codeword từ 0 – 928, đại diện cho dữ liệu Đây là quá trình mã hóa ở mức cao ( high level )
Sau đó, các giá trị này được biểu diễn một cách vật lí bằng những mẫu bao gồm các vạch và khoảng trống xen kẽ lẫn nhau Đây chính là quá trình mã hóa ở
mức thấp ( low level )
Và công việc giải mã bao gồm 2 bước xử lí ngược lại
II.6.1.1 Mã hóa mức cao:
PDF417 mã hóa các giá trị tùy theo cluster Những mẫu bao gồm các vạch và
khoảng trống của mỗi codeword không những phụ thuộc vào giá trị được mã hóa mà còn phụ thuộc vào cluster được sử dụng bởi dòng đó
Toàn bộ 929 codeword của mã vạch PDF417 được biểu diễn bằng 3 tập hợp kí hiệu loại trừ lẫn nhau, hay còn được gọi là cluster Mỗi cluster mã hóa 929 codeword
thành những pattern khác nhau vì vậy một cluster thì luôn phân biệt với cluster khác
Giá trị của cluster bao gồm : 0, 3, 6
Trang 36Khái niệm cluster được áp dụng cho tất cả kí hiệu của PDF417 ngoại trừ kí hiệu bắt đầu và kết thúc
Mỗi dòng chỉ sử dụng duy nhất 1 trong 3 cluster (0, 3 hoặc 6) để mã hóa dữ liệu, với sự lặp lại một cluster sau mỗi 3 dòng
Tóm lại điều cần biết đầu tiên khi muốn mã hóa bất kì codeword nào là phải biết được giá trị cluster của nó
VD : Dòng 0 các codeword sử dụng cluster 0
Dòng 1 các codeword sử dụng cluster 3
Dòng 2 các codeword sử dụng cluster 6
Một cách tổng quát : cluster = (dòng mod 3) * 3
Mã hóa mức cao chuyển dữ liệu thành các codeword tương ứng Và cơ chế nén
dữ liệu được sử dụng nhằm tăng cường khả năng lưu trữ dữ liệu khi mã hóa Tùy theo kiểu dữ liệu mà PDF417 có những cách mã hóa dữ liệu khác nhau
Mode là một phương thức nén dữ liệu đơn giản Một kí hiệu PDF417 khi cần thiết
có khả năng chuyển đổi giữa những mode khác nhau
Mã vạch PDF417 hỗ trợ 3 mode cho việc mã hóa dữ liệu
Text Compaction mode
Byte Compaction mode
Numeric Compaction mode
Mỗi mode định nghĩa một ánh xạ xác định giữa dữ liệu người dùng và trình tự codeword một cách hiệu quả Trong một ứng dụng cụ thể thì mode tối ưu được lựa chọn có thể là sự kết hợp cả 3 mode trên
Trong mỗi mode thì 900 codeword được dùng để mã hóa dữ liệu 29 codeword còn lại được sử dụng cho các chức năng đặc biệt, và độc lập với mode nén dữ liệu đang được sử dụng
Trang 37Codeword từ 900 đến 928 có những chức năng sau đây
Chuyển đổi giữa các mode
Ứng dụng sử dụng Extended Channel Interpretation
Các ứng dụng mở rộng khác
II.6.1.1.1 Mã hóa mức cao – Text Compaction Mode
Text Compaction Mode mã hóa được tất cả kí tự ASCII có thể in được, có giá trị
từ 32 đến 126 Text Compaction Mode hỗ trợ 4 sub-mode :
Alpha ( các kí tự hoa )
Lower ( các kí tự thường )
Mixed ( kí tự số và một số dấu câu)
Punctuation
Mỗi sub-mode có tối đa 30 kí tự, bao gồm kí tự sub-mode latch và shift
Chế độ nén mặc nhiên của mã vạch PDF417 là Text Compaction Mode Alpha sub-mode Và latch codeword khi đổi từ mode khác sang Text Compaction Mode luôn luôn chuyển thành Text Compaction Alpha sub-mode
II.6.1.1.2 Mã hóa mức cao – Byte Compaction Mode
Byte Compaction Mode cho phép mã hóa tất cả 256 giá trị byte 8-bit, bao gồm các kí tự ASCII có mã từ 0 đến 127, đồng thời hỗ trợ tập hợp kí tự quốc tế Byte Compaction Mode mã hóa khoảng 1.2byte/codeword
Nếu xét khía cạnh mã hóa dữ liệu mạnh thì Byte Compaction Mode chính là một lựa chọn tốt, ngược lại nó sẽ là Mode cho hiệu quả ít nhất khi xét về hiệu quả khi in
mã vạch
Mã hóa dữ liệu nhị phân sử dụng latch 901 hoặc 924, yêu cầu phải chuyển đổi dữ
liệu từ base 256 sang base 900
Quá trình mã hóa bằng latch codeword 924, lấy một lần 6 số hay giá trị chuyển chúng thành 5 codeword base 900 Quá trình này được tiếp tục cho đến khi tất cả số và giá trị đã được mã hóa hết
Nếu tổng các chữ số không phải bội của 6 thì ta sử dụng latch codeword 901 Khi
đó đối với các chữ số còn lại, ta lấy 1 chữ số là 1 codeword
Trang 38Thuật toán chuyển đổi từ base 256 sang base 900
n = tổng số các codeword ( trong trường hợp này là 5 )
t = biến tạm
t = d5*2565 + d4*2564 + d3*2563 + d2*2562 + d1*2561 + d0*2560
Sau đó ta tính mỗi codeword như sau :
For : mỗi codeword ci = c0 … cn-1
Trang 39Kết quả cuối cùng, ta có trình tự các codeword sau khi mã hóa dãy số {1,2,3,4,5,6} là
II.6.1.1.3 Mã hóa mức cao – Numeric Compaction Mode
Numeric Compaction Mode là một phương thức nén dữ liệu chuyển đổi từ base
10 sang base 900, thường được sử dụng để mã hóa các chuỗi chữ số dài liên tiếp Numeric Compaction Mode có khả năng mã hóa khoảng 2.93 chữ số numeric /codeword
Numeric Compaction Mode sử dụng latch codeword 901
Qui luật mã hóa các chuỗi chữ số dài liên tiếp có 2 bước
Chia chuỗi số thành các nhóm gồm 4 chữ số Nhóm cuối cùng có thể có ít hơn 4 chữ số
Với mỗi nhóm ta thêm chữ số 1 vào vị trí thích hợp để hạn chế sự mất dữ liệu
do chữ số 0 đứng đầu
Ví dụ: dữ liệu ban đầu : 00246812345678
sau 2 bước trên : 100 2468 1234 5678
Chú ý: số 1 ở đầu sẽ được bỏ trong thuật toán giải mã
Thuật toán chuyển đổi từ base 10 sang base 900
For : mỗi codeword ci = c0 … cn-1
Trang 40Như đã nói lúc đầu mã hóa mức thấp là quá trình các giá trị codeword đã có được
từ bước mã hóa mức cao, được biểu diễn một cách vật lí bằng những mẫu bao gồm các vạch và khoảng trống xen kẽ lẫn nhau đã được định nghĩa trước
Cấu trúc của 1 codeword : 4 vạch và 4 khoảng trắng xen kẽ Mỗi vạch hay khoảng trắng có chiều rộng từ 1 đến 6 module, nhưng tổng cộng số module phải là 17
Chiều rộng của 1 module hay phần tử hẹp nhất được gọi là x-dimension ; chiều cao của chúng là y-dimension
Mỗi codeword được định nghĩa bằng 8 chữ số liên tiếp, biểu diển cho các vạch và
khoảng trắng, được gọi là x-sequence
Ví dụ: codeword có x-sequence 31111334 được biểu diễn như sau :