1. 程式人生 > 實用技巧 >5分鐘看懂Code128條形碼

5分鐘看懂Code128條形碼

什麼是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...

參考:

1、Code128一維條碼中A碼、B碼、C碼的區別

2、如何看懂Code128條形碼