什么是Code128條形碼?
相信大家看到這個都不陌生吧
1、前言
條形碼種類很多,常見的大概有二十多種碼制,其中包括:
Code39碼(標准39碼)、Codabar碼(庫德巴碼)、Code25碼(標准25碼)、ITF25碼(交叉25碼)、Matrix25碼(矩陣25碼)、UPC-A碼、UPC-E碼、EAN-13碼(EAN-13國際商品條碼)、EAN-8碼(EAN-8國際商品條碼)、中國郵政碼(矩陣25碼的一種變體)、Code-B碼、MSI碼、、Code11碼、Code93碼、ISBN碼、ISSN碼、Code128碼(Code128碼,包括EAN128碼)、Code39EMS(EMS專用的39碼)等一維條碼和PDF417等二維條碼。
2、簡介
2.1、CODE128碼
CODE128碼是廣泛應用在企業內部管理、生產流程、物流控制系統方面的條碼碼制,由於其優良的特性在管理信息系統的設計中被廣泛使用,CODE128碼是應用最廣泛的條碼碼制之一。
CODE128碼是1981年引入的一種高密度條碼,CODE128 碼可表示從 ASCII 0 到ASCII 127 共128個字符,故稱128碼。其中包含了數字、字母和符號字符。
2.2、特點
●可表示高密度數據和字符串;
●每個字符由3個條、3個空、11個單元構成,字符串可變長;
●符號內含校驗碼;
●有三種不同的版本:A(數字、大寫字母、控制字符)B(數字、大小字母、字符)C(雙位數字):
CODE128A:標准數字和大寫字母,控制符,特殊字符;
CODE128B:標准數字和大寫字母,小寫字母,特殊字符;
CODE128C:[00]-[99]的數字對集合,共100個;
●可用128個字符分別在A、B或C三個字符串集合中。
3、如何看懂Code128條形碼
重點來了!!!
從上圖中可觀察到:
從左往右是黑白相間的條形碼,黑的叫“條”(B),白的叫“空”(S)。
如果你仔細看,條和空都有4種不同的寬度。我們將它從細到粗賦予1、2、3、4這幾個值。
然后我們開始按照粗細的值來閱讀條碼、結果如下:
211232 | 112232 | 131123 | 331121 | 241112 | 214121 | 112232 | 311123 | 2331112
注意這個結果是黑白相間的。別只顧着讀“條”忘了都空。這邊總共有55位。
Code128碼有一個頭、一個校驗、一個尾。
尾總是2331112,這代表Code128已經結束。其余的部分是6位為一個塊,包括頭。
頭有3種:A)211412 B)211214 C)211232 。這分別表示此Code128是什么類型的。(ABC其中一種)
我們將我們讀出來的碼,去掉頭和尾,重新分一次塊:
112232 | 131123 | 331121 | 241112 | 214121 | 112232 | 311123
正好是6位為一塊。其中最后一個塊(除去尾段的最后一個塊)是校驗位,用於檢查該條形碼是否被正確編碼。
然后查Code 128字符表,對應各個編號表示的是什么。
我們這個是211232開頭,是Code128C型。C型碼是純數字的,每個塊對應2位數字。
查表可得 12 34 56 78 90 12。
211214 | 123221 | 223211 | 221132 | 132212 | 2331114
128 B型 1 2 3 校驗碼 尾
有了這些知識,我們就可以嘗試去寫一個程序去生成條形碼和識別條形碼。
其實生成是比較簡單的,而識別就比較麻煩了。通常超市是使用條碼槍,通過光學原理來識別的,因為黑白條紋的反光特性不一樣。
附:
Code128 字符表:
可以看出從0-63這前64個字符中A類和B類是一樣的。
其中有些控制字符,比如CodeA表示此字段下一個個塊臨時使用Code128A的字符表中的字符。
還有一些其他的,不是很常見,有興趣的朋友可以參考GBT 15425-2002 EAN UCC系統 128條碼 標准
注:ABC分別為128A類,128B類,128C類的字符表。有些B類的字符為空表示和A類的一樣。
1 B,S,B,S,B,S// A B C 2 2,1,2,2,2,2,// sp 00 3 2,2,2,1,2,2,// ! 01 4 2,2,2,2,2,1,// " 02 5 1,2,1,2,2,3,// # 03 6 1,2,1,3,2,2,// $ 04 7 1,3,1,2,2,2,// % 05 8 1,2,2,2,1,3,// & 06 9 1,2,2,3,1,2,// ... 07 10 1,3,2,2,1,2,// ( 08 11 2,2,1,2,1,3,// ) 09 12 2,2,1,3,1,2,// * 10 13 2,3,1,2,1,2,// + 11 14 1,1,2,2,3,2,// , 12 15 1,2,2,1,3,2,// - 13 16 1,2,2,2,3,1,// . 14 17 1,1,3,2,2,2,// / 15 18 1,2,3,1,2,2,// 0 16 19 1,2,3,2,2,1,// 1 17 20 2,2,3,2,1,1,// 2 18 21 2,2,1,1,3,2,// 3 19 22 2,2,1,2,3,1,// 4 20 23 2,1,3,2,1,2,// 5 21 24 2,2,3,1,1,2,// 6 22 25 3,1,2,1,3,1,// 7 23 26 3,1,1,2,2,2,// 8 24 27 3,2,1,1,2,2,// 9 25 28 3,2,1,2,2,1,// : 26 29 3,1,2,2,1,2,// ; 27 30 3,2,2,1,1,2,// < 28 31 3,2,2,2,1,1,// = 29 32 2,1,2,1,2,3,// > 30 33 2,1,2,3,2,1,// ? 31 34 2,3,2,1,2,1,// @ 32 35 1,1,1,3,2,3,// A 33 36 1,3,1,1,2,3,// B 34 37 1,3,1,3,2,1,// C 35 38 1,1,2,3,1,3,// D 36 39 1,3,2,1,1,3,// E 37 40 1,3,2,3,1,1,// F 38 41 2,1,1,3,1,3,// G 39 42 2,3,1,1,1,3,// H 40 43 2,3,1,3,1,1,// I 41 44 1,1,2,1,3,3,// J 42 45 1,1,2,3,3,1,// K 43 46 1,3,2,1,3,1,// L 44 47 1,1,3,1,2,3,// M 45 48 1,1,3,3,2,1,// N 46 49 1,3,3,1,2,1,// O 47 50 3,1,3,1,2,1,// P 48 51 2,1,1,3,3,1,// Q 49 52 2,3,1,1,3,1,// R 50 53 2,1,3,1,1,3,// S 51 54 2,1,3,3,1,1,// T 52 55 2,1,3,1,3,1,// U 53 56 3,1,1,1,2,3,// V 54 57 3,1,1,3,2,1,// W 55 58 3,3,1,1,2,1,// X 56 59 3,1,2,1,1,3,// Y 57 60 3,1,2,3,1,1,// Z 58 61 3,3,2,1,1,1,// [ 59 62 3,1,3,1,1,1,// \ 60 63 2,2,1,4,1,1,// ] 61 64 4,3,1,1,1,1,// ^ 62 65 1,1,1,2,2,4,// _ 63 66 1,1,1,4,2,2,// NUL ' 64 67 1,2,1,1,2,4,// SOH a 65 68 1,2,1,4,2,1,// STX b 66 69 1,4,1,1,2,2,// ETX c 67 70 1,4,1,2,2,1,// EOT d 68 71 1,1,2,2,1,4,// ENQ e 69 72 1,1,2,4,1,2,// ACK f 70 73 1,2,2,1,1,4,// BEL g 71 74 1,2,2,4,1,1,// BS h 72 75 1,4,2,1,1,2,// HT i 73 76 1,4,2,2,1,1,// LF j 74 77 2,4,1,2,1,1,// VT k 75 78 2,2,1,1,1,4,// FF l 76 79 4,1,3,1,1,1,// CR m 77 80 2,4,1,1,1,2,// SO n 78 81 1,3,4,1,1,1,// SI o 79 82 1,1,1,2,4,2,// DLE p 80 83 1,2,1,1,4,2,// DC1 q 81 84 1,2,1,2,4,1,// DC2 r 82 85 1,1,4,2,1,2,// DC3 s 83 86 1,2,4,1,1,2,// DC4 t 84 87 1,2,4,2,1,1,// NAK u 85 88 4,1,1,2,1,2,// SYN v 86 89 4,2,1,1,1,2,// ETB w 87 90 4,2,1,2,1,1,// CAN x 88 91 2,1,2,1,3,1,// EM y 89 92 2,1,4,1,2,1,// SUB z 90 93 4,1,2,1,2,1,// ESC { 91 94 1,1,1,1,4,3,// FS | 92 95 1,1,1,3,4,1,// GS } 93 96 1,3,1,1,4,1,// RS ~ 94 97 1,1,4,1,1,3,// US DEL 95 98 1,1,4,3,1,1,// FNC3 FNC3 96 99 4,1,1,1,1,3,// FNC2 FNC2 97 100 4,1,1,3,1,1,// SHIFT SHIFT 98 101 1,1,3,1,4,1,// CodeC CodeC 99 102 1,1,4,1,3,1,// CodeB FNC4 CodeB 103 3,1,1,1,4,1,// FNC4 CodeA CodeA 104 4,1,1,1,3,1,// FNC1 FNC1 FNC1 105 2,1,1,4,1,2,// StartA 106 2,1,1,2,1,4,// StartB 107 2,1,1,2,3,2,// StartC 108 2,3,3,1,1,1,2,// Stop
Over...
參考: