TCVN6755:2008

Tiêu chuẩn quốc gia TCVN 6755:2008 (ISO/IEC 15417 : 2007) về Công nghệ thông tin - Kỹ thuật phân định và thu nhận dữ liệu tự động - Yêu cầu kỹ thuật về mã vạch 128 TIÊU CHUẨN QUỐC GIA TCVN 6755 : 2008 ISO/IEC 15417 : 2007 CÔNG NGHỆ THÔNG TIN – KỸ THUẬT PHÂN ĐỊNH VÀ THU NHẬN DỮ LIỆU TỰ ĐỘNG – YÊU CẦU KỸ THUẬT VỀ MÃ VẠCH 128 Information technology – Automatic identification and data capture techniques – Code 128 bar code symbology specification Lời nói đầu TCVN 6755 : 2008 thay thế TCVN 6755 : 2000. TCVN 6755 : 2008 hoàn toàn tương đương ISO/IEC 15417:2007. TCVN 6755 : 2008 do Tiểu Ban kỹ thuật tiêu chuẩn quốc gia TCVN/JTC1/SC31 " Thu thập dữ liệu tự động" biên soạn, Tổng cục Tiêu chuẩn Đo lường Chất lượng đề nghị, Bộ Khoa học và Công nghệ công bố. Lời giới thiệu Công nghệ mã vạch dựa trên sự thừa nhận các mẫu hình được mã hóa dưới dạng các vạch và khoảng trống với kích thước xác định. Có nhiều phương pháp mã hóa thông tin bằng mã vạch, được gọi là phương pháp mã vạch hóa. Mã vạch 128 là một mã vạch như vậy. Các quy tắc xác định việc thể hiện các ký tự bằng các vạch và khoảng trống và các đặc tính quan trọng khác của mỗi ký tự mã vạch được gọi là quy định kỹ thuật về mã vạch. Trước đây, quy định kỹ thuật về mã vạch được một số tổ chức biên soạn và công bố, kết quả là có một số trường hợp về các yêu cầu trái ngược nhau đối với các ký tự mã vạch nào đó. Nhà sản xuất thiết bị mã vạch và người sử dụng công nghệ mã vạch yêu cầu phải có các tiêu chuẩn quy định kỹ thuật về mã vạch để họ có thể tham khảo khi thiết kế thiết bị và phần mềm. CÔNG NGHỆ THÔNG TIN – KỸ THUẬT PHÂN ĐỊNH VÀ THU NHẬN DỮ LIỆU TỰ ĐỘNG – YÊU CẦU KỸ THUẬT VỀ MÃ VẠCH 128 Information technology – Automatic identification and data capture techniques – Code 128 bar code symbology specification 1. Phạm vi áp dụng Tiêu chuẩn này quy định các yêu cầu đối với mã vạch 128, các đặc tính của mã vạch 128, việc mã hóa các ký tự dữ liệu, các kích thước, thuật toán giải mã và các thông số do ứng dụng quy định. Tiêu chuẩn này quy định chuỗi tiếp đầu tố phân định ứng dụng dùng cho mã vạch 128. 2. Tài liệu viện dẫn Các tài liệu viện dẫn sau là cần thiết cho việc áp dụng tiêu chuẩn này. Đối với các tài liệu viện dẫn ghi năm công bố thì áp dụng phiên bản được nêu. Đối với các tài liệu viện dẫn không ghi năm công bố thì áp dụng phiên bản mới nhất, bao gồm cả các sửa đổi. TCVN 7626 (ISO/IEC 15416) Công nghệ thông tin – Kỹ thuật phân định và thu nhận dữ liệu tự động – Yêu cầu kỹ thuật đối với kiểm tra chất lượng in mã vạch – Mã vạch một chiều ISO/IEC 646-1991 Information technology – ISO 7-bit coded character set for information interchange (Công nghệ thông tin – Bộ ký tự mã hóa ISO 7-bit dành cho trao đổi thông tin) ISO/IEC 8859-1 Information technology – 8-bit single-byte coded graphic character sets – Part 1: Latin alphabet No.1 (Công nghệ thông tin – Bộ ký tự đồ họa mã hóa đơn byte 8-bit – Phần 1: Chữ cái Latin No.1) ISO/IEC 15424 Information technology – Automatic identification and data capture techniques - Data carrier identifiers (Công nghệ thông tin- Kỹ thuật phân định và nhập dữ liệu tự động - Các số phân định vật mang dữ liệu (gồm cả các mã nhận dạng mã vạch)) ISO/IEC 19762-1 Information technology – Automatic identification and data capture (AIDC) techniques – Harmonized vocabulary – Part 1: General terms relating to AIDC (Công nghệ thông tin- Kỹ thuật phân định và thu nhận dữ liệu tự động (AIDC) – Thuật ngữ hài hòa – Phần 1: Các thuật ngữ chung liên quan đến AIDC) ISO/IEC 19762-2 Information technology – Automatic identification and data capture (AIDC) techniques – Harmonized vocabulary – Part 2: Optically readable media (ORM) (Công nghệ thông tin- Kỹ thuật phân định và thu nhận dữ liệu tự động (AIDC) – Thuật ngữ hài hòa – Phần 2: Phương tiện đọc quang học). 3. Thuật ngữ và định nghĩa Trong tiêu chuẩn này sử dụng các thuật ngữ và định nghĩa nêu trong ISO/IEC 19762-1 và ISO/IEC 19762-2. 4. Yêu cầu kỹ thuật 4.1. Các đặc trưng của mã vạch Mã vạch 128 có các đặc trưng sau: a) Bộ ký tự có khả năng mã hóa: 1) Tất cả 128 ký tự của ISO/IEC 646 tức là các ký tự từ 0 đến 128 theo ISO/IEC 646. CHÚ THÍCH: Phiên bản này gồm bộ G0 của ISO/IEC 646 và bộ C0 của ISO/IEC 6429 có giá trị 28-31 sửa đổi tương ứng FS,GS, RS và US. 2) Các ký tự có giá trị byte từ 128 đến 255 cũng có thể được mã hóa. 3) 4 ký tự chức năng không dữ liệu. 4) 4 ký tự lựa chọn bộ mã. 5) 3 ký tự Bắt đầu. 6) 1 ký tự Kết thúc. b) Loại mã vạch: liên tục. c) Số yếu tố trong mỗi ký tự mã vạch: 6, bao gồm 3 vạch tối và 3 vạch sáng, mỗi vạch tối hoặc vạch sáng có chiều rộng 1, 2, 3 hoặc 4 mô đun (Ký tự Kết thúc: 7 yếu tố gồm 4 vạch tối và 3 vạch sáng). d) Ký tự tự kiểm tra: có. e) Chiều dài mã vạch: thay đổi. f) Khả năng giải mã hai hướng: có. g) Ký tự kiểm tra mã vạch: một, bắt buộc (xem A.1). h) Mật độ ký tự của mã vạch: 11 mô đun cho một ký tự mã vạch (5,5 mô đun cho một ký tự số). i) Vùng không chứa dữ liệu: tương đương 35 mô đun. 4.2. Cấu trúc mã vạch Mã vạch 128 gồm: a) Vùng trống phía trước. b) Một ký tự Bắt đầu. c) Một hoặc nhiều ký tự thể hiện dữ liệu và các ký tự đặc biệt. d) Một ký tự kiểm tra mã vạch. e) Một ký tự Kết thúc. f) Vùng trống phía sau. Hình 1 minh họa mã vạch 128 mã hóa chữ “AIM” Hình 1 – Mã vạch 128 4.3. Mã hóa ký tự 4.3.1. Cấu trúc ký tự mã vạch Mỗi ký tự mã vạch bao gồm sáu yếu tố (3 vạch tối và 3 vạch sáng, bố trí xen kẽ nhau từ trái qua phải, bắt đầu bằng một vạch tối), mỗi vạch tối hoặc vạch sáng rộng 1, 2, 3 hoặc 4 mô đun, chiều rộng tổng là 11 mô đun. Tổng số các mô đun vạch tối của bất kỳ một ký tự mã vạch nào luôn luôn là chẵn và do vậy tổng số các mô đun vạch sáng luôn luôn là lẻ. Tính chẵn lẻ này tạo điều kiện cho việc tiến hành tự kiểm tra ký tự. Ký tự kết thúc có thêm một yếu tố vạch tối rộng 2 mô đun bổ sung thêm vào tạo nên chiều rộng tổng của nó là 13 mô đun. Mỗi ký tự mã vạch được cấp cho một giá trị kê trong Bảng 1. Giá trị này được dùng để tính giá trị ký tự kiểm tra mã vạch. Nó cũng có thể được dùng để chuyển đổi sang các giá trị ISO/IEC 646 hoặc ngược lại (xem Phụ lục D). Bảng 1 quy định các ký tự của mã vạch 128. Trong cột “chiều rộng của yếu tố” giá trị bằng số thể hiện chiều rộng của yếu tố tính bằng mô đun hoặc bội của kích thước X. Hình 2 dưới đây minh họa ký tự Bắt đầu A Hình 2 – Ký tự Bắt đầu A của mã vạch 128 Hình 3 minh họa việc mã hóa của ký tự giá trị 35, thể hiện ký tự dữ liệu “C” trong Bộ mã A hoặc B hoặc 2 chữ số “35” trong Bộ mã C. Hình 3 – Ký tự mã vạch giá trị 35 của mã vạch 128 Hình 4 dưới đây minh họa ký tự kết thúc Hình 4 – Ký tự kết thúc mã vạch 128 4.3.2. Mã hóa ký tự dữ liệu Mã vạch 128 có 3 bộ mã ký tự dữ liệu riêng rẽ cho trong Bảng 1, gọi là Bộ mã A, Bộ mã B và Bộ mã C, mỗi bộ là một bộ con của bộ ký tự ISO/IEC 646 IRV cùng với các ký tự bổ trợ khác nhau. Các vạch tối và vạch sáng của ký tự mã vạch thể hiện các ký tự dữ liệu trong các cột cho các Bộ mã A, B hoặc C. Việc lựa chọn bộ mã phụ thuộc vào ký tự Bắt đầu hoặc, trong phạm vi một mã vạch, vào việc sử dụng các ký tự mã A, mã B hoặc mã C hoặc ký tự Shift. Nếu mã vạch bắt đầu bằng ký tự Bắt đầu A, thì sau đó là Bộ mã A sẽ bắt đầu. Bộ mã B và Bộ mã C cũng được bắt đầu một cách tương tự bằng cách mở đầu cho mã vạch với các ký tự Bắt đầu B hoặc C tương ứng. Bộ mã có thể được xác định lại trong mã vạch này bằng cách sử dụng các ký tự mã A, mã B và mã C hoặc ký tự Shift (xem 4.3.4.1 về sử dụng các ký tự đặc biệt này). Cùng một dữ liệu cũng có thể được thể hiện bằng những mã vạch 128 khác nhau thông qua việc sử dụng các tổ hợp khác nhau của các ký tự Bắt đầu, Bộ mã và Shift. Tiêu chuẩn ứng dụng không quy định bộ mã sử dụng. Phụ lục E cho các quy tắc để giảm thiểu chiều dài mã vạch cho trường hợp một dữ liệu cho trước bất kỳ. Bộ giải mã sẽ giải mã bổ sung thêm các mã vạch mà mã vạch này sử dụng các tổ hợp có ý nghĩa của các ký tự Bắt đầu, Bộ mã và Shift và dữ liệu chứ không phải được suy ra từ ứng dụng thuật toán trong Phụ lục E, chẳng hạn như một mã vạch có ký tự bộ mã hoặc Shift tại cuối của dữ liệu. Bảng 1 – Mã hóa ký tự của mã vạch 128 Giá trị ký tự mã vạch Bộ mã A Giá trị ASCII cho Bộ mã A Bộ mã B Giá trị ISO/IEC 646 cho Bộ mã B Bộ mã C Chiều rộng yếu tố (theo mô đun) Kiểu mã hóa của yếu tố B S B S B S 1 2 3 4 5 6 7 8 9 10 11 0 Khoảng trống 32 Khoảng trống 32 00 2 1 2 2 2 2 1 ! 33 ! 33 01 2 2 2 1 2 2 2 " 34 " 34 02 2 2 2 2 2 1 3 # 35 # 35 03 1 2 1 2 2 3 4 $ 36 $ 36 04 1 2 1 3 2 2 5 % 37 % 37 05 1 3 1 2 2 2 6 & 38 & 38 06 1 2 2 2 1 3 7 dấu móc lửng 39 dấu móc lửng 39 07 1 2 2 3 1 2 8 ( 40 ( 40 08 1 3 2 2 1 2 9 ) 41 ) 41 09 2 2 1 2 1 3 10 * 42 * 42 10 2 2 1 3 1 2 11 + 43 + 43 11 2 3 1 2 1 2 12 dấu phẩy 44 dấu phẩy 44 12 1 1 2 2 3 2 13 - 45 - 45 13 1 2 2 1 3 2 14 dấu chấm hết 46 dấu chấm hết 46 14 1 2 2 2 3 1 15 / 47 / 47 15 1 1 3 2 2 2 16 0 48 0 48 16 1 2 3 1 2 2 17 1 49 1 49 17 1 2 3 2 2 1 18 2 50 2 50 18 2 2 3 2 1 1 19 3 51 3 51 19 2 2 1 1 3 2 20 4 52 4 52 20 2 2 1 2 3 1 21 5 53 5 53 21 2 1 3 2 1 2 22 6 54 6 54 22 2 2 3 1 1 2 23 7 55 7 55 23 3 1 2 1 3 1 24 8 56 8 56 24 3 1 1 2 2 2 25 9 57 9 57 25 3 2 1 1 2 2 26 dấu hai chấm 58 dấu hai chấm 58 26 3 2 1 2 2 1 27 dấu nửa hai chấm 59 dấu nửa hai 59 27 3 1 2 2 1 2 28 <> 60 <> 60 28 3 2 2 1 1 2 29 = 61 = 61 29 3 2 2 2 1 1 30 > 62 > 62 30 2 1 2 1 2 3 31 ? 63 ? 63 31 2 1 2 3 2 1 Giá trị ký tự mã vạch Bộ mã A Giá trị ASCII cho Bộ mã A Bộ mã B Giá trị ISO/IEC 646 cho Bộ mã B Bộ mã C Chiều rộng yếu tố (theo mô đun) Kiểu mã hóa của yếu tố B S B S B S 1 2 3 4 5 6 7 8 9 10 11 32 @ 64 @ 64 32 2 3 2 1 2 1 33 A 65 A 65 33 1 1 1 3 2 3 34 B 66 B 66 34 1 3 1 1 2 3 35 C 67 C 67 35 1 3 1 3 2 1 36 D 68 D 68 36 1 1 2 3 1 3 37 E 69 E 69 37 1 3 2 1 1 3 38 F 70 F 70 38 1 3 2 3 1 1 39 G 71 G 71 39 2 1 1 3 1 3 40 H 72 H 72 40 2 3 1 1 1 3 41 I 73 I 73 41 2 3 1 3 1 1 43 J 74 J 74 42 1 1 2 1 3 3 43 K 75 K 75 43 1 1 2 3 3 1 44 L 76 L 76 44 1 3 2 1 3 1 45 M 77 M 77 45 1 1 3 1 2 3 46 N 78 N 78 46 1 1 3 3 2 1 47 O 79 O 79 47 1 3 3 1 2 1 48 P 80 P 80 48 3 1 3 1 2 1 49 Q 81 Q 81 49 2 1 1 3 3 1 50 R 82 R 82 50 2 3 1 1 3 1 51 S 83 S 83 51 2 1 3 1 1 3 52 T 84 T 84 52 2 1 3 3 1 1 53 U 85 U 85 53 2 1 3 1 3 1 54 V 86 V 86 54 3 1 1 1 2 3 55 W 87 W 87 55 3 1 1 3 2 1 56 X 88 X 88 56 3 3 1 1 2 1 57 Y 89 Y 89 57 3 1 2 1 1 3 58 Z 90 Z 90 58 3 1 2 3 1 1 59 [ 91 [ 91 59 3 3 2 1 1 1 60 \ 92 \ 92 60 3 1 4 1 1 1 61 ] 93 ] 93 61 2 2 1 4 1 1 62 ^ 94 ^ 94 62 4 3 1 1 1 1 63 _ 95 _ 95 63 1 1 1 2 2 4 64 NUL 00 ` 96 64 1 1 1 4 2 2 65 SOH 01 a 97 65 1 2 1 1 2 4 66 STX 02 b 98 66 1 2 1 4 2 1 67 ETX 03 c 99 67 1 4 1 1 2 2 68 EOT 04 d 100 68 1 4 1 2 2 1 69 ENQ 05 e 101 69 1 1 2 2 1 4 70 ACK 06 f 102 70 1 1 2 4 1 2 71 BEL 07 g 103 71 1 2 2 1 1 4 71 BEL 07 g 103 71 1 2 2 1 1 4 72 BS 08 h 104 72 1 2 2 4 1 1 73 HT 09 i 105 73 1 4 2 1 1 2 74 LF 10 j 106 74 1 4 2 2 1 1 75 VT 11 k 107 75 2 4 1 2 1 1 76 FF 12 l 108 76 2 2 1 1 1 4 Giá trị ký tự mã vạch Bộ mã A Giá trị ASCII cho Bộ mã A Bộ mã B Giá trị ISO/IEC 646 cho Bộ mã B Bộ mã C Chiều rộng yếu tố (theo mô đun) Kiểu mã hóa của yếu tố B S B S B S 1 2 3 4 5 6 7 8 9 10 11 77 CR 13 m 109 77 4 1 3 1 1 1 78 SO 14 n 110 78 2 4 1 1 1 2 79 SI 15 o 111 79 1 3 4 1 1 1 80 DLE 16 p 112 80 1 1 1 2 4 2 81 DC1 17 q 113 81 1 2 1 1 4 2 82 DC2 18 r 114 82 1 2 1 2 4 1 83 DC3 19 s 115 83 1 1 4 2 1 2 84 DC4 20 t 116 84 1 2 4 1 1 2 85 NAK 21 u 117 85 1 2 4 2 1 1 86 SYN 22 v 118 86 4 1 1 2 1 2 87 ETB 23 w 119 87 4 2 1 1 1 2 88 CAN 24 x 120 88 4 2 1 2 1 1 89 EM 25 y 121 89 2 1 2 1 4 1 90 SUB 26 z 122 90 2 1 4 1 2 1 91 ESC 27 { 123 91 4 1 2 1 2 1 92 FS 28 | 124 92 1 1 1 1 4 3 93 GS 29 } 125 93 1 1 1 3 4 1 94 RS 30 ~ 126 94 1 3 1 1 4 1 95 US 31 DEL 127 95 1 1 4 1 1 3 96 FNC3 FNC3 96 1 1 4 3 1 1 97 FNC2 FNC2 97 4 1 1 1 1 3 98 SHIFT SHIFT 98 4 1 1 3 1 1 99 MÃ C MÃ C 99 1 1 3 1 4 1 100 MÃ B FNC4 MÃ B 1 1 4 1 3 1 101 FNC4 MÃ A MÃ A 3 1 1 1 4 1 102 FNC1 FNC1 FNC1 4 1 1 1 3 1 103 Bắt đầu A 2 1 1 4 1 2 104 Bắt đầu B 2 1 1 2 1 4 105 Bắt đầu C 2 1 1 2 3 2 Giá trị ký tự mã vạch Bộ mã A Bộ mã B Bộ mã C Chiều rộng yếu tố (mô đun) Kiểu mã hóa của yếu tố B S B S B S B 1 2 3 4 5 6 7 8 9 10 11 12 13 Kết thúc 2 3 3 1 1 1 2 CHÚ THÍCH Ký tự kết thúc gồm 13 mô đun trong 4 vạch tối và 4 vạch sáng. Mỗi ký tự còn lại đều rộng 11 mô đun, bắt đầu bằng một vạch tối và kết thúc bằng một vạch sáng, và có 6 yếu tố, mỗi yếu tố có chiều rộng khác nhau từ 1 đến 4 mô đun. Giá trị bằng số trong cột B và S thể hiện số mô đun tương trong mỗi vạch tối hoặc v ạch sáng trong các ký tự mã vạch. 4.3.3. Các bộ mã 4.3.3.1. Bộ mã A Bộ mã A gồm tất các các chữ số và chữ cái in hoa tiêu chuẩn, các ký tự chức năng và các ký tự điều khiển, tức là các ký tự có giá trị từ 00 đến 95 như quy định trong ISO/IEC 646 và 7 ký tự đặc biệt. 4.3.3.2. Bộ mã B Bộ mã B gồm tất cả các chữ số và chữ cái in hoa tiêu chuẩn, các ký tự chức năng và các ký tự chữ cái thường, tức là các ký tự có giá trị từ 32 đến 127 như quy định trong ISO/IEC 646 và 7 ký tự đặc biệt. 4.3.3.3. Bộ mã C Bộ mã C gồm một bộ 100 cặp chữ số từ 00 đến 99 và 3 ký tự đặc biệt. Điều này cho phép mã hóa dữ liệu số thành từng cặp 2 chữ số trong một ký tự mã vạch. 4.3.4. Các ký tự đặc biệt Bảy ký tự cuối cùng trong Bộ mã A và B và 3 ký tự cuối cùng của Bộ mã C (ký tự có giá trị 100 – 102) là các ký tự đặc biệt không mang dữ liệu, không có ký tự ISO/IEC 646 tương đương, nó có ý nghĩa riêng đối với các thiết bị đọc mã vạch. 4.3.4.1. Các ký tự bộ mã và Shift Các ký tự Bộ mã (mã A, mã B, mã C) và Shift được sử dụng để chuyển đổi từ một bộ mã này sang bộ mã khác trong một mã vạch. Chúng không được bộ giải mã chuyển đi. a) Các ký tự bộ mã – Các ký tự mã A, B hoặc C chuyển đổi bộ mã mã vạch từ bộ xác định trước tới bộ mới được xác định bởi ký tự mã tương ứng. Thay đổi này áp dụng cho tất cả các ký tự tiếp sau ký tự mã (A, B hoặc C) cho tới khi kết thúc mã vạch hoặc gặp một ký tự mã khác hoặc ký tự Shift. b) Ký tự Shift – Ký tự Shift chuyển đổi bộ mã từ A sang B hoặc từ B sang A chỉ áp dụng với một ký tự sau ký tự Shift. Các ký tự đằng sau ký tự chịu tác động sẽ quay lại với bộ mã A hoặc bộ mã B đã được xác định trước ký tự Shift. Ký tự mã vạch được shift (tức là ký tự đứng ngay sau ký tự Shift) không thể là ký tự mã hoặc Shift. 4.3.4.2. Các ký tự chức năng Các ký tự chức năng (FNC) xác định việc chỉ thị cho thiết bị đọc mã vạch cho phép những hành động và ứng dụng đặc biệt. a) FNC1 là đối tượng xem xét đặc biệt quy định trong Phụ lục B. b) FNC2 (nối thông điệp) chỉ dẫn máy đọc mã vạch lưu giữ tạm thời dữ liệu từ mã vạch có chứa ký tự FNC2 và chuyển chúng đi như là một tiếp đầu tố của dữ liệu của mã vạch tiếp sau. Nó có thể sử dụng để kết nối một số mã vạch trước khi chuyển đi. Ký tự này có thể xuất hiện bất cứ đâu trong mã vạch. Ở những chỗ chuỗi dữ liệu quan trọng, cần phải thực hiện việc này để đảm bảo đọc mã vạch đúng thứ tự. c) FNC3 (khởi tạo) chỉ dẫn máy đọc mã vạch dịch dữ liệu từ mã vạch chứa ký tự FNC3 thành chỉ dẫn để khởi tạo hoặc tái lập trình máy đọc mã vạch. Dữ liệu từ mã vạch không được máy đọc mã vạch chuyển đi. Ký tự này có thể xuất hiện bất cứ đâu trong mã vạch. d) FNC4 được dùng để thể hiện bộ ký tự mở rộng (giá trị byte 128 đến 255) như quy định trong ISO/IEC 8859-1 hoặc trong quy định kỹ thuật ứng dụng. Nếu chỉ sử dụng riêng FNC4 thì giá trị 128 được cộng thêm vào giá trị ISO/IEC 646 của ký tự dữ liệu tiếp theo trong mã vạch. Ký tự Shift có thể theo sau ký tự FNC4 nếu cần chuyển bộ mã cho ký tự tiếp sau. Các ký tự dữ liệu phía sau quay trở lại bộ mã tiêu chuẩn ISO/IEC 646. Nếu hai ký tự FNC4 được dùng liên tiếp thì giá trị 128 được thêm vào giá trị ISO/IEC 646 của tất cả các ký tự tiếp theo cho tới khi hai ký tự FNC4 xuất hiện hoặc kết thúc mã vạch. Nếu trong chuỗi mã hóa mở rộng này một ký tự FNC4 đơn lẻ được sử dụng, được dùng để đổi duy nhất một ký tự dữ liệu tiếp theo thành mã hóa ISO/IEC 646 tiêu chuẩn. Các ký tự Shift và mã có hiệu quả tiêu chuẩn thông thường trong chuỗi này. Bộ ký tự tham chiếu sửa mã cho giá trị mở rộng 128-255 một nửa tương ứng của ISO/IEC 8859-1, Chữ cái la tinh 1, cho trong Phụ lục F, nhưng quy định kỹ thuật ứng dụng có thể quy định hoặc tham chiếu các bộ khác thay thế tương ứng với giá trị byte 128 đến 255. 4.3.4.3. Ký tự Bắt đầu và kết thúc Các ký tự Bắt đầu A, B và C xác định bộ mã tương ứng được sử dụng bắt đầu trong một mã vạch. Ký tự kết thúc thông thường dùng cho tất cả các bộ mã. Các ký tự Bắt đầu và kết thúc không được bộ giải mã truyền đi. 4.3.5. Ký tự kiểm tra mã vạch Ký tự kiểm tra mã vạch là ký tự mã vạch cuối cùng trước ký tự kết thúc. Thuật toán để tính ký tự kiểm tra mã vạch cho trong A.1. Không thể hiện ký tự kiểm tra mã vạch trong diễn dịch người đọc, và chúng cũng không được bộ giải mã truyền đi. 4.4. Các kích thước 4.4.1. Chiều rộng danh định mô đun ( X ) Chiều rộng của một mô đun phải được quy định trong quy định kỹ thuật ứng dụng, trong mối liên hệ với thiết bị sản xuất và đọc mã vạch và đồng bộ với các yêu cầu chung của ứng dụng. Xem 4.7.1 Kích thước X phải là hằng số trong toàn bộ một mã vạch. 4.4.2. Vùng trống Chiều rộng tối thiểu của vùng trống (bên phải và bên trái mã vạch 128): 10 X. 4.4.3. Chiều rộng mã vạch Chiều rộng W (tính bằng milimét) của một mã vạch 128, gồm cả vùng trống, có thể tính theo công thức sau: W = [ 11( C + 2 ) + 2] X + 2 Q trong đó: W là chiều rộng mã vạch; C là số ký tự mã vạch (gồm cả ký tự kiểm tra mã vạch); X là chiều rộng của yếu tố hẹp tính bằng milimét; Q là chiều rộng của vùng trống tính bằng milimét. CHÚ THÍCH: Cần áp dụng quy tắc trong Phụ lục E, hoặc thuật toán khác, để xác định số ký tự mã vạch trước khi tính công thức này. 4.5. Thuật toán giải mã tham chiếu Hệ thống đọc mã vạch được thiết kế để đọc các mã vạch không hoàn hảo đến một mức độ mà thuật toán giải mã thực tế cho phép. Phần này mô tả thuật toán giải mã tham chiếu để tính giá trị độ giải mã nêu trong TCVN 7626 (ISO/IEC 15416). Thuật toán này có các bước sau đây để giải mã từng ký tự mã vạch. 1. Tính số đo 8 chiều rộng p, e 1 , e 2 , e 3 , e 4 , b 1 , b 2 , và b 3 (Hình 5) Hình 5 – Các số đo độ giải mã 2. Chuyển đổi các số đo e 1 , e 2 , e 3 và e 4 thành các giá trị chuẩn hóa E 1 , E 2 , E 3 và E 4 nó sẽ thể hiện chiều rộng mô đun tích hợp (E i ) của các số đo này. Phương pháp tính giá trị thứ i như sau: Nếu 1,5p / 11 ≤ e i < 2,5p="" 11,="" thì=""> i = 2 Nếu 2,5p / 11 ≤ e i < 3,5p="" 11,="" thì=""> i = 3 Nếu 3,5p / 11 ≤ e i < 4,5p="" 11,="" thì=""> i = 4 Nếu 4,5p / 11 ≤ e i < 5,5p="" 11,="" thì=""> i = 5 Nếu 5,5p / 11 ≤ e i < 6,5p="" 11,="" thì=""> i = 6 Nếu 6,5p / 11 ≤ e i < 7,5p="" 11,="" thì=""> i = 7 Nếu khác thì ký tự bị lỗi. 3. Dùng 4 giá trị E 1 , E 2 , E 3 , và E 4 làm chìa khóa để tìm ký tự trong bảng giải mã. (Xem Bảng 2.) 4. Phục hồi giá trị tự kiểm tra ký tự V được lưu giữ trong bảng với ký tự này. Giá trị V bằng tổng các mô đun vạch của ký tự đó. 5. Kiểm tra xem ( V – 1,75)p/11 <> b 1 + b 2 + b 3 ) <> V + 1,75) p /11 Nếu khác thì ký tự bị lỗi. Tính toán này gián tiếp sử dụng tính chẵn lẻ của ký tự để tìm ra tất cả các sai lỗi do sai lỗi lề không hệ thống của một mô đun riêng rẽ. Sử dụng 5 bước trên đây giải mã ký tự đầu tiên. Nếu đó là ký tự Bắt đầu thì tiếp tục giải mã mã vạch theo hướng tiến bình thường. Nếu đó không phải là ký tự Bắt đầu mà là ký tự Kết thúc thì cố gắng giải mã tất cả các ký tự tiếp theo theo hướng ngược lại. Sau khi giải mã tất cả các ký tự, xác nhận có ký tự Bắt đầu đúng, ký tự kết thúc đúng và ký tự kiểm tra mã vạch đúng. Chuyển tất cả các ký tự mã vạch thành ra các ký tự dữ liệu thích hợp trong Bộ mã A, B, hoặc C dựa theo ký tự Bắt đầu, các ký tự mã, và các ký tự Shift dùng trong mã vạch. Thêm nữa, thực hiện các kiểm tra bổ sung khác về các vùng trống, gia tốc chùm, thời gian tuyệt đối, các kích thước… cho cẩn trọng và xem xét thiết bị đọc riêng và môi trường dự kiến sử dụng. CHÚ THÍCH: Trong thuật toán này mã vạch được giải mã dựa trên phép đo “lề đến lề tương ứng” (e) cộng số đo bổ sung của tổng 3 chiều rộng vạch. Bảng 2 – Các hiệu số lề để giải mã mã vạch 128 Giá trị ký tự E1 E2 E3 E4 V Giá trị ký tự E1 E2 E3 E4 V 00 3 3 4 4 6 54 4 2 2 3 6 01 4 4 3 3 6 55 4 2 4 5 6 02 4 4 4 4 6 56 6 4 2 3 6 03 3 3 3 4 4 57 4 3 3 2 6 04 3 3 4 5 4 58 4 3 5 4 6 05 4 4 3 4 4 59 6 5 3 2 6 06 2 4 4 3 4 60 4 5 5 2 8 07 3 4 5 4 4 61 4 3 5 5 4 08 4 5 4 3 4 62 7 4 2 2 6 09 4 3 3 3 4 63 2 2 3 4 4 10 4 3 4 4 4 64 2 2 5 6 4 11 5 4 3 3 4 65 3 3 2 3 4 12 2 3 4 5 6 66 3 3 5 6 4 13 3 4 3 4 6 67 5 5 2 3 4 14 3 4 4 5 6 68 5 5 3 4 4 15 2 4 5 4 6 69 2 3 4 3 4 16 3 5 4 3 6 70 2 3 6 5 4 17 3 5 5 4 6 71 3 4 3 2 4 18 4 5 5 3 6 72 3 4 6 5 4 19 4 3 2 4 6 73 5 6 3 2 4 Giá trị ký tự E1 E2 E3 E4 V Giá trị ký tự E1 E2 E3 E4 V 20 4 3 3 5 6 74 5 6 4 3 4 21 3 4 5 3 6 75 6 5 3 3 4 22 4 5 4 2 6 76 4 3 2 2 4 23 4 3 3 4 8 77 5 4 4 2 8 24 4 2 3 4 6 78 6 5 2 2 4 25 5 3 2 3 6 79 4 7 5 2 6 26 5 3 3 4 6 80 2 2 3 6 6 27 4 3 4 3 6 81 3 3 2 5 6 28 5 4 3 2 6 82 3 3 3 6 6 29 5 4 4 3 6 83 2 5 6 3 6 30 3 3 3 3 6 84 3 6 5 2 6 31 3 3 5 5 6 85 3 6 6 3 6 32 5 5 3 3 6 86 5 2 3 3 6 33 2 2 4 5 4 87 6 3 2 2 6 34 4 4 2 3 4 88 6 3 3 3 6 35 4 4 4 5 4 89 3 3 3 5 8 36 2 3 5 4 4 90 3 5 5 3 8 37 4 5 3 2 4 91 5 3 3 3 8 38 4 5 5 4 4 92 2 2 2 5 6 39 3 2 4 4 4 93 2 2 4 7 6 40 5 4 2 2 4 94 4 4 2 5 6 41 5 4 4 4 4 95 2 5 5 2 6 42 2 3 3 4 6 96 2 5 7 4 6 43 2 3 5 6 6 97 5 2 2 2 6 44 4 5 3 4 6 98 5 2 4 4 6 45 2 4 4 3 6 99 2 4 4 5 8 46 2 4 6 5 6 100 2 5 5 4 8 47 4 6 4 3 6 101 4 2 2 5 8 48 4 4 4 3 8 102 5 2 2 4 8 49 3 2 4 6 6 103 3 2 5 5 4 50 5 4 2 4 6 104 3 2 3 3 4 51 3 4 4 2 6 105 3 2 3 5 6 52 3 4 6 4 6 Stop A 5 6 4 2 6 53 3 4 4 4 8 Stop B 3 2 2 4 6 CHÚ THÍCH: Giá trị Stop A để giải mã theo hướng tiến. Stop B áp dụng cho 6 yếu tố đầu tiên của của ký tự Kết thúc bắt đầu ở tận cùng bên phải khi quét theo hướng ngược lại. 4.6. Chất lượng mã vạch 4.6.1. Quy định kỹ thuật về việc kiểm tra Để kiểm tra xác nhận xem một mã vạch có phù hợp với các quy định kỹ thuật trong tiêu chuẩn này hay không thì phải kiểm tra theo quy định kỹ thuật về kiểm tra nêu trong TCVN 7626 (ISO/IEC 15416), TCVN 7626 (ISO/IEC 15416) quy định phương pháp tiêu chuẩn để đo và phân cấp mã vạch, như nêu trong 4.6.2 và 4.6.3. TCVN 7626 (ISO/IEC 15416) quy định các điều kiện để thực hiện các phép đo, và quy định các phương pháp để xác định cấp chất lượng tổng thể dựa trên các thuộc tính của mã vạch đó. Thuật toán giải mã tham chiếu được quy định trong 4.5 của quy định kỹ thuật này được sử dụng để đánh giá các thông số “giải mã” và “độ giải mã” theo TCVN 7626 (ISO/IEC 15416). Cấp tổng thể của mã vạch được thể hiện dưới dạng như cho trong ví dụ dưới đây; 1,5 / 10 / 660 trong đó 1,5 là cấp chất lượng tổng thể của mã vạch 10 là số tham chiếu độ mở đo (trong ví dụ này là 0,25 mm) 660 là bước sóng đỉnh đáp tuyến tính bằng nanômét. TCVN 7626 (ISO/IEC 15416) cho phép chuẩn cứ bổ sung qua/không qua được quy định bởi một quy định kỹ thuật mã vạch. đối với mã vạch 128, chuẩn cứ bổ sung được cho trong 4.6.3. Bất cứ một đồ thị quét riêng rẽ nào mà không đạt những yêu cầu này thì phải nhận cấp 0. 4.6.2. Độ giải mã Để tính toán giá trị độ giải mã V , áp dụng công thức sau đây, thêm vào các quy định của TCVN 7626 (ISO/IEC 15416). Thay thế V 1 cho V C trong công thức V C = K / ( S / 2n ) và tính V 1. Tính V 2: V 2 = {1,75 – ABS[( W b x 11/S) – M ]}/1,75 trong đó W b là tổng các chiều rộng vạch tối trong ký tự; S là chiều rộng tổng của ký tự; M là số mô đun tối (mô đun tạo thành các vạch tối) trong ký tự. CHÚ THÍCH 1: W b và S phải trong cùng một đơn vị đo; V C là số nhỏ hơn trong V1 và V2. CHÚ THÍCH 2: Ký tự kết thúc có một vạch tối kết thúc bổ sung thêm. Để đo độ giải mã, ký tự kết thúc cần được kiểm tra hai lần, lần đầu sử dụng 6 yếu tố tận cùng bên trái và sau đó 6 yếu tố tận cùng bên phải từ phải sang trái. Cả hai bộ 6 yếu tố bằng nhau về chiều rộng với ký tự tiêu chuẩn. 4.6.3. Thông số bổ sung - Các vùng trống TCVN 7626 (ISO/IEC 15416) cho phép quy định các chuẩn cứ bổ sung đạt/ không đạt theo quy định kỹ thuật về mã vạch. Vùng trống tại mỗi đầu của mã vạch tối thiểu phải là 10Z. Cả vùng trống bên phải và bên trái trên mỗi đồ thị phản xạ quét theo TCVN 7626 (ISO/IEC 15416) phải được đo và phân cấp như sau: Vùng trống ≥ 10Z : Cấp 4 Vùng trống < 10z="" :="" cấp=""> CHÚ THÍCH Trong phần này các yêu cầu dựa trên các phép đo thực tế của thông số chứ không phải dựa trên kích thước mong muốn, vì vậy kích thước Z là phù hợp chứ không phải kích thước X. 4.7. Các thông số ứng dụng do người sử dụng quy định Các thông số ứng dụng do người sử dụng quy định được xem xét dưới đây và trong Phụ lục G. 4.7.1. Mã vạch và các đặc trưng về dữ liệu Quy định kỹ thuật ứng dụng phải xem xét các thông số sau : a) Lựa chọn một bộ con của bộ ký tự mã hóa, nếu cần. CHÚ THÍCH: Tiêu chuẩn này khuyến nghị không quy định giới hạn vào một bộ mã đơn, ví dụ chỉ sử dụng Bộ mã A, khi cấu trúc một mã vạch, bởi vì điều này không mang lại lợi ích thực tế nào. Nhưng lại cho phép giới hạn bộ ký tự dữ liệu áp dụng, ví dụ như các ký tự số. b) Số ký tự dữ liệu trong mã vạch, có thể là cố định, thay đổi hoặc thay đổi đến một giới hạn tối đa nào đó. c) Có dùng ký tự kiểm tra dữ liệu không, (ngoài ký tự kiểm tra mã vạch bắt buộc) và nếu có thì thuật toán để tính. Máy đọc tiêu chuẩn không đánh giá ký tự kiểm tra dữ liệu, nhưng truyền đi đơn giản như một dữ liệu tiêu chuẩn. d) Kích thước X tối thiểu hoặc là phạm vi kích thước X có hoặc không quy định với điều kiện là quy định cấp chất lượng mã vạch tối thiểu (cùng với lỗ đo và bước sóng sử dụng) e) Chiều cao tối thiểu của mã vạch. f) Chiều rộng vùng trống tối thiểu lớn hơn 10X, nếu điều kiện quét đòi hỏi, ví dụ, quét mã vạch bằng máy quét dạng bút với kích thước X dưới một giá trị nào đó. g) Bộ ký tự mở rộng tham chiếu để dùng cùng với FNC4. h) Sử dụng mã nhận dạng mã vạch trong truyền dữ liệu (xem 4.8). 4.7.2. Quy định kỹ thuật về quang học Để có thể quét được mã vạch trong một ứng dụng nào đó, cần quy định một số các thông số quang học cụ thể. Bộ các thông số cần có trong tiêu chuẩn ứng dụng gồm quy định kỹ thuật của: • Bước sóng đỉnh đáp tuyến; • Mã vạch và máy quét phải phù hợp chiều rộng dải năng lượng bán phổ; • Cỡ chấm sáng của máy quét; • Các thông số về hệ số phản xạ của vạch tối và vạch sáng; • Các điều kiện thực hiện phép đo quang học; • Giới hạn các sai lỗi được phép trong mã vạch. Xem ví dụ nêu trong Phụ lục G. 4.7.3. Quy định kỹ thuật về kiểm tra Các quy định kỹ thuật ứng dụng phải xác định cấp chất lượng tổng thể tối thiểu chấp nhận được (bao gồm cả mức phân cấp tối thiểu, lỗ đo và bước sóng đỉnh đáp tuyến theo yêu cầu) khi đo mã vạch theo TCVN 7626 (ISO/IEC 15416). VÍ DỤ 1,5 / 10 / 660 trong đó • 1,5 là cấp chất lượng tổng thể của mã vạch • 10 là số tham chiếu lỗ đo (trong ví dụ này là 0,25 mm) • 660 là bước sóng đỉnh đáp tuyến tính bằng nanômét. 4.8. Dữ liệu được truyền đi Dữ liệu được truyền đi từ mã vạch 128 được giải mã phải bao gồm giá trị byte của các ký tự dữ liệu. Nó phải được bắt đầu bằng mã nhận dạng mã vạch quy định trong Phụ lục C, nếu ứng dụng yêu cầu. Các ký tự Bắt đầu và kết thúc, các ký tự chức năng, các ký tự mã và Shift và ký tự kiểm tra mã vạch không bao gồm trong dữ liệu được truyền đi, trừ những quy định về FNC1 trong B.4. Phụ lục A (quy định) Các đặc tính bổ sung của mã vạch 128 A.1. Ký tự kiểm tra mã vạch Ký tự kiểm tra mã vạch 128 được tính theo thuật toán sau đây 1. Phục hồi giá trị ký tự mã vạch theo Bảng 1 2. Mỗi vị trí ký tự mã vạch được cấp một trọng số. Vị trí ký tự Bắt đầu được cấp trọng số 1. Sau đó, bắt đầu từ bên trái, ký tự mã vạch đầu tiên tiếp theo ký tự Bắt đầu, có trọng số là 1, 2, 3, 4 …n cho tất cả các vị trí mã vạch tiếp theo cho tới, nhưng không gồm, ký tự kiểm tra, n ứng với số ký tự mã vạch thể hiện dữ liệu hoặc thông tin đặc biệt trong mã vạch, không kể các ký tự Bắt đầu/kết thúc và ký tự kiểm tra mã vạch. CHÚ THÍCH: Cả hai ký tự Bắt đầu và ký tự mã vạch đầu tiên đều có trọng số là 1. 3. Nhân mỗi giá trị ký tự mã vạch với trọng số của chúng. 4. Lấy tổng các kết quả của bước 3. 5. Chia kết quả bước 4 cho 103. 6. Số dư của kết quả bước 5 là giá trị ký tự mã vạch của ký tự kiểm tra mã vạch. Ví dụ, tính giá trị ký tự kiểm tra mã vạch cho dữ liệu “AIM1234” Ký tự Bắt đầu B A I M Mã C 12 34 Giá trị ký tự (bước 1) 104 33 41 45 99 12 34 Trọng số (bước 2) 1 1 2 3 4 5 6 Nhân (bước 3) 104 33 82 135 396 60 204 Tính tổng (bước 4) 1014 Chia cho 103 (bước 5) 1014 / 103 = 9 Số dư = giá trị ký tự kiểm tra mã vạch 87 Ký tự kiểm tra mã vạch được đặt ngay sau ký tự dữ liệu cuối cùng hoặc ký tự đặc biệt và trước ký tự kết thúc. Ký tự kiểm tra mã vạch không có diễn dịch người đọc tương ứng, và chúng không được bộ giải mã truyền đi. A.2. Diễn dịch người đọc Diễn dịch người đọc của các ký tự dữ liệu (phải ứng với các ký tự được bộ giải mã truyền đi) phải được in kèm với mã vạch 128 đã mã hóa chúng. Các ký tự bắt đầu/kết thúc và ký tự đặc biệt không được in ra. Không quy định cỡ và phông chữ, và phần diễn dịch người đọc có thể in bất cứ đâu xung quanh mã vạch, miễn sao cho các vùng trống không bị vi phạm (xem 4.4.2). Phụ lục B (quy định) Những xem xét đặc biệt liên quan đến mã chức năng 1 (FNC1) B.1. FNC1 tại vị trí đầu tiên – Dành riêng cho hệ thống EAN.UCC Theo thỏa thuận giữa AIM.Inc. và GS1 (tên cũ là EAN quốc tế và Hội đồng mã thống nhất UCC) việc dùng FNC1 trong mã vạch 128 ở vị trí ký tự mã vạch đầu tiên ngay sau ký tự Bắt đầu được dành riêng cho hệ thống GS1. Trong các mã vạch này nội dung dữ liệu sau ký tự FNC1 phải phù hợp với cấu trúc dữ liệu do GS1 quy định, tổ chức này đã phát triển một tiêu chuẩn ứng dụng quốc tế nhất quán dùng mã vạch 128 để mã hóa dữ liệu trong một dải rộng các mức riêng. Tiêu chuẩn này được mô tả đầy đủ trong Quy định kỹ thuật chung của GS1. Địa chỉ văn phòng GS1 toàn cầu: GS1 Blue Tower, Avenue Louise 326, bte 10 B- 1050 BRUSSELS Belgium GS1 Princeton Pike Corporate Center 1009 Lennox Drive, Suite 202 Lawrenceville NJ 08648 USA Phiên bản mới nhất về tài liệu Quy định kỹ thuật chung của GS1 có thể tìm được ở cơ quan này, hoặc là các thành viên của nó (tham chiếu GS1 sau đó là tên nước, ví dụ GS1 Hoa Kỳ, GS1 Hà Lan). Sử dụng FNC1 ở vị trí ký tự thứ 2 trong các mã vạch này là không được phép. B.2. FNC1 ở vị trí thứ hai giành cho AIM toàn cầu quyết định Theo thỏa thuận giữa AIM toàn cầu với các cơ quan khác, sử dụng FNC1 trong mã vạch 128 ở vị trí ký tự thứ hai sau ký tự Bắt đầu được giành để chỉ rõ mã vạch đi kèm với các ứng dụng đặc biệt, ở đó có sự cần thiết phải phân biệt rõ ràng với các mã vạch 128 khác đã được trình bày. Các ký tự được phép ở vị trí ký tự thứ nhất là 00 đến 99 trong Bộ mã C, A đến Z và a đến z. Bất kỳ ký tự nào khác đều làm cho mã vạch mất giá trị. Chi tiết về các ứng dụng này có tại AIM,Inc. có địa chỉ là: AIM toàn cầu 125 Warrendale-Bayne Road Suite 100 Warrendale, PA 15086 USA B.3. Các cách dùng khác Ký tự mã vạch FNC1 có thể là một ký tự kiểm tra mã vạch. FNC1 có thể dùng ở vị trí ký tự thứ ba hoặc tiếp theo như là một dấu tách trường, và khi đó nó được truyền đi như là ký tự 29 (GS) của ISO/IEC 646. B.4. Dữ liệu được truyền đi Tất cả các ứng dụng có dùng mã vạch 128 với FNC1 ở vị trí dữ liệu thứ nhất hoặc thứ hai đòi hỏi phải truyền đi mã nhận dạng mã vạch. Khi FNC1 được dùng ở vị trí thứ nhất hoặc thứ hai nó không được thể hiện trong thông điệp truyền đi, mặc dầu sự có mặt của nó đã được chỉ ra bởi việc dùng giá trị biến đổi 1 hoặc 2 tương ứng trong mã nhận dạng mã vạch. Khi FNC1 được dùng ở vị trí dữ liệu thứ hai, các ký tự mã vạch đứng ngay trước nó và sau nó sẽ được truyền đi một cách chính xác như là không có ký tự FNC1. FNC1 ở vị trí ký tự thứ ba hoặc tiếp theo được truyền đi như là ký tự điều khiển GS (giá trị 29). Phụ lục C (quy định) Mã nhận dạng mã vạch Mã nhận dạng mã vạch được cấp cho mã vạch 128 trong ISO/IEC 15424, có thể được thêm vào dữ liệu giải mã bằng bộ giải mã mã vạch được lập trình thích hợp. Mã nhận dạng này là: ]Cm trong đó: ] thể hiện ký tự 93 của ISO/IEC 646; C là ký tự mã được cấp cho mã vạch 128; m là giá trị biến đổi cho trong Bảng C.1 dưới đây Bảng C.1 – Các giá trị biến đổi giành cho mã 128 m Lựa chọn 0 Gói dữ liệu tiêu chuẩn. Không có FNC1 ở vị trí ký tự mã vạch thứ nhất hoặc thứ hai sau ký tự Bắt đầu. 1 Gói dữ liệu GS1-128 (còn gọi là UCC/EAN-128), FNC1 ở vị trí ký tự mã vạch thứ nhất sau ký tự Bắt đầu. 2 FNC1 ở vị trí ký tự mã vạch thứ hai sau ký tự Bắt đầu. 4 Ghép theo Quy định kỹ thuật của Hội quốc tế về truyền máu ISBT-128 đã được thực hiện – theo sau là dữ liệu đã được ghép. Thông tin này không được mã hóa trong mã vạch nhưng được bộ giải mã phát sau khi giải mã và được truyền đi như là phần tiếp đầu của thông điệp dữ liệu. Phụ lục D (tham khảo) Mối liên hệ của giá trị ký tự mã vạch với giá trị ASCII Để chuyển đổi giá trị ký tự mã vạch (S) sang giá trị thập phân ASCII hoặc ngược lại, có thể áp dụng mối liên hệ sau đối với Bộ mã A và Bộ mã B. Bộ mã A Nếu S ≥ 63, Giá trị ASCII = S + 32 Nếu 64 ≥ S ≥ 95 Giá trị ASCII = S – 64 Bộ mã B Nếu S ≥ 95 Giá trị ISO/IEC = S + 32 Các giá trị kết quả cho trong Bảng 1. CHÚ THÍCH: Như đã mô tả trong 4.3.4.3 d) sự hiện diện của ký tự FNC4 có tác động thêm 128 vào giá trị ASCII của các ký tự dữ liệu tiếp theo hoặc các ký tự nhận được từ quy tắc nói trên. Phụ lục E (tham khảo) Sử dụng các ký tự Bắt đầu, bộ mã và Shift để giảm thiểu chiều rộng vạch Cùng một dữ liệu có thể được thể hiện bằng những mã vạch khác nhau thông qua việc sử dụng những tổ hợp khác nhau của các ký tự Bắt đầu, bộ mã và Shift. Những quy tắc sau đây để giảm thiểu số lượng ký tự mã vạch cần thiết để thể hiện một chuỗi dữ liệu cho trước (và do đó chiều rộng chung của mã vạch) thường được ứng dụng trong phần mềm điều khiển máy in. 1. Xác định ký tự Bắt đầu 1a. Nếu dữ liệu chứa 2 chữ số, dùng ký tự Bắt đầu C. 1b. Nếu ký tự Bắt đầu bằng 4 hoặc nhiều hơn ký tự dữ liệu số, dùng ký tự Bắt đầu C. 1c. Nếu ký tự điều khiển (ví dụ NUL) xuất hiện trong dữ liệu trước bất kỳ một ký tự chữ cái thường (nghĩa là không phải ký tự hoa) nào, dùng ký tự Bắt đầu A. 1d. Các trường hợp khác, dùng ký tự Bắt đầu B. 2. Nếu ký tự Bắt đầu C được dùng, và dữ liệu bắt đầu với một số lẻ các ký tự dữ liệu số, hãy chèn ký tự mã A hoặc mã B trước chữ số cuối cùng, dùng quy tắc 1a và 1d trên đây để quyết định chọn giữa mã A và mã B. 3. Nếu có 4 hoặc nhiều hơn ký tự dữ liệu số xuất hiện cùng nhau trong khi đang ở trong Bộ mã A hoặc B 3a. Nếu có một số lượng chẵn các ký tự dữ liệu số, chèn ký tự mã C trước chữ số đầu tiên để chuyển sang Bộ mã C. 3b. Nếu có một số lượng lẻ các ký tự dữ liệu số, chèn ký tự mã C ngay sau chữ số đầu tiên để chuyển sang Bộ mã C. 4. Khi ở trong Bộ mã B và một ký tự điều khiển xuất hiện trong dữ liệu 4a. Nếu theo sau ký tự này một ký tự chữ cái thường xuất hiện trong dữ liệu trước một ký tự điều khiển khác, chèn ký tự Shift trước ký tự điều khiển. 4b. Các trường hợp khác, chèn ký tự mã A trước ký tự điều khiển để chuyển sang Bộ mã A. 5. Khi ở trong Bộ mã A và một ký tự chữ cái thường xuất hiện trong dữ liệu 5a. Nếu theo sau ký tự này một ký tự điều khiển xuất hiện trong dữ liệu trước một ký tự chữ cái thường khác, chèn ký tự Shift trước ký tự chữ cái thường. 5b. Các trường hợp khác, chèn ký tự mã B trước ký tự chữ cái thường để chuyển sang Bộ mã B. 6. Khi ở trong Bộ mã C và một ký tự không phải là ký tự số xuất hiện trong dữ liệu, chèn ký tự mã A hoặc mã B trước ký tự này, theo quy tắc 1c và 1d để quyết định chọn giữa mã A hoặc mã B. CHÚ THÍCH 1: Trong những quy tắc trên đây, thuật ngữ “chữ cái thường”, được dùng để chỉ bất kỳ ký tự Bộ mã B nào có giá trị ký tự mã vạch 128 bằng 64-95 (giá trị ISO/IEC 646 là 96-127) tức là tất cả các ký tự chữ cái thường cùng với { , [, …( ngoặc nhọn, ngoặc vuông,DEL… ). Thuật ngữ “ký tự điều khiển” để chỉ bất kỳ một ký tự nào trong Bộ mã A có giá trị ký tự mã vạch 128 bằng 64-95, ví dụ NUL, SOH, STX, ETX…. (giá trị ISO/IEC 646 là 00-31). CHÚ THÍCH 2: Nếu ký tự chức năng 1 xuất hiện tại vị trí thứ nhất sau ký tự Bắt đầu hoặc là tại vị trí số lẻ trong một trường số, nó phải được xử lý giống như 2 chữ số, khi quyết định bộ mã thích hợp. CHÚ THÍCH 3: Nếu dữ liệu chứa các ký tự mà giá trị ISO/EC 646 vượt ra ngoài 127, giá trị ISO/IEC 646 của nó được trừ đi 128 để xác định Bộ mã A hoặc B thích hợp và áp dụng các quy tắc dưới đây. Chỗ nào có từ 1 đến 4 ký tự như vậy liên tiếp (1 hoặc 2 tại cuối chuỗi dữ liệu) đặt trước mỗi ký tự đó một ký tự FNC4 là hiệu quả nhất. Đối với 5 (3 tại cuối chuỗi dữ liệu) hoặc nhiều hơn ký tự như vậy, dùng cặp ký tự FNC4 chèn vào chế độ ISO/IEC 646 mở rộng thì tốt hơn. Phụ lục F (tham khảo) Bộ ký tự ISO/IEC 8859 – 1 (ký tự la tinh số 1) Bảng 1 cho thấy sự sắp xếp các ký tự trong nửa trên của bộ này theo giá trị byte 160 đến 255. Không có thể hiện đồ họa cho các giá trị 128 đến 159 (kể cả 159). Sự sắp xếp này tương đương với sắp xếp trong hàng 00 (thập phân), các ô 160 đến 255 của ISO/IEC 10646 Bộ ký tự cơ bản đa ngôn ngữ. Theo 4.3.4.2 d) các ký tự này có thể được thể hiện trong mã vạch 128 trong liên kết với ký tự FNC4, dựa trên mối liên hệ C = (D -128) trong đó C là giá trị ISO/IEC 646 của ký tự mã vạch; D là giá trị của ký tự dữ liệu ở Bảng 1. Vì giá trị này của C trong khoảng 32-127, tương ứng với ký tự của Bộ mã B, mối liên hệ sau đây cũng đúng khi áp dụng cho Bộ mã B S = (D -160) trong đó S là giá trị ký tự mã vạch ở Bảng 1 (Bộ mã B) D là giá trị của ký tự dữ liệu ở Bảng F.1 Bảng F.1 – Phần trên của bộ ký tự ISO/IEC 8859 160 NBSP 161 i 162 ¢ 163 £ 164 ¤ 165 ¥ 166 ¦ 167 § 168 ¨ 169 © 170 ª 171 « 172 ¬ 173 SHY 174 ® 175 ¯ 176 ° 177 ± 178 ² 179 ³ 180 ´ 181 µ 182 ¶ 183 · 184 ¸ 185 ¹ 186 o 187 » 188 ¼ 189 ½ 190 ¾ 191 ¿ 192 À 193 Á 194 Â 195 Ã 196 Ä 197 Å 198 Æ 199 Ç 200 È 201 É 202 Ê 203 Ë 204 Ì 205 Í 206 Î 207 Ï 208 Đ 209 Ñ 210 Ò 211 Ó 212 Ô 213 Õ 214 Ö 215 × 216 Ø 217 Ù 218 Ú 219 Û 220 Ü 221 Ý 222 Þ 223 ß 224 à 225 á 226 â 227 ã 228 ä 229 å 230 æ 231 ç 232 è 233 é 234 ê 235 ë 236 ì 237 í 238 î 239 ï 240 đ 241 đ 242 ò 243 ó 244 ô 245 õ 246 ö 247 ÷ 248 ø 249 ù 250 ú 251 û 252 ü 253 ý 254 þ 255 ÿ Phụ lục G (tham khảo) Các thông số ứng dụng do người sử dụng xác định G.1. Cấp chất lượng Tiêu chuẩn ứng dụng phải quy định cấp chất lượng tối thiểu theo TCVN 7626 (ISO/IEC 15416). Tham chiếu TCVN 7626 (ISO/IEC 15416), có thể xác định giá trị tối thiểu của thông số mã vạch đo được liên quan đến cấp chung G.2. Các đặc trưng kích thước Như là một hướng dẫn cho người sử dụng, quy định kỹ thuật ứng dụng có thể khuyến nghị một giá trị hoặc một khoảng giá trị kích thước X, liên quan tới yêu cầu ứng dụng chung và thiết bị sản xuất và đọc mã vạch có sẵn. Theo tiêu chuẩn này, bản thân việc không phù hợp với bất kỳ kích thước tối thiểu nào sẽ không phải là nguyên nhân để loại bỏ một mã vạch. Khuyến nghị đối với quét bằng tay, kích thước Y tối thiểu phải là 5 mm hoặc 15% chiều dài mã vạch, tùy theo cái nào lớn hơn. Chiều rộng W của mã vạch 128, gồm cả vùng trống tối thiểu, có thể tính từ công thức sau: W = 11 X [ C + D /2] + 22 X trong đó W là chiều rộng của mã vạch X là chiều rộng của yếu tố hẹp C là số lượng các ký tự Bắt đầu, đặc biệt, kiểm tra mã vạch và ký tự kết thúc cộng với số lượng ký tự dữ liệu không có trong D D là số lượng các ký tự dữ liệu chữ số mã hóa với mật độ gấp đôi (Bộ mã C). Phụ lục H (tham khảo) Hướng dẫn sử dụng mã vạch 128 H.1. Tính tương hợp phân biệt tự động Mã vạch 128 có thể được đọc bởi một máy đọc mã vạch được lập trình thích hợp để tự động phân biệt nó với các mã vạch khác. Bộ giá trị mã vạch giải mã phải được giới hạn trong số những mã vạch nào đó cần thiết để tối đa hóa an toàn đọc. H.2. Xem xét về hệ thống Điều quan trọng là các bộ phận khác nhau tạo ra hệ thống (máy in, nhãn, máy quét) phải hoạt động cùng nhau như một hệ thống. Một sai lỗi ở bất kỳ bộ phận nào cũng có thể làm giảm tính năng của toàn hệ thống. Các đặc tính của máy in, mã vạch và máy đọc cần được đồng bộ với nhau để đạt được tính năng mong muốn. H.3. Xem xét về máy in Phần này mô tả những xem xét để in mã vạch 128 bằng máy in điểm, nhưng những xem xét này cũng có thể áp dụng với tất cả các loại mã vạch khác. H.3.1. In điểm Phần mềm đồ họa được dùng để tạo mã vạch trên máy in điểm cần phải chia vạch tối và vạch sáng chính xác theo đúng pic điểm in của máy in được sử dụng. đối với mã vạch giải mã từ lề đến lề tương ứng như mã vạch 128, số điểm in tạo thành mỗi ký tự mã vạch, phải là số nguyên cố định và không đổi của số mô đun trong ký tự mã vạch. đối với mã vạch 128, số mô đun là 11 đối với ký tự mã vạch giá trị từ 0 đến 105, và 13 đối với ký tự kết thúc. Vì vậy máy in có thể chỉ in một bộ nào đó của kích thước X. Việc bù độ tăng (hoặc giảm) đồng nhất chiều rộng vạch tối phải tương ứng với tổng số bù trên toàn bộ các vạch tối và vạch sáng trên mã vạch. điều này có thể hoàn thành bằng cách thay đổi số điểm nguyên từ sáng sang tối hoặc từ tối sang sáng theo cùng một cách thức đối với mỗi cặp tối-sáng trong mã vạch và đối với vạch tối cuối cùng trong mã vạch. Ví dụ, tất các các điểm dọc theo cùng một cạnh của từng vạch tối trong cùng một mã vạch cần phải chuyển từ tối sang sáng, hoặc là các điểm dọc theo hai cạnh của từng vạch trong một mã vạch càn phải chuyển từ tối sang sáng, với điều kiện độ phân giải của máy in cho phép thực hiện thỏa đáng việc này. Một bộ bất kỳ thay đổi điểm tối sang sáng hoặc sáng sang tối được chấp nhận nếu việc điều chỉnh được thực hiện một cách dứt khoát cho cả mã vạch và không gây ra thay đổi các phép đo lề đến lề tương tự hoặc chiều rộng ký tự mã vạch tổng. Nếu không thỏa mãn nguyên tắc này sẽ làm giảm cấp chất lượng mã vạch và thường làm cho mã vạch không đọc được. Phần mềm in đa mục đích được thiết kế để hỗ trợ một dải máy in rộng phải cung cấp cho người sử dụng khả năng điều chỉnh kích thước X và tăng hoặc giảm chiều rộng vạch. Ví dụ của người lập trình Những nguyên lý trên có thể được giảm thiểu đến các nguyên tắc sau đây đối với các file thiết kế mã vạch số hóa: 1) Chuyển độ phóng đại mong muốn hoặc kích thước X thành cỡ mô đun tính theo điểm in làm tròn tới số nguyên gần nhất. 2) Xác định số điểm in theo số bù mong muốn để đồng nhất chiều rộng vạch tối và làm tròn tới số nguyên lớn hơn gần nhất. 3) Áp dụng kết quả trên để quyết định số điểm in của bất kỳ vạch tối và vạch sáng nào trong mã vạch. VÍ DỤ Dùng file thiết kế mã vạch số hóa và thiết bị in với 24 điểm in trên 1mm, hãy tạo mã vạch kích thước X 0,27 mm, và độ giảm chiều rộng vạch 0,06 mm. - Cỡ mô đun là 24 điểm in/mm x 0,27 mm = 6,5 điểm in, làm tròn là 6 điểm in cho một mô đun. - Lượng bù tăng chiều rộng vạch tối là 0,06 mm x 24 điểm in = 1,4 điểm in, làm tròn là 2 điểm in. Kết quả của quá trình này là số điểm in cho vạch tối và vạch sáng được minh họa như trong Bảng H.1. Bảng H.1 –Số điểm in được hiệu chỉnh cho giải pháp ảnh và giảm chiều rộng vạch Số mô đun Số điểm in Vạch tối Vạch sáng 1 4 8 2 10 14 3 16 20 4 22 26 H.3.2. Hướng dẫn người sử dụng phần mềm in điểm Khi in mã vạch lần đầu tiên trên hệ thống in gồm phần mềm in mã vạch và thiết bị in, người sử dụng cần phải kiểm tra xem mã vạch in ra có đạt được cấp chất lượng in yêu cầu và kích thước X không dựa theo TCVN 7626 (ISO/IEC 15416). Nếu mã vạch không đạt được cấp chất lượng yêu cầu thì người sử dụng có thể phải tăng kích thước X hoặc thay đổi sự tăng hay giảm chiều rộng vạch. Nếu tăng kích thước X, người sử dụng phải kiểm tra xem có còn đạt được vùng trống tối thiểu không. Quá trình này có thể phải lặp lại cho tới khi đạt được cấp mã vạch yêu cầu. Không phải mọi hệ thống in đều có khả năng cho ra mã vạch chấp nhận được khi mà kích thước X nhỏ. H.3.3. Xem xét kiểm soát quá trình Để kiểm soát quá trình in, cần phải đánh giá độ tăng hoặc giảm trung bình chiều rộng vạch tối và áp dụng hành động hiệu chỉnh để giảm thiểu chúng. Các thông số “độ giải mã” đo được dựa theo TCVN 7626 (ISO/IEC 15416) được phản ánh bởi độ tăng hoặc giảm chiều rộng vạch tối một cách hệ thống và bởi sự sai khác các phép đo lề đến lề tương tự. THƯ MỤC TÀI LIỆU THAM KHẢO [1] ISO/IEC 10646 Information technology – Universal multiple-Octet coded character set (UCS) (Công nghệ thông tin – Bộ ký tự mã hóa chung đa nhóm tám). MỤC LỤC Lời nói đầu Lời giới thiệu 1. Phạm vi áp dụng 2. Tài liệu viện dẫn 3. Thuật ngữ và định nghĩa 4. Các yêu cầu kỹ thuật Phụ lục A (quy định) Các đặc tính bổ sung của mã vạch 128 Phụ lục B (quy định) Những xem xét đặc biệt liên quan đến mã chức năng 1 (FNC1) Phụ lục C (quy định) Mã nhận dạng mã vạch Phụ lục D (tham khảo) Mối liên hệ của giá trị ký tự mã vạch với giá trị ASCII Phụ lục E (tham khảo) Sử dụng các ký tự Bắt đầu, Bộ mã và Shift để giảm thiểu chiều rộng vạch Phụ lục F (tham khảo) Bộ ký tự ISO/IEFC 8859 – 1 (ký tự la tinh số 1 Phụ lục G (tham khảo) Các thông số ứng dụng do người sử dụng xác định Phụ lục H (tham khảo) Hướng dẫn sử dụng mã vạch 128 Thư mục tài liệu tham khảo