一、條形碼概述
條形碼是由美國(guó)的N.T.Woodland在1949年首先提出的。近年來,隨著計(jì)算機(jī)應(yīng)用的不斷普及,條形碼的應(yīng)用得到了很大的發(fā)展。條形碼可以標(biāo)出 商品的生產(chǎn)國(guó)、制造廠家、商品名稱、生產(chǎn)日期、圖書分類號(hào)、郵件起止地點(diǎn)、類別、日期等信息,因而在商品流通、圖書管理、郵電管理、銀行系統(tǒng)等許多領(lǐng)域都 得到了廣泛的應(yīng)用。 條形碼是由寬度不同、反射率不同的條和空,按照一定的編碼規(guī)則(碼制)編制成的,用以表達(dá)一組數(shù)字或字母符號(hào)信息的圖 形標(biāo)識(shí)符,即條形碼是一組粗細(xì)不同,按照一定的規(guī)則安排間距的平行線條圖形,常見的條形碼是由反射率相差很大的黑條(簡(jiǎn)稱條)和白條(簡(jiǎn)稱空)組成的。
二、條形碼識(shí)別系統(tǒng)的組成
為了閱讀出條形碼所代表的信息,需要一套條形碼識(shí)別系統(tǒng),它由條形碼掃描器、放大整形電路、譯碼接口電路和計(jì)算機(jī)系統(tǒng)等部分組成。
三、條形碼的識(shí)別原理
由于不同顏色的物體,其反射的可見光的波長(zhǎng)不同,白色物體能反射各種波長(zhǎng)的可見光,黑色物體則吸收各種波長(zhǎng)的可見光,所以當(dāng)條形碼掃描器光源發(fā)出的光經(jīng) 光闌及凸透鏡1后,照射到黑白相間的條形碼上時(shí),反射光經(jīng)凸透鏡2聚焦后,照射到光電轉(zhuǎn)換器上,于是光電轉(zhuǎn)換器接收到與白條和黑條相應(yīng)的強(qiáng)弱不同的反射光 信號(hào),并轉(zhuǎn)換成相應(yīng)的電信號(hào)輸出到放大整形電路,白條、黑條的寬度不同,相應(yīng)的電信號(hào)持續(xù)時(shí)間長(zhǎng)短也不同。但是,由光電轉(zhuǎn)換器輸出的與條形碼的條和空相應(yīng) 的電信號(hào)一般僅10mV左右,不能直接使用,因而先要將光電轉(zhuǎn)換器輸出的電信號(hào)送放大器放大,放大后的電信號(hào)仍然是一個(gè)模擬電信號(hào),為了避免由條形碼中的 疵點(diǎn)和污點(diǎn)導(dǎo)致錯(cuò)誤信號(hào),在放大電路后需加一整形電路,把模擬信號(hào)轉(zhuǎn)換成數(shù)字電信號(hào),以便計(jì)算機(jī)系統(tǒng)能準(zhǔn)確判讀。
整形電路的脈沖數(shù)字信號(hào) 經(jīng)譯碼器譯成數(shù)字、字符信息。它通過識(shí)別起始、終止字符來判別出條形碼符號(hào)的碼制及掃描方向;通過測(cè)量脈沖數(shù)字電信號(hào)0、1的數(shù)目來判別出條和空的數(shù)目. 通過測(cè)量0、1信號(hào)持續(xù)的時(shí)間來判別條和空的寬度,這樣便得到了被辯讀的條形碼符號(hào)的條和空的數(shù)目及相應(yīng)的寬度和所用碼制,根據(jù)碼制所對(duì)應(yīng)的編碼規(guī)則,便 可將條形符號(hào)換成相應(yīng)的數(shù)字、字符信息,通過接口電路送給計(jì)算機(jī)系統(tǒng)進(jìn)行數(shù)據(jù)處理與管理,便完成了條形碼辨讀的全過程。
以下是中華人民共和國(guó)國(guó)家標(biāo)準(zhǔn) GB/T 12905-2000 中的術(shù)語(yǔ):
- 1、條碼 bar code 由一組規(guī)則排列的條、空及其對(duì)應(yīng)字符組成的標(biāo)記,用以表示一定的信息。
- 2、條碼系統(tǒng) bar code system 由條碼符號(hào)設(shè)計(jì)、制作及掃描識(shí)讀組成的系統(tǒng)。
- 3、反射率 reflectance;reflectivity 反射光強(qiáng)度與入射光強(qiáng)度的比值。
- 4、漫反射 deffuse reflection 投射在粗糙表面的光向各個(gè)方向反射的現(xiàn)象。
- 5、鏡反射 specular reflection 投射在光滑表面的光向各個(gè)方向反射的現(xiàn)象。
- 6、條 bar;dark bar;black bar 條碼中反射率較低的部分。
- 7、空 space;light bar 條碼中反射率較高的部分。
- 8、起始符 start character;start cipher;start code 位于條碼起始位置的若干條與空。
- 9、終止符 stop character;stop cipher;start code 位于條碼終止位置的若干條與空。
- 10、空白區(qū) clear area;quiet zone;quiet area;clear zone 條碼起始符、終止符兩端外側(cè)與空的反射率相同的限定區(qū)域。
- 11、條碼符號(hào) bar code symbol 包括空白區(qū)的條碼。
- 12、字符集 character seet 條碼符號(hào)可以表示的字母、數(shù)字和符號(hào)的集合。
- 13、中間分隔符 central seperating character 位于條碼中間位置用來分隔數(shù)據(jù)段的若干條與空。
- 14、分隔字符 separator 編碼字符集中的一種起分隔作用的特殊字符。
- 15、條碼字符 bar code character 表示一個(gè)字符或符號(hào)的若干條與空。
- 16、條碼字符集 bar code character set 某種條碼所能表示的條碼字符的集合。
- 17、條碼數(shù)據(jù)符 bar code data character 表示特定信息的條碼字符。
- 18、條碼校驗(yàn)符 bar code check character 表示校驗(yàn)碼的條碼字符。
- 19、條碼填充符 bar code filler character 不表示特定信息的條碼字符。
- 20、單元 element 構(gòu)成條碼字符的條或空。
- 21、條高 bar height 垂直于單元寬度方向的條的高度尺寸。
- 22、條寬 bar width 條碼字符中條的的寬度尺寸。
- 23、空寬 space width 條碼字符的空的寬度尺寸。
- 24、條寬比 bar width ratio 條碼中最寬條與最窄條的寬度比。
- 25、空寬比 space width ratio 條碼中最寬空與最窄空的寬度比。
- 26、X尺寸 X dimension X 條碼符號(hào)中窄單元的標(biāo)稱尺寸。
- 27、Z尺寸 Z dimension Z 條碼符號(hào)中窄單元的實(shí)際尺寸。
- 28、寬窄比 width to narrow ratio N 平均寬條的條寬與平均寬空的空寬之和(條碼字符間隔不計(jì)在內(nèi))除以兩倍Z尺寸。它是寬度調(diào)節(jié)編碼法中的技術(shù)參數(shù)。計(jì)算公式:N=(平均寬條的條寬+平均寬空的空寬)/2Z
- 29、條碼長(zhǎng)度 bar code length 從條碼起始符前緣到終止符后緣的長(zhǎng)度。
- 30、條碼符號(hào)的長(zhǎng)度 bar code symbol length;symbol length 包括空白去的條碼長(zhǎng)度。
- 31、縱橫比 aspect ratio 條碼長(zhǎng)度與條高的比。
- 32、條碼密度 bar code density 單位長(zhǎng)度條碼所表示的條碼字符的個(gè)數(shù)。注:通常用CPI表示,即每英寸內(nèi)能表示的條碼字符的個(gè)數(shù)。
- 33、條碼字符間隔 inter-character gap 相鄰條碼字符間不表示特定信息且與空的反射率相同的區(qū)域。
- 34、模塊 module 模塊組配編碼法組成條碼字符的基本單位。
- 35、保護(hù)框 bearer bar 圍繞條碼且與條反射率相同的邊或框。
- 36、連續(xù)型條碼 continuos bar code 沒有條碼字符間隔的條碼。
- 37、非連續(xù)型條碼 discrete bar code 有條碼字符間隔的條碼。
- 38、雙向條碼 bi-directional bar code 條碼符號(hào)兩端均可作為掃描起點(diǎn)的條碼。
- 39、附加條碼 add-on 表示附加信息的條碼。
- 40、奇偶校驗(yàn) odd-even check 根據(jù)二進(jìn)制數(shù)位中0或1的個(gè)數(shù)為奇數(shù)或偶數(shù)而進(jìn)行校驗(yàn)的方法。
- 41、自校驗(yàn)條碼 self-checking bar code 條碼字符本身具有校驗(yàn)功能的條碼。
- 42、定長(zhǎng)條碼 fixed length of bar code 條碼字符個(gè)數(shù)固定的條碼。
- 43、非定長(zhǎng)條碼 unfixed length of bar code 條碼字符個(gè)數(shù)不固定的條碼。
- 44、寬度調(diào)節(jié)編碼法 width encode 條碼符號(hào)中的條和空由寬、窄兩種單元組成的條碼編碼方法。
- 45、模塊組配編碼法 module combination encode 條碼符號(hào)的字符由規(guī)定的若干個(gè)模塊組成的條碼編碼方法。
- 46、二元碼 binary-edge-code 兩種單元寬度條碼,由兩種寬度單元組成的條碼字符。
- 47、多元碼 four-edge-code 多種單元寬度條碼,由三種或三種以上的寬度單元組成的條碼字符。
- 48、奇排列 odd permutation;odd parity 模塊組配編碼法中,一個(gè)條碼字符所含條的模塊數(shù)的和為奇數(shù)的排列。
- 49、偶排列 even permutation;even parity 模塊組配編碼法中,一個(gè)條碼字符所含條的模塊數(shù)的和為偶數(shù)的排列。
- 50、條碼邏輯式 bar code logic value 用二進(jìn)制“0”和“1”表示條碼字符的表示式。
- 51、編碼容量 encoded volume 條碼字符集中所能表示的字符數(shù)的最大值。
- 52、條碼原版膠片 bar code film master 條碼膠片的母片。
- 53、一維條碼 linear bar code;one-dimentional bar code 只在一維方向上表示信息的條碼符號(hào)。
- 54、二維條碼 two-dimentional bar code 在二維方向上表示信息的條碼符號(hào)。
- 55、特種條碼 special bar code 特殊材料制成的條碼。
- 56、條碼字符的值 character value 一維條碼由條碼邏輯式向字符集轉(zhuǎn)換的中間值。
- 57、碼字 codeword 二維條碼字符的值。由條碼邏輯式象字符集轉(zhuǎn)換的中間值。
- 58、糾錯(cuò)字符 error correction character 二維條碼中,錯(cuò)誤檢測(cè)和錯(cuò)誤糾正的字符。
- 59、糾錯(cuò)碼字 error correction codeword 二維條碼中,糾錯(cuò)字符的值。
四 條形碼的一些基本概念
◆碼制
條碼的碼制是指條碼符號(hào)的類型,每種類型的條碼符號(hào)都是由符合特定編碼規(guī)則的條和空組合而成。每種碼制都具有固定的編碼容量和所規(guī)定 的條碼字符集。條碼字符中字符總數(shù)不能大于該種碼制的編碼容量。常用的一維碼的碼制包括:EAN碼、39碼、交插25碼、UPC碼、128碼、93碼,及 Codabar(庫(kù)德巴碼)等。
◆條碼字符集
條碼字符集是指某種碼制所表示的全部字符的集合。有些碼制僅能表示10個(gè)數(shù)字字 符:0到9,如EAN/UPC碼,25條碼;有些碼制除了能表示10個(gè)數(shù)字字符外,還可以表示幾個(gè)特殊字符,如庫(kù)德巴條碼。39條碼可表示數(shù)字字 符:0~9,26個(gè)英文字母:A~Z以及一些特殊符號(hào)。
◆連續(xù)性與非連續(xù)性
條碼符號(hào)的連續(xù)性是指每個(gè)條碼字符之間不存在間 隔,相反,非連續(xù)性是指每個(gè)條碼字符之間存在間隔。從某種意義上講,由于連續(xù)性條碼不存在條碼字符間隔,即密度相對(duì)較高,而非連續(xù)性條碼的密度相對(duì)較 低。但非連續(xù)性條碼字符間隔引起誤差較大,一般規(guī)范不給出具體指標(biāo)限制。而對(duì)連續(xù)性條碼除了控制尺寸誤差外,還需控制相鄰條與條,空與空的相同邊緣間的尺 寸誤差及每一條碼字符的尺寸誤差。
◆定長(zhǎng)條碼與非定長(zhǎng)條碼
定長(zhǎng)條碼是指僅能表示固定字符個(gè)數(shù)的條碼。非定長(zhǎng)條碼是指能表示可變字符個(gè)數(shù)的條碼。例如:EAN/UPC碼是定長(zhǎng)條碼,它們的標(biāo)準(zhǔn)版僅能表示12個(gè)字符,39碼為非定長(zhǎng)條碼。 定 長(zhǎng)條碼由于限制了表示字符的個(gè)數(shù),即密碼的無(wú)視率相對(duì)較低,因?yàn)榫鸵粋€(gè)完整的條碼符號(hào)而言,任何信息的丟失總會(huì)導(dǎo)致密碼的失敗。非定長(zhǎng)條碼具有靈活、方便 等優(yōu)點(diǎn),但受掃描器及印刷面積的控制,它不能表示任意多個(gè)字符,并且在掃描閱讀過程中可能產(chǎn)生因信息丟失而引起錯(cuò)誤密碼,這些缺點(diǎn)在某些碼制(如交插25 碼)中出現(xiàn)的概率相對(duì)較大,這個(gè)缺點(diǎn)可通過識(shí)讀器或計(jì)算機(jī)系統(tǒng)的校驗(yàn)程度而克服。
◆雙向可讀性
條碼符號(hào)的雙向可讀性,是指從左、 右兩側(cè)開始掃描都可被識(shí)別的特性。絕大多數(shù)碼制都可雙向識(shí)讀,所以都具有雙向可讀性。事實(shí)上,雙向可讀性不僅僅是條碼符號(hào)本身的特性,它是條碼符號(hào)和掃描 設(shè)備的綜合特性。對(duì)于雙向可讀的條碼,識(shí)讀過程中譯碼器需要判別掃描方向。有些類型的條碼符號(hào),其掃描方向的判定是通過起始符與終止符來完成。例如39 碼、交插25碼、庫(kù)德巴碼。有些類型的條碼,由于從兩個(gè)方向掃描起始符和終止符所產(chǎn)生的數(shù)字脈沖信號(hào)完全相同,所以無(wú)法用它們來判別掃描方向。例 如:EAN和UPC碼。在這種情況下,掃描方向的判別則是通過條碼數(shù)據(jù)符的特定組合來完成的。對(duì)于某些非連續(xù)性條碼符號(hào),例如:39條碼,由于其字符集 中存在著條碼字符的對(duì)稱性(例如字符“*”與“P”,“M”與“—”等),在條碼字符間隔較大時(shí),很可能出現(xiàn)因信息丟失而引起的譯碼錯(cuò)誤。
◆自校驗(yàn)特性
條碼符號(hào)的自校驗(yàn)特性是指條碼字符本身具有校驗(yàn)特性。若在一條碼符號(hào)中,一個(gè)印刷缺陷(例如,因出現(xiàn)污點(diǎn)把一個(gè)窄條錯(cuò)認(rèn)為寬條,而相鄰寬空錯(cuò)認(rèn)為窄空)不會(huì) 導(dǎo)致替代錯(cuò)誤,那么這種條碼就具有自校驗(yàn)功能。例如39條碼、庫(kù)德巴條碼、交插25條碼都具有自校驗(yàn)功能;EAN和UPC條碼、93條碼等都沒有自校驗(yàn)功 能。自校驗(yàn)功能也能校驗(yàn)出一個(gè)印刷缺陷。對(duì)于大于一個(gè)的印刷缺陷,任何自校驗(yàn)功能的條碼都不可能完全校驗(yàn)出來。對(duì)于某種碼制,是否具有自校驗(yàn)功能是由其編 碼結(jié)構(gòu)決定的。碼制設(shè)置者在設(shè)置條碼符號(hào)時(shí),均須考慮自校驗(yàn)功能。
五 一維條碼控件
(圖1: 標(biāo)準(zhǔn)版商品條碼符號(hào)結(jié)構(gòu))
(圖2:標(biāo)準(zhǔn)版商品條碼符號(hào)構(gòu)成示意圖)
★左側(cè)空白區(qū):
位于條碼符號(hào)最左側(cè)的與空的反射率相同的區(qū)域,其最小寬度為11個(gè)模塊寬。
★起始符:
位于條碼符號(hào)左側(cè)空白區(qū)的右側(cè),表示信息開始的特殊符號(hào),由3個(gè)模塊組成。
★左側(cè)數(shù)據(jù)符:
位于起始符號(hào)右側(cè),是平分字符的特殊符號(hào),由5個(gè)模塊組成。
★中間分隔符:
位于左側(cè)數(shù)據(jù)符的右側(cè),是平分條碼字符的特殊符號(hào),由5個(gè)模塊組成。
★右側(cè)數(shù)據(jù)符:
位于中間分隔符右側(cè),表示5位數(shù)字信息的一組條碼字符,由35個(gè)模塊組成。
★校驗(yàn)符:
位于右側(cè)數(shù)據(jù)符的右側(cè),表示校驗(yàn)碼的條碼字符,由7個(gè)模塊組成。
★終止符:
位于條碼符號(hào)校驗(yàn)符的右側(cè),表示信息結(jié)束的特殊符號(hào),由3個(gè)模塊組成。
★右側(cè)空白區(qū):
位于條碼符號(hào)最右側(cè)的與空的反射率相同的區(qū)域,其最小寬度為7個(gè)模塊寬。為保護(hù)右側(cè)空白區(qū)的寬度,可在條碼符號(hào)右下角加 ">" 符號(hào), "<" 符號(hào)的位置見圖3。
(圖3:標(biāo)準(zhǔn)版條碼符號(hào)右空白區(qū)中“>”的位置及尺寸)
★供人識(shí)別字符:
位于條碼符號(hào)的下方,與條碼相對(duì)應(yīng)的13位數(shù)字。供人識(shí)別字符優(yōu)先選用GB/T 12508中規(guī)定的OCR-B字符集;字符頂部和條碼字符底部的最小距離為0.5個(gè)模塊寬。EAN-13商品條碼供人識(shí)別字符中的前置碼印制在條碼符號(hào)起始符的左側(cè)
(1)EAN碼:
EAN碼是國(guó)際物品編碼協(xié)會(huì)制定的一種商品用條碼,通用于全世界。EAN碼符號(hào)有標(biāo)準(zhǔn)版(EAN-13)和縮短版(EAN-8)兩種,我國(guó)的通用商品條碼與其等效,日常購(gòu)買的商品包裝上所印的條碼一般就是EAN碼。
(2)UPC碼:
UPC碼是美國(guó)統(tǒng)一代碼委員會(huì)制定的一種商品用條碼,主要用于美國(guó)和加拿大地區(qū),我們?cè)诿绹?guó)進(jìn)口的商品上可以看到。如圖所示:
(3)39碼:
39碼是一種可表示數(shù)字、字母等信息的條碼,主要用于工業(yè)、圖書及票證的自動(dòng)化管理,目前使用極為廣泛。
(4)Code 93碼:
Code 93碼與39碼具有相同的字符集,但它的密度要比39碼高,所以在面積不足的情況下,可以用93碼代替39碼。
(5)庫(kù)德巴碼:
庫(kù)德巴碼也可表示數(shù)字和字母信息,主要用于醫(yī)療衛(wèi)生、圖書情報(bào)、物資等領(lǐng)域的自動(dòng)識(shí)別。
(6)Code 128 碼:
128可表示ASCII 0 到 ASCII 127 共計(jì)128個(gè)ASCII字
(7)ITF 25 條碼:
交插25碼是一種條和空都表示信息的條碼,交插25碼有兩種單元寬度,每一個(gè)條 碼字符由五個(gè)單元組成,其中二個(gè)寬單元,三個(gè)窄單元。在一個(gè)交插25碼符號(hào)中,組成條碼符號(hào)的字符個(gè)數(shù)為偶數(shù),當(dāng)字符是奇數(shù)個(gè)時(shí),應(yīng)在左側(cè)補(bǔ)0變?yōu)榕紨?shù)。 條碼字符從左到右,奇數(shù)位置字符用條表示,偶數(shù)位字符用空表示。交插25碼的字符集包括數(shù)字0到9。
(8)Industrial 25 條碼:
Industrial 25碼只能表示數(shù)字,有兩種單元寬度。每個(gè)條碼字符由五個(gè)條組成,其中兩個(gè)寬條,其余為窄條。這種條碼的空不表示信息,只用來分隔條,一般取與窄條相同的寬寬度。
(9)Matrix 25 條碼:
Matrix 25碼只能表示數(shù)字0到9。當(dāng)采用Matrix25碼的編碼規(guī)范,而采用ITF25碼的啟始符和終止符時(shí),生成的條碼就是中國(guó)郵政碼。我公司的LabelShop條碼標(biāo)簽打印軟件可打印中國(guó)郵政碼!
六 、二維條碼
一維條碼所攜帶的信息量有限,如商品上的條碼僅能容納13位(EAN-13碼)阿拉伯?dāng)?shù)字,更多的信息只能依賴商品數(shù)據(jù)庫(kù)的支持,離開了預(yù)先建立的數(shù)據(jù) 庫(kù),這種條碼就沒有意義了,因此在一定程度上也限制了條碼的應(yīng)用范圍。基于這個(gè)原因,在90年代發(fā)明了二維條碼。二維條碼除了具有一維條碼的優(yōu)點(diǎn)外,同時(shí) 還有信息量大、可靠性高,保密、防偽性強(qiáng)等優(yōu)點(diǎn)。
目前二維條碼主要有PDF417碼、Code49碼、Code 16K碼、Data Matrix碼、MaxiCode碼等,主要分為堆積或?qū)优攀胶推灞P或矩陣式兩大類。
二維條碼作為一種新的信息存儲(chǔ)和傳遞技術(shù),從誕生之時(shí)就受到了國(guó)際社會(huì)的廣泛關(guān)注。經(jīng)過幾年的努力,現(xiàn)已應(yīng)用在國(guó)防、公共安全、交通運(yùn)輸、醫(yī)療保健、工業(yè)、商業(yè)、金融、海關(guān)及政府管理等多個(gè)領(lǐng)域。
二維條碼依靠其龐大的信息攜帶量,能夠把過去使用一維條碼時(shí)存儲(chǔ)于后臺(tái)數(shù)據(jù)庫(kù)中的信息包含在條碼中,可以直接通過閱讀條碼得到相應(yīng)的信息,并且二維條碼還有錯(cuò)誤修正條碼技術(shù)及防偽功能,增加了數(shù)據(jù)的安全性。
二維條碼可把照片、指紋編制于其中,可有效地解決證件的可機(jī)讀和防偽問題。因此,可廣泛應(yīng)用于護(hù)照、身份證、行車證、軍人證、健康證、保險(xiǎn)卡等。
(1)PDF417 二維條碼控件
PDF417是一種堆疊式二維條碼,目前應(yīng)用最為廣泛。PDF417條碼是由美國(guó)SYMBOL公司發(fā)明的,PDF(Portable Data File)意為"便攜數(shù)據(jù)文件"。組成條碼的每一個(gè)條碼字符由4個(gè)條和4個(gè)空,共17個(gè)模塊構(gòu)成,故稱為PDF417條碼。
PDF417條碼可表示數(shù)字、字母或二進(jìn)制數(shù)據(jù),也可表示漢字。一個(gè)PDF417條碼最多可容納1850個(gè)字符或1108 個(gè)字節(jié)的二進(jìn)制數(shù)據(jù),如果只表示數(shù)字則可容納2710個(gè)數(shù)字。PDF417的糾錯(cuò)能力分為9級(jí),級(jí)別越高,糾正能力越強(qiáng)。由于這種糾錯(cuò)功能,使得污損的 417條碼也可以正確讀出。我國(guó)目前已制定了PDF417碼的國(guó)家標(biāo)準(zhǔn)。 PDF417條碼需要有417解碼功能的條碼閱讀器才能識(shí)別。
PDF417條碼最大的優(yōu)勢(shì)在于其龐大的數(shù)據(jù)容量和極強(qiáng)的糾錯(cuò)能力。當(dāng)PDF417條碼用于防偽時(shí),并不是PDF417條碼不能被復(fù)制,而是由于使用PDF417條碼可以將大量的數(shù)據(jù)快速讀入計(jì)算機(jī),使得大規(guī)模的防偽檢驗(yàn)成為可能。
(2)QR Code 二維條碼
QR Code碼是由日本Denso公司于1994年9月研制的一種矩陣二維碼符號(hào),它除具有一維條碼及其它二維條碼所具有的信息容量大、可靠性高、可表示漢字及圖象多種文字信息、保密防偽性強(qiáng)等優(yōu)點(diǎn)。
七 商品條碼(EAN條碼)的編碼結(jié)構(gòu)
包括標(biāo)準(zhǔn)版商品條碼(EAN—13條碼)和縮短版商品條碼(EAN—8條碼)。 1、標(biāo)準(zhǔn)版商品條碼:EAN—13 標(biāo)準(zhǔn)版商品條碼所表示的代碼由13位數(shù)字組成,其結(jié)構(gòu)如下: 結(jié)構(gòu)一:X13X12X11X10X9X8X7 X6X5X4X3X2 X1, 其中:X13 ??X7廠商識(shí)別代碼;X6 ??X2表示商品項(xiàng)目代碼;X1校驗(yàn)碼。 結(jié)構(gòu)二:X13X12X11X10X9X8X7 X6 X5X4X3X2 X1。其中:X13 ??X6廠商識(shí)別代碼;X5 ??X2表示商品項(xiàng)目代碼;X1校驗(yàn)碼。當(dāng)X13X12X11為690、691時(shí),其代碼結(jié)構(gòu)同結(jié)構(gòu)一;當(dāng)X13X12X11為692時(shí),其代碼結(jié)構(gòu)同結(jié)構(gòu)二。 2、縮短版商品條碼:EAN-8 縮短版商品條碼由8位數(shù)字組成,其結(jié)構(gòu)如下: X8X7 X6 X5X4X3X2 X1;其中:X8X7 X6:其含義同標(biāo)準(zhǔn)版商品條碼的X13X12X11;X5X4X3X2:表示商品項(xiàng)目代碼,由EAN編碼組織統(tǒng)一分配。在我國(guó),由中國(guó)物品編碼中心統(tǒng)一分 配;X1:校驗(yàn)碼。計(jì)算時(shí),需在縮短版商品條碼代碼前加5個(gè)“0”,然后按標(biāo)準(zhǔn)版商品條碼校驗(yàn)碼的計(jì)算方法計(jì)算。
八 EAN-13 商品條碼的符號(hào)結(jié)構(gòu)
EAN-13商品條碼由左側(cè)空白區(qū)、起始符、左側(cè)數(shù)據(jù)符、中間分隔符、右側(cè)數(shù)據(jù)符、校驗(yàn)符、終止符、右側(cè)空白區(qū)及供人識(shí)別字符組成。見圖1和圖2。
九 EAN碼校驗(yàn)位的計(jì)算方法
下面的算法來自互聯(lián)網(wǎng),不是最方便的,但可以使用 /** EAN碼校驗(yàn)位的計(jì)算方法 從代碼位置序號(hào)2開始,所有偶數(shù)位的數(shù)字代碼求和為a。 將上步中的a乘以3為a。 從代碼位置序號(hào)3開始,所有奇數(shù)位的數(shù)字代碼求和為b。 將a和b相加為c。 取c的個(gè)位數(shù)d。 用10減去d即為校驗(yàn)位數(shù)值。 例:234235654652的校驗(yàn)碼的計(jì)算如下表: 數(shù)據(jù)碼 校驗(yàn)碼 代碼位置序號(hào) 13 12 11 10 9 8 7 6 5 4 3 2 1 數(shù)字碼 2 3 4 2 3 5 5 5 4 6 5 2 ? 偶數(shù)位 3 + 2 + 5 + 5 + 6 + 2 奇數(shù)位 2 + 4 + 3 + 5 + 4 + 5 步驟1:3+2+5+5+6+2=23 步驟2:23*3=69 步驟3:2+4+3+5+4+5=23 步驟4:69+23=92 步驟5:10-2=8 步驟6:校驗(yàn)碼為 8 數(shù)據(jù)碼 校驗(yàn)碼 代碼位置序號(hào) 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 數(shù)字碼 2 0 0 0 0 0 5 0 0 2 2 0 0 0 1 4 7 ? 偶數(shù)位 2 + 0 + 0 + 5 + 0 + 2 + 0 + 1 + 7 奇數(shù)位 0 + 0 + 0 + 0 + 2 + 0 + 0 + 4 步驟1:2+0+0+5+0+2+0+1+7=17 步驟2:17*3=51 步驟3:0+0+0+0+2+0+0+4=6 步驟4:51+6=57 步驟5:10-7=3 步驟6:校驗(yàn)碼為 3 */ /// <summary> /// EAN碼校驗(yàn)位的計(jì)算 /// </summary> /// <param name="szCode"></param> /// <returns></returns> private bool GetVerifyBit(ref string szCode) { int nNum1 = 0; int nNum2 = 0; int nNum3 = 0; int szLen = 0; if ( szCode == null ) return false; szLen = szCode.Length; if(szLen <=12 || szLen >= 17) return true; for ( int i=0; i<szLen; i++) { if ( i%2 == 0 ) { nNum2 += int.Parse(szCode[i].ToString()); //偶數(shù) } else { nNum1 += int.Parse(szCode[i].ToString()); //奇數(shù) } } nNum3 = (Operator.DiscountLabelBarLength % 2 ==0) ? nNum1 + nNum2 * 3 : nNum1 * 3 + nNum2 ; int t ; if(nNum3%10>0) t= 10- (nNum3 % 10) ; else t=0; szCode+=t; return true } /// <summary> /// EAN碼校驗(yàn)位的計(jì)算 /// </summary> /// <param name="szCode"></param> /// <returns></returns> private bool GetVerifyBit(ref string szCode) { int nNum1 = 0; int nNum2 = 0; int nNum3 = 0; int szLen = 0; if ( szCode == null ) return false; szLen = szCode.Length; if(szLen <=12 || szLen >= 17) return true; for ( int i=0; i<szLen; i++) { if ( i%2 == 0 ) { nNum2 += int.Parse(szCode[i].ToString()); //偶數(shù) } else { nNum1 += int.Parse(szCode[i].ToString()); //奇數(shù) } } nNum3 = (Operator.DiscountLabelBarLength % 2 ==0) ? nNum1 + nNum2 * 3 : nNum1 * 3 + nNum2 ; int t ; if(nNum3%10>0) t= 10- (nNum3 % 10) ; else t=0; szCode+=t; return true }