1. 程式人生 > >Code128條形碼如何計算其寬度?如何得出其校驗位?

Code128條形碼如何計算其寬度?如何得出其校驗位?

原文連結

Code128條形碼是一個非常高密的字母數字條碼,能夠儲存需要的編碼資料,它可以編碼所有128個ASCII碼字元,它使用最少的空間。

在Code128符號體系中,每個資料字元編碼都是由11個黑或白模組組成,這11個模組由三個條和三個空來形成,條和空可以由1-4個模組的寬度來組成。停止字元由13個模組組成。

code128碼符號包括一個靜止區(10倍X-尺寸 )、一個開始字元、編碼資料、一個檢測字元、停止字元和一個尾部的靜止區(10倍X-尺寸),為了獲得最佳的掃描效果(使用接觸式掃描器),靜止區至少要在6.35mm以上。

為了保證條形碼的可讀性(絕大都數條碼掃描器都可以識度),最小的X-尺寸為7.5mil,最小的條形碼高度是條形碼寬度的15%或者6.35mm以上。

 

有106個不同的3條/3空組合,106個組合中的任何一個都可以被分配為三個不同字符集含義之一,code128的字元設定參見下面附錄。通過三個不同的開始字元來進行標識,START CodeA允許所有的鍵盤字元+控制字元和特殊字元進行編碼,START CodeB包括所有標準字母數字鍵盤字元+小寫字母和特殊字元,START CodeC包括一個100位數字(00-99),可用於編碼數字資料的密度壓縮。

在Code128條形碼內,可以通過特殊的字元程式碼和SHIFT進行程式碼集之間的轉移,轉移到指定的字符集。

FNC程式碼定義為條碼掃描器的指示。 FNC1是保留供將來使用。 FNC2告訴讀取器去儲存讀取的資料和傳輸它。FNC3是保留讀碼器初始化和其他讀碼器功能。 FNC4是保留為未來的應用。

每個字元都有一個值,範圍從0到105,這個值被用來計算code128條形碼的校驗字元。

校驗字元通過MOD103演算法,下面舉例說明:
例子:BarCode 1
資訊:StartB B a r C o d e 1
值:104 34 65 82 35 79 68 69 0 17
位置:- 1 2 3 4 5 6 7 8 9
計算:104+(34 *1)+(65 *2)+(82 *3)+ (35 *4) + (79 *5) +(68 *6) + (69 *7) + (0 *8) + (17 *9) = 2093
2093/103=20餘 33
33=A
完整的條形碼資訊: (Start B)BarCode 1(A)(STOP)
注意:當你列印校驗字元“A”時,你需列印ASCII字元數65(而不是33),你必須增加32到校驗數上,然後找出列印的ASCII字元。比如說,你使用START A列印codeA條碼,計算出的校驗數字是64,你可能會認為列印一個NULL字元,那你就錯了,你必須增加32得到一個96,你能夠打印出ASCII字元96( `字元)。

Code128條形碼的高度必須至少是條形碼寬度的0.15倍或者6.35mm,以兩個數值的較大者為準,Code128條形碼的總寬度由下面的公式得出:
L = (11C + 35)X (字母數字) ; L = (5.5C + 35)X(數字僅使用codeC)
這裡:
L = code128條形碼的寬度(不包括靜止區)(英寸為單位)
C = 資料字元、程式碼字元和轉移字元的數量(不包括開始、停止、校驗字元,他們將被自動新增)
X = X-尺寸(英寸為單位,比如,7mil條形碼的X-尺寸為0.007英寸)

下面使用三個例子,分別說明code128條形碼長度的計算:

1、下圖條形碼通過Bartender軟體編輯,採用code128A字符集,條形碼密度為16.39mil,字元數為7。

 
根據公式進行計算L=(11*7+35)*0.01639=1.83568英寸=46.6mm
根據公式計算的code128條形碼寬度與軟體實際生成的條形碼寬度是一致的。

2、下圖條形碼通過Bartender軟體編輯,採用code128C字符集,條形碼密度為16.39mil,字元數為10。

 
根據公式(全部為codeC時的公式)進行計算L=(5.5*10+35)*0.01639=1.4751英寸=37.5mm
根據公式計算的code128條形碼寬度與軟體實際生成的條形碼寬度是一致的。
採用code128C時也可以採用2位解碼的方式,如上圖所示的1256742345,可以解碼為“12”“56”“74”“23”“45”總共5個字元。
根據公式進行計算L=(11*5+35)*0.01639=1.4751英寸=37.5mm,與使用另外一個公式的結果是一致的。

3、下圖條形碼通過Bartender軟體編輯,前面的小寫字母採用code128B字符集,後面的數字採用code128C字符集,中間使用了shift轉換字元,條形碼密度為16.39mil,字元數為10。

 
下面進行字元數統計:“abc”採用code128B字符集,計算為3個字元,“6742345”採用code128C字符集,計算為4個字元,中間轉換字元Shift計算為1個字元,總共為8個字元。
根據公式進行計算L=(11*8+35)*0.01639=2.01597英寸=51.2mm
根據公式計算的code128條形碼寬度與軟體實際生成的條形碼寬度是一致的。

附錄:Code128條形碼字元表
下表顯示了三個不同的字符集,每個字元的十進位制值是用來計算校驗字元。最後一列顯示的字元模式的條和空。數字顯示模組的數量範圍內給定的空間或酒吧。為了得到擴充套件ASCII十進位制,新增32在第一列的十進位制值。這裡有一個很好的擴充套件ASCII表。請注意,code128只能編碼英文字母。

Code A Code B Code C 圖案 想要列印的ASCII字元
0 SP SP 00 2 1 2 2 2 2 SP(ASCII 32)
1 ! ! 01 2 2 2 1 2 2 !(ASCII 33)
2 " " 02 2 2 2 2 2 1 "(ASCII 34)
3 # # 03 1 2 1 2 2 3 #(ASCII 35)
4 $ $ 04 1 2 1 3 2 2 $ (ASCII 36)
5 % % 05 1 3 1 2 2 2 % (ASCII 37)
6 & & 06 1 2 2 2 1 3 & (ASCII 38)
7 ' ' 07 1 2 2 3 1 2 ' (ASCII 39)
8 ( ( 08 1 3 2 2 1 2 ( (ASCII 40)
9 ) ) 09 2 2 1 2 1 3 ) (ASCII 41)
10 * * 10 2 2 1 3 1 2 * (ASCII 42)
11 + + 11 2 3 1 2 1 2 + (ASCII 43)
12 , , 12 1 1 2 2 3 2 , (ASCII 44)
13 - - 13 1 2 2 1 3 2 - (ASCII 45)
14 . . 14 1 2 2 2 3 1 . (ASCII 46)
15 / / 15 1 1 3 2 2 2 / (ASCII 47)
16 0 0 16 1 2 3 1 2 2 0 (ASCII 48)
17 1 1 17 1 2 3 2 2 1 1(ASCII 49)
18 2 2 18 2 2 3 2 1 1 2 (ASCII 50)
19 3 3 19 2 2 1 1 3 2 3 (ASCII 51)
20 4 4 20 2 2 1 2 3 1 4 (ASCII 52)
21 5 5 21 2 1 3 2 1 2 5 (ASCII 53)
22 6 6 22 2 2 3 1 1 2 6 (ASCII 54)
23 7 7 23 3 1 2 1 3 1 7 (ASCII 55)
24 8 8 24 3 1 1 2 2 2 8 (ASCII 56)
25 9 9 25 3 2 1 1 2 2 9 (ASCII 57)
26 : : 26 3 2 1 2 2 1 : (ASCII 57)
27 ; ; 27 3 1 2 2 1 2 ; (ASCII 59)
28 < < 28 3 2 2 1 1 2 < (ASCII 60)
29 = = 29 3 2 2 2 1 1 = (ASCII 61)
30 > > 30 2 1 2 1 2 3 > (ASCII 62)
31 ? ? 31 2 1 2 3 2 1 ? (ASCII 63)
32 @ @ 32 2 3 2 1 2 1 @ (ASCII 64)
33 A A 33 1 1 1 3 2 3 A (ASCII 65)
34 B B 34 1 3 1 1 2 3 B (ASCII 66)
35 C C 35 1 3 1 3 2 1 C (ASCII 67)
36 D D 36 1 1 2 3 1 3 D (ASCII 68)
37 E E 37 1 3 2 1 1 3 E (ASCII 69)
38 F F 38 1 3 2 3 1 1 F (ASCII 70)
39 G G 39 2 1 1 3 1 3 G (ASCII 71)
40 H H 40 2 3 1 1 1 3 H (ASCII 72)
41 I I 41 2 3 1 3 1 1 I (ASCII 73)
42 J J 42 1 1 2 1 3 3 J (ASCII 74)
43 K K 43 1 1 2 3 3 1 K (ASCII 75)
44 L L 44 1 3 2 1 3 1 L (ASCII 76)
45 M M 45 1 1 3 1 2 3 M (ASCII 77)
46 N N 46 1 1 3 3 2 1 N (ASCII 78)
47 O O 47 1 3 3 1 2 1 O (ASCII 79)
48 P P 48 3 1 3 1 2 1 P (ASCII 80)
49 Q Q 49 2 1 1 3 3 1 Q (ASCII 81)
50 R R 50 2 3 1 1 3 1 R (ASCII 82)
51 S S 51 2 1 3 1 1 3 S (ASCII 83)
52 T T 52 2 1 3 3 1 1 T (ASCII 84)
53 U U 53 2 1 3 1 3 1 U (ASCII 85)
54 V V 54 3 1 1 1 2 3 V (ASCII 86)
55 W W 55 3 1 1 3 2 1 W (ASCII 87)
56 X X 56 3 3 1 1 2 1 X (ASCII 88)
57 Y Y 57 3 1 2 1 1 3 Y (ASCII 89)
58 Z Z 58 3 1 2 3 1 1 Z (ASCII 90)
59 [ [ 59 3 3 2 1 1 1 [ (ASCII 91)
60 \ \ 60 3 1 4 1 1 1 \ (ASCII 92)
61 ] ] 61 2 2 1 4 1 1 ] (ASCII 93)
62 ^ ^ 62 4 3 1 1 1 1 ^ (ASCII 94)
63 _ _ 63 1 1 1 2 2 4 _ (ASCII 95)
64 NUL ` 64 1 1 1 4 2 2 ` (ASCII 96)
65 SOH a 65 1 2 1 1 2 4 a (ASCII 97)
66 STX b 66 1 2 1 4 2 1 b (ASCII 98)
67 ETX c 67 1 4 1 1 2 2 c (ASCII 99)
68 EOT d 68 1 4 1 2 2 1 d (ASCII 100)
69 ENQ e 69 1 1 2 2 1 4 e (ASCII 101)
70 ACK f 70 1 1 2 4 1 2 f (ASCII 102)
71 BEL g 71 1 2 2 1 1 4 g (ASCII 103)
72 BS h 72 1 2 2 4 1 1 h (ASCII 104)
73 HT i 73 1 4 2 1 1 2 i (ASCII 105)
74 LF j 74 1 4 2 2 1 1 j (ASCII 106)
75 VT k 75 2 4 1 2 1 1 k (ASCII 107)
76 FF l 76 2 2 1 1 1 4 l (ASCII 108)
77 CR m 77 4 1 3 1 1 1 m (ASCII 109)
78 SO n 78 2 4 1 1 1 2 n (ASCII 110)
79 SI o 79 1 3 4 1 1 1 o (ASCII 111)
80 DLE p 80 1 1 1 2 4 2 p (ASCII 112)
81 DC1 q 81 1 2 1 1 4 2 q (ASCII 113)
82 DC2 r 82 1 2 1 2 4 1 r (ASCII 114)
83 DC3 s 83 1 1 4 2 1 2 s (ASCII 115)
84 DC4 t 84 1 2 4 1 1 2 t (ASCII 116)
85 NAK u 85 1 2 4 2 1 1 u (ASCII 117)
86 SYN v 86 4 1 1 2 1 2 v (ASCII 118)
87 ETB w 87 4 2 1 1 1 2 w (ASCII 119)
88 CAN x 88 4 2 1 2 1 1 x (ASCII 120)
89 EM y 89 2 1 2 1 4 1 y (ASCII 121)
90 SUB z 90 2 1 4 1 2 1 z (ASCII 122)
91 ESC { 91 4 1 2 1 2 1 { (ASCII 123)
92 FS | 92 1 1 1 1 4 3 | (ASCII 124)
93 GS } 93 1 1 1 3 4 1 } (ASCII 125)
94 RS ~ 94 1 3 1 1 4 1 ~ (ASCII 126)
95 (Hex 7F) US DEL 95 1 1 4 1 1 3 DEL (ASCII 127)
96 (Hex 80) FNC 3 FNC 3 96 1 1 4 3 1 1 ? (ASCII 128)
97 (Hex 81) FNC 2 FNC 2 97 4 1 1 1 1 3 ü (ASCII 129)
98 (Hex 82) SHIFT SHIFT 98 4 1 1 3 1 1 é (ASCII 130)
99 (Hex 83) CODE C CODE C 99 1 1 3 1 4 1 a (ASCII 131)
100 (Hex 84) CODE B FNC 4 CODE B 1 1 4 1 3 1 ? (ASCII 132)
101 (Hex 85) FNC 4 CODE A CODE A 3 1 1 1 4 1 à (ASCII 133)
102 (Hex 86) FNC 1 FNC 1 FNC 1 4 1 1 1 3 1 ? (ASCII 134)
開始符號 圖案 想要列印的ASCII字元
103 (Hex 87) START (Code A) 2 1 1 4 1 2 ? (ASCII 135)
104 (Hex 88) START (Code B) 2 1 1 2 1 4 ? (ASCII 136)
105 (Hex 89) START (Code C) 2 1 1 2 3 2 ‰ (ASCII 137)
106 (Hex 6A) STOP (All Codes) 2 3 3 1 1,1 2 ? (ASCII 138)

原文:http://www.chongshang.com.cn/code128_width.shtml