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