1、Code128编码Code128码于1981年推出,是一种长度可变、连续性的字母数字条码。与其他一维条码比较起来,相对较为复杂,支持的字元也相对较多,又有不同的编码方式可供交互运用,因此其应用弹性也较大。Code128特性:1、具有A、B、C三种不同的编码类型,可提供标准ASCII中128个字元的编码使用;2、允许双向扫描;3、可自行决定是否加上检验位;4、条码长度可调,但包括开始位和结束位在内,不可超过232个字元;5、同一个128码,可以由A、B、C三种不同编码规则互换,既可扩大字元选择的范围,也可缩短编码的长度。Code128各编码方式的编码范围:1、Code128A:标准数字和字母,控
2、制符,特殊字符;2、Code128B:标准数字和字母,小写字母,特殊字符;3、Code128C/EAN128:00-99的数字对集合,共100个,即只能表示偶数位长度的数字。Code128编码规则:开始位 FNC1(为EAN128码时加) 数据位 检验位 结束位Code128检验位计算:(开始位对应的ID值 每位数据在整个数据中的位置每位数据对应的ID值)% 103Code128编码表:IDCode128ACode128BCode128CBandCode编码值0SPSP0212222bbsbbssbbss1!1222122bbssbbsbbss22222221bbssbbssbbs3#3121
3、223bssbssbbsss4$4121322bssbsssbbss5%5131222bsssbssbbss6&6122213bssbbssbsss77122312bssbbsssbss8(8132212bsssbbssbss9)9221213bbssbssbsss10*10221312bbssbsssbss11+11231212bbsssbssbss12,12112232bsbbssbbbss13-13122132bssbbsbbbss14.14122231bssbbssbbbs15/15113222bsbbbssbbss160016123122bssbbbsbbss171117123221
4、bssbbbssbbs182218223211bbssbbbssbs193319221132bbssbsbbbss204420221231bbssbssbbbs215521213212bbsbbbssbss226622223112bbssbbbsbss237723312131bbbsbbsbbbs248824311222bbbsbssbbss259925321122bbbssbsbbss26:26321221bbbssbssbbs27;27312212bbbsbbssbss2830212123bbsbbsbbsss31?31212321bbsbbsssbbs3232232121bbsssbbs
5、bbs33AA33111323bsbsssbbsss34BB34131123bsssbsbbsss35CC35131321bsssbsssbbs36DD36112313bsbbsssbsss37EE37132113bsssbbsbsss38FF38132311bsssbbsssbs39GG39211313bbsbsssbsss40HH40231113bbsssbsbsss41II41231311bbsssbsssbs42JJ42112133bsbbsbbbsss43KK43112331bsbbsssbbbs44LL44132131bsssbbsbbbs45MM45113123bsbbbsbbs
6、ss46NN46113321bsbbbsssbbs47OO47133121bsssbbbsbbs48PP48313121bbbsbbbsbbs49QQ49211331bbsbsssbbbs50RR50231131bbsssbsbbbs51SS51213113bbsbbbsbsss52TT52213311bbsbbbsssbs53UU53213131bbsbbbsbbbs54VV54311123bbbsbsbbsss55WW55311321bbbsbsssbbs56XX56331121bbbsssbsbbs57YY57312113bbbsbbsbsss58ZZ58312311bbbsbbsssb
7、s5959332111bbbsssbbsbs6060314111bbbsbbbbsbs6161221411bbssbssssbs6262431111bbbbsssbsbs63_63111224bsbssbbssss64NUL64111422bsbssssbbss65SOHa65121124bssbsbbssss66STXb66121421bssbssssbbs67ETXc67141122bssssbsbbss68EOTd68141221bssssbssbbs69ENQe69112214bsbbssbssss70ACKf70112412bsbbssssbss71BELg71122114bssbb
8、sbssss72BSh72122411bssbbssssbs73HTi73142112bssssbbsbss74LFj74142211bssssbbssbs75VTk75241211bbssssbssbs76FFI76221114bbssbsbssss77CRm77413111bbbbsbbbsbs78SOn78241112bbssssbsbss79SIo79134111bsssbbbbsbs80DLEp80111242bsbssbbbbss81DC1q81121142bssbsbbbbss82DC2r82121241bssbssbbbbs83DC3s83114212bsbbbbssbss84
9、DC4t84124112bssbbbbsbss85NAKu85124211bssbbbbssbs86SYNv86411212bbbbsbssbss87ETBw87421112bbbbssbsbss88CANx88421211bbbbssbssbs89EMy89212141bbsbbsbbbbs90SUBz90214121bbsbbbbsbbs91ESC91412121bbbbsbbsbbs92FS|92111143bsbsbbbbsss93GS93111341bsbsssbbbbs94RS94131141bsssbsbbbbs95USDEL95114113bsbbbbsbsss96FNC3FN
10、C396114311bsbbbbsssbs97FNC2FNC297411113bbbbsbsbsss98SHIFTSHIFT98411311bbbbsbsssbs99CODECCODEC99113141bsbbbsbbbbs100CODEBFNC4CODEB114131bsbbbbsbbbs101FNC4CODEACODEA311141bbbsbsbbbbs102FNC1FNC1FNC1411131bbbbsbsbbbs103StartAStartAStartA211412bbsbssssbss104StartBStartBStartB211214bbsbssbssss105StartCSta
11、rtCStartC211232bbsbssbbbss106StopStopStop2331112bbsssbbbsbsbbCode128编码示例:以95270078为例Code128A, 开始位对应的ID为103,第1位数据9对应的ID为25,第2位数据5对应的ID为21,依此类推,可以计算检验位 = (103 + 1*25 + 2*21 + 3*18 + 4*23 + 5*16 + 6*16 + 7*23 + 8*24) % 103 = 21,即检验位的ID为21。对照编码表,95270078 编码表示为:开始位StartA(bbsbssssbss) 数据位9(bbbssbsbbss)5(b
12、bsbbbssbss)2(bbssbbbssbs)7(bbbsbbsbbbs)0(bssbbbsbbss)0(bssbbbsbbss)7(bbbsbbsbbbs)8(bbbsbssbbss) 检验位21(bbsbbbssbss) 结束位Stop(bbsssbbbsbsbb), 即:bbsbssssbssbbbssbsbbssbbsbbbssbssbbssbbbssbsbbbsbbsbbbsbssbbbsbbssbssbbbsbbssbbbsbbsbbbsbbbsbssbbssbbsbbbssbssbbsssbbbsbsbb。 若要打印,只需将b用黑色线标出,s用白色线标出,一个简单的条形码生成
13、程序就完成了!128B 与128A类似,128C只能对长度为偶数的数字串编码,每两个数字为一位,所以输出的信息压缩了一半,打印的条形码因此也就较短。接上例,第1位数据 95对应ID为95,第2位数据27对应ID为27,第3位数据00对应ID为0,第4位数据78对应ID为78,所以检验位 = (105 + 1*95 + 2*27 + 3*0 + 4*78) % 103 = 51EAN128与Code128C相同,只是在开始位后加多一个控制位FNC1(ID为102),同时将FNC1做为第1位数据加入到检验位的计算。各种方式的编码结果罗列如下:编码方式开始位FNC1数据位检验位结束位编码结果Code
14、128AStartA无9 + 5 + 2 + 7 + 0 + 0 + 7 + 8(103 + 1*25 + 2*21 + 3*18 + 4*23 + 5*16 + 6*16 + 7*23 + 8*24) % 103 = 21StopbbsbssssbssbbbssbsbbssbbsbbbssbssbbssbbbssbsbbbsbbsbbbsbssbbbsbbssbssbbbsbbssbbbsbbsbbbsbbbsbssbbssbbsbbbssbssbbsssbbbsbsbbCode128BStartB无9 + 5 + 2 + 7 + 0 + 0 + 7 + 8(104 + 1*25 + 2*2
15、1 + 3*18 + 4*23 + 5*16 + 6*16 + 7*23 + 8*24) % 103 = 22StopbbsbssbssssbbbssbsbbssbbsbbbssbssbbssbbbssbsbbbsbbsbbbsbssbbbsbbssbssbbbsbbssbbbsbbsbbbsbbbsbssbbssbbssbbbsbssbbsssbbbsbsbbCode128CStartC无95 + 27 + 00 + 78(105 + 1*95 + 2*27 + 3*0 + 4*78) % 103 = 51Stopbbsbssbbbssbsbbbbsbsssbbbsbbssbssbbsbbs
16、sbbssbbssssbsbssbbsbbbsbsssbbsssbbbsbsbbEAN128StartCFNC195 + 27 + 00 + 78(105 + 1*102 + 2*95 + 3*27 + 4*0 + 5*78) % 103 = 44StopbbsbssbbbssbbbbsbsbbbsbsbbbbsbsssbbbsbbssbssbbsbbssbbssbbssssbsbssbsssbbsbbbsbbsssbbbsbsbbCode 128 條碼Code 128 編碼方式是屬於比較複雜的一種條碼,應用起來比較有彈性,在1981年開始流行起來。Code 128 條碼主要特性有:1.有A,
17、B,C三種不同的編碼型態,可以提供128個標準的ASCII code字元.包括: 09的數字,英文大小寫,各種特殊符號,以及控制碼。2.有一檢查碼,可自由決定是否要列印。3.在可藉由A、B、C三種不同編碼型態交叉使用,以縮短條碼的長度。4.可允許由左至右,或由右至左,雙向掃瞄。Code 128 條碼基本結構圖一Code 128 條碼內容主要有四個部份:1.起始碼 (start code)2.資料碼 (data code)3.結束碼 (end code)4.檢查碼 (check code):可有可無Code 128 條碼字元編碼方式Code 128 每一字元條碼結構由3條Bar及3條Space所
18、組成又細分為11等分,組成不同粗細比。字元最粗的線條最高可達最細的4倍。例如:起始碼Code A11010000100 條碼裡頭space最粗是最細線條的4倍再舉個例子,我們以B型態中的特殊符號/說明10111001100最粗的bar是最細bar的3倍起始碼與結束碼編碼方式Code 128 條碼有A、B、C三種不同型態編碼的字元表,要選擇哪一種字元表取決於特殊控制碼Code A,Code B與Code C。起始碼也有三種編碼型態:Code A,Code B,Code C當起始碼為Code A時,後面的條碼資料則選擇A型態字元表編碼邏輯。而起始碼為Code B時,後面的條碼資料則選擇B型態字元表
19、編碼邏輯。若全部為數字時可選擇Code C型態字元表編碼邏輯,以縮短條碼的列印長度。每一類型的字元表內也有Code A,Code B,Code C,但條碼編碼邏輯與起始碼不同,請參閱【Code 128 條碼字元表】接下來我們看三種起始碼的條碼編碼方式Code A條碼資料為11010000100,條碼圖案為,相對值為103。Code B條碼資料為11010010000,條碼圖案為,相對值為104。Code C條碼資料為11010011100,條碼圖案為,相對值為105。結束碼編碼方式A,B,C三種不同型態編碼方式,結束碼均固定為1100011101011,條碼圖案為,相對值為106。Code 1
20、28 條碼三種字元表型態編碼差異說明1.A 型態字元表,支援的資料碼包含:標準ASCII=0 ASCII=95等字元及控制碼部份,以及7個Code 128 條碼專屬字元,共計103個字元,請參閱code 128 條碼字元表中的A型態。(ASCII=031為控制碼,ASCII=3295為可見字元。)2.B型態字元表包含:標準ASCII=32 ASCII=127等字元,以及7個Code 128 條碼專屬字元,共計103個字元,請參閱code 128 條碼字元表中的B型態。3.C型態字元表主要支援數字0099的編碼使用,若使用長數字的資料時,可以用C型態編碼,可縮短條碼列印的長度。數字0099加上3
21、個特殊控制字元,總共103個字元。特殊控制字元說明1.Code A:表示後面的字元編碼型態要使用A table。2.Code B:表示後面的字元編碼型態要使用B table。3.Code C:表示後面的字元編碼型態要使用C table。4.Shift:等於Shift鍵的作用。5.FNC 1:等於F1鍵的作用。6.FNC 2:等於F2鍵的作用。7.FNC 3:等於F3鍵的作用。8.FNC 3:等於F4鍵的作用。Code 128 條碼應用實例說明1.Code C型態應用時機我們舉以下例子,如果資料內如為數字0123456789,使用Code A及Code C條碼列印長度的差異,Code C條碼列印
22、出來的長度較短。Code A型態時的編碼如下圖Code C型態時的編碼如下圖2.Code A及Code C型態混合應用時機前面4個字元ABCB使用A table編碼,所以起始碼以Code A開始,然後在數字0123456789之前加上Code C特殊控制碼,則後面的數字會轉換成C table編碼,如此就可以縮短條碼列印的長度。Code 128 條碼檢查碼的計算方式我們以起始碼Code B編碼的Andys條碼來說明步驟一.計算出S值S=103+(d1*1)+(d2*2)+ (d3*3)+ (d4*4)+ d1:表示資料第1個字元因為起始碼為Code B,所以字元相對值使用B table。則S=103+(33*1)+(78*2)+(68*3)+(89*4)+(7*5)+(83*6)=103+33+156+204+356+35+498=1385步驟二.將S值除以103,取其餘數M值。1385/103=1346 ?取餘數M=46步驟三.將M值46代入B table找到相對值的字元為N,即檢查碼為N。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1