久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

條形碼編碼之Code128、EAN128

作者:huqin   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年11月22日   【字體:

 Code128碼于1981年推出,是一種長度可變、連續(xù)性的字母數(shù)字條碼。與其他一維條碼比較起來,相對較為復(fù)雜,支持的字元也相對較多,又有不同的編碼方式可供交互運(yùn)用,因此其應(yīng)用彈性也較大。

Code128特性

1、具有A、B、C三種不同的編碼類型,可提供標(biāo)準(zhǔn)ASCII中128個(gè)字元的編碼使用;

2、允許雙向掃描;

3、可自行決定是否加上檢驗(yàn)位;

4、條碼長度可調(diào),但包括開始位和結(jié)束位在內(nèi),不可超過232個(gè)字元;

5、同一個(gè)128碼,可以由A、B、C三種不同編碼規(guī)則互換,既可擴(kuò)大字元選擇的范圍,也可縮短編碼的長度。

Code128各編碼方式的編碼范圍

1、Code128A:標(biāo)準(zhǔn)數(shù)字和字母,控制符,特殊字符;

2、Code128B:標(biāo)準(zhǔn)數(shù)字和字母,小寫字母,特殊字符;

3、Code128C/EAN128:[00]-[99]的數(shù)字對集合,共100個(gè),即只能表示偶數(shù)位長度的數(shù)字。

Code128編碼規(guī)則:開始位 + [FNC1(為EAN128碼時(shí)加)] + 數(shù)據(jù)位 + 檢驗(yàn)位 + 結(jié)束位

Code128檢驗(yàn)位計(jì)算:(開始位對應(yīng)的ID值 + 每位數(shù)據(jù)在整個(gè)數(shù)據(jù)中的位置×每位數(shù)據(jù)對應(yīng)的ID值)% 103

Code128編碼表

 

ID Code128A Code128B Code128C BandCode 編碼值
0 SP  SP 0 212222 bbsbbssbbss
1 ! ! 1 222122 bbssbbsbbss
2 " " 2 222221 bbssbbssbbs
3 # # 3 121223 bssbssbbsss
4 $ $ 4 121322 bssbsssbbss
5 % % 5 131222 bsssbssbbss
6 & & 6 122213 bssbbssbsss
7 ' ' 7 122312 bssbbsssbss
8 ( ( 8 132212 bsssbbssbss
9 ) ) 9 221213 bbssbssbsss
10 * * 10 221312 bbssbsssbss
11 + + 11 231212 bbsssbssbss
12 , , 12 112232 bsbbssbbbss
13 - - 13 122132 bssbbsbbbss
14 . . 14 122231 bssbbssbbbs
15 / / 15 113222 bsbbbssbbss
16 0 0 16 123122 bssbbbsbbss
17 1 1 17 123221 bssbbbssbbs
18 2 2 18 223211 bbssbbbssbs
19 3 3 19 221132 bbssbsbbbss
20 4 4 20 221231 bbssbssbbbs
21 5 5 21 213212 bbsbbbssbss
22 6 6 22 223112 bbssbbbsbss
23 7 7 23 312131 bbbsbbsbbbs
24 8 8 24 311222 bbbsbssbbss
25 9 9 25 321122 bbbssbsbbss
26 : : 26 321221 bbbssbssbbs
27 ; ; 27 312212 bbbsbbssbss
28 < < 28 322112 bbbssbbsbss
29 = = 29 322211 bbbssbbssbs
30 > > 30 212123 bbsbbsbbsss
31 ? ? 31 212321 bbsbbsssbbs
32 @ @ 32 232121 bbsssbbsbbs
33 A A 33 111323 bsbsssbbsss
34 B B 34 131123 bsssbsbbsss
35 C C 35 131321 bsssbsssbbs
36 D D 36 112313 bsbbsssbsss
37 E E 37 132113 bsssbbsbsss
38 F F 38 132311 bsssbbsssbs
39 G G 39 211313 bbsbsssbsss
40 H H 40 231113 bbsssbsbsss
41 I I 41 231311 bbsssbsssbs
42 J J 42 112133 bsbbsbbbsss
43 K K 43 112331 bsbbsssbbbs
44 L L 44 132131 bsssbbsbbbs
45 M M 45 113123 bsbbbsbbsss
46 N N 46 113321 bsbbbsssbbs
47 O O 47 133121 bsssbbbsbbs
48 P P 48 313121 bbbsbbbsbbs
49 Q Q 49 211331 bbsbsssbbbs
50 R R 50 231131 bbsssbsbbbs
51 S S 51 213113 bbsbbbsbsss
52 T T 52 213311 bbsbbbsssbs
53 U U 53 213131 bbsbbbsbbbs
54 V V 54 311123 bbbsbsbbsss
55 W W 55 311321 bbbsbsssbbs
56 X X 56 331121 bbbsssbsbbs
57 Y Y 57 312113 bbbsbbsbsss
58 Z Z 58 312311 bbbsbbsssbs
59 [ [ 59 332111 bbbsssbbsbs
60 \ \ 60 314111 bbbsbbbbsbs
61 ] ] 61 221411 bbssbssssbs
62 ^ ^ 62 431111 bbbbsssbsbs
63 _ _ 63 111224 bsbssbbssss
64 NUL ` 64 111422 bsbssssbbss
65 SOH a 65 121124 bssbsbbssss
66 STX b 66 121421 bssbssssbbs
67 ETX c 67 141122 bssssbsbbss
68 EOT d 68 141221 bssssbssbbs
69 ENQ e 69 112214 bsbbssbssss
70 ACK f 70 112412 bsbbssssbss
71 BEL g 71 122114 bssbbsbssss
72 BS h 72 122411 bssbbssssbs
73 HT i 73 142112 bssssbbsbss
74 LF j 74 142211 bssssbbssbs
75 VT k 75 241211 bbssssbssbs
76 FF I 76 221114 bbssbsbssss
77 CR m 77 413111 bbbbsbbbsbs
78 SO n 78 241112 bbssssbsbss
79 SI o 79 134111 bsssbbbbsbs
80 DLE p 80 111242 bsbssbbbbss
81 DC1 q 81 121142 bssbsbbbbss
82 DC2 r 82 121241 bssbssbbbbs
83 DC3 s 83 114212 bsbbbbssbss
84 DC4 t 84 124112 bssbbbbsbss
85 NAK u 85 124211 bssbbbbssbs
86 SYN v 86 411212 bbbbsbssbss
87 ETB w 87 421112 bbbbssbsbss
88 CAN x 88 421211 bbbbssbssbs
89 EM y 89 212141 bbsbbsbbbbs
90 SUB z 90 214121 bbsbbbbsbbs
91 ESC { 91 412121 bbbbsbbsbbs
92 FS | 92 111143 bsbsbbbbsss
93 GS } 93 111341 bsbsssbbbbs
94 RS ~ 94 131141 bsssbsbbbbs
95 US DEL 95 114113 bsbbbbsbsss
96 FNC3 FNC3 96 114311 bsbbbbsssbs
97 FNC2 FNC2 97 411113 bbbbsbsbsss
98 SHIFT SHIFT 98 411311 bbbbsbsssbs
99 CODEC CODEC 99 113141 bsbbbsbbbbs
100 CODEB FNC4 CODEB 114131 bsbbbbsbbbs
101 FNC4 CODEA CODEA 311141 bbbsbsbbbbs
102 FNC1 FNC1 FNC1 411131 bbbbsbsbbbs
103 StartA StartA StartA 211412 bbsbssssbss
104 StartB StartB StartB 211214 bbsbssbssss
105 StartC StartC StartC 211232 bbsbssbbbss
106 Stop Stop Stop 2331112 bbsssbbbsbsbb




Code128編碼示例
:以 95270078 為例

Code128A, 開始位對應(yīng)的ID為103,第1位數(shù)據(jù)9對應(yīng)的ID為25,第2位數(shù)據(jù)5對應(yīng)的ID為21,依此類推,可以計(jì)算檢驗(yàn)位 = (103 + 1*25 + 2*21 + 3*18 + 4*23 + 5*16 + 6*16 + 7*23 + 8*24) % 103 = 21,即檢驗(yàn)位的ID為21。

對照編碼表,95270078 編碼表示為:開始位StartA(bbsbssssbss)+ 數(shù)據(jù)位[9(bbbssbsbbss)+  5(bbsbbbssbss)+ 2(bbssbbbssbs)+ 7(bbbsbbsbbbs)+  0(bssbbbsbbss)+ 0(bssbbbsbbss)+  7(bbbsbbsbbbs)+ 8(bbbsbssbbss)]+  檢驗(yàn)位21(bbsbbbssbss)+  結(jié)束位Stop(bbsssbbbsbsbb), 即:bbsbssssbssbbbssbsbbssbbsbbbssbssbbssbbbssbsbbbsbbsbbbsbssbbbsbbssbssbbbsbbssbbbsbbsbbbsbbbsbssbbssbbsbbbssbssbbsssbbbsbsbb。 若要打印,只需將b用黑色線標(biāo)出,s用白色線標(biāo)出,一個(gè)簡單的條形碼生成程序就完成了!

128B 與128A類似,128C只能對長度為偶數(shù)的數(shù)字串編碼,每兩個(gè)數(shù)字為一位,所以輸出的信息壓縮了一半,打印的條形碼因此也就較短。接上例,第1位數(shù)據(jù) 95對應(yīng)ID為95,第2位數(shù)據(jù)27對應(yīng)ID為27,第3位數(shù)據(jù)00對應(yīng)ID為0,第4位數(shù)據(jù)78對應(yīng)ID為78,所以檢驗(yàn)位 = (105 + 1*95 + 2*27 + 3*0 + 4*78) % 103 = 51

EAN128與Code128C相同,只是在開始位后加多一個(gè)控制位FNC1(ID為102),同時(shí)將FNC1做為第1位數(shù)據(jù)加入到檢驗(yàn)位的計(jì)算。

各種方式的編碼結(jié)果羅列如下:

 

 編碼方式  開始位  FNC1  數(shù)據(jù)位  檢驗(yàn)位  結(jié)束位  編碼結(jié)果
 Code128A  StartA  無  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 = 21  Stop  bbsbssssbssbbbssbsbbssbbsbbbssbssbbssbbbssbsbbbsbbsbbbsbssbbbsbbssbssbbbsbbssbbbsbbsbbbsbbbsbssbbssbbsbbbssbssbbsssbbbsbsbb
 Code128B  StartB  無  9 + 5 + 2 + 7 + 0 + 0 + 7 + 8  (104 + 1*25 + 2*21 + 3*18 + 4*23 + 5*16 + 6*16 + 7*23 + 8*24) % 103 = 22  Stop  bbsbssbssssbbbssbsbbssbbsbbbssbssbbssbbbssbsbbbsbbsbbbsbssbbbsbbssbssbbbsbbssbbbsbbsbbbsbbbsbssbbssbbssbbbsbssbbsssbbbsbsbb
 Code128C  StartC  無  95 + 27 + 00 + 78  (105 + 1*95 + 2*27 + 3*0 + 4*78) % 103 = 51  Stop  bbsbssbbbssbsbbbbsbsssbbbsbbssbssbbsbbssbbssbbssssbsbssbbsbbbsbsssbbsssbbbsbsbb
 EAN128  StartC  FNC1  95 + 27 + 00 + 78  (105 + 1*102 + 2*95 + 3*27 + 4*0 + 5*78) % 103 = 44  Stop  bbsbssbbbssbbbbsbsbbbsbsbbbbsbsssbbbsbbssbssbbsbbssbbssbbssssbsbssbsssbbsbbbsbbsssbbbsbsbb

 

 

Code 128 條碼

Code 128 編碼方式是屬於比較複雜的一種條碼,應(yīng)用起來比較有彈性,在1981年開始流行起來。

Code 128 條碼主要特性有:

1.有A,B,C三種不同的編碼型態(tài),可以提供128個(gè)標(biāo)準(zhǔn)的ASCII code字元.

   包括: 0~9的數(shù)字,英文大小寫,各種特殊符號,以及控制碼。

2.有一檢查碼,可自由決定是否要列印。

3.在可藉由A、B、C三種不同編碼型態(tài)交叉使用,以縮短條碼的長度。

4.可允許由左至右,或由右至左,雙向掃瞄。


Code 128 條碼基本結(jié)構(gòu)

圖一

Code 128 條碼內(nèi)容主要有四個(gè)部份:

1.起始碼 (start code)

2.資料碼 (data code)

3.結(jié)束碼 (end code)

4.檢查碼 (check code):可有可無


Code 128 條碼字元編碼方式

Code 128 每一字元條碼結(jié)構(gòu)由3條Bar及3條Space所組成.又細(xì)分為11等分,組成不同粗細(xì)比。字元最粗的線條最高可達(dá)最細(xì)的4倍。

例如:起始碼Code A

11010000100       條碼裡頭space最粗是最細(xì)線條的4倍

再舉個(gè)例子,我們以B型態(tài)中的特殊符號'/'說明

10111001100      最粗的bar是最細(xì)bar的3倍


起始碼與結(jié)束碼編碼方式

Code 128 條碼有A、B、C三種不同型態(tài)編碼的字元表,要選擇哪一種字元表取決於特殊控制碼Code A,Code B與Code C。

起始碼也有三種編碼型態(tài):Code A,Code B,Code C

當(dāng)起始碼為Code A時(shí),後面的條碼資料則選擇A型態(tài)字元表編碼邏輯。

而起始碼為Code B時(shí),後面的條碼資料則選擇B型態(tài)字元表編碼邏輯。

若全部為數(shù)字時(shí)可選擇Code C型態(tài)字元表編碼邏輯,以縮短條碼的列印長度。

每一類型的字元表內(nèi)也有Code A,Code B,Code C,但條碼編碼邏輯與起始碼不同,請參閱【Code 128 條碼字元表】

接下來我們看三種起始碼的條碼編碼方式

Code A條碼資料為11010000100,條碼圖案為 ,相對值為103。

Code B條碼資料為11010010000,條碼圖案為 ,相對值為104。

Code C條碼資料為11010011100,條碼圖案為 ,相對值為105。

結(jié)束碼編碼方式

A,B,C三種不同型態(tài)編碼方式,結(jié)束碼均固定為1100011101011,條碼圖案為,相對值為106。


Code 128 條碼三種字元表型態(tài)編碼差異說明

1.A 型態(tài)字元表,支援的資料碼包含:標(biāo)準(zhǔn)ASCII=0 ~ ASCII=95等字元及控制碼部份,以及7個(gè)Code 128 條碼專屬字元,共計(jì)103個(gè)字元,請參閱code 128 條碼字元表中的A型態(tài)。(ASCII=0~31為控制碼,ASCII=32~95為可見字元。)

2.B型態(tài)字元表包含:標(biāo)準(zhǔn)ASCII=32 ~ ASCII=127等字元,以及7個(gè)Code 128 條碼專屬字元,共計(jì)103個(gè)字元,請參閱code 128 條碼字元表中的B型態(tài)。

3.C型態(tài)字元表主要支援?dāng)?shù)字00~99的編碼使用,若使用長數(shù)字的資料時(shí),可以用C型態(tài)編碼,可縮短條碼列印的長度。數(shù)字00~99加上3個(gè)特殊控制字元,總共103個(gè)字元。

特殊控制字元說明

1.Code A:表示後面的字元編碼型態(tài)要使用A table。

2.Code B:表示後面的字元編碼型態(tài)要使用B table。

3.Code C:表示後面的字元編碼型態(tài)要使用C table。

4.Shift:等於Shift鍵的作用。

5.FNC 1:等於F1鍵的作用。

6.FNC 2:等於F2鍵的作用。

7.FNC 3:等於F3鍵的作用。

8.FNC 3:等於F4鍵的作用。


Code 128 條碼應(yīng)用實(shí)例說明

1.Code C型態(tài)應(yīng)用時(shí)機(jī)

我們舉以下例子,如果資料內(nèi)如為數(shù)字0123456789,使用Code A及Code C條碼列印長度的差異,Code C條碼列印出來的長度較短。

Code A型態(tài)時(shí)的編碼如下圖

 

 

Code C型態(tài)時(shí)的編碼如下圖

 

 

2.Code A及Code C型態(tài)混合應(yīng)用時(shí)機(jī)

 

前面4個(gè)字元ABCB使用A table編碼,所以起始碼以Code A開始,然後在數(shù)字0123456789之前加上Code C特殊控制碼,則後面的數(shù)字會(huì)轉(zhuǎn)換成C table編碼,如此就可以縮短條碼列印的長度。


Code 128 條碼檢查碼的計(jì)算方式

我們以起始碼Code B編碼的Andy’s條碼來說明

 

步驟一.計(jì)算出S值

S=103+(d1*1)+(d2*2)+ (d3*3)+ (d4*4)+ …

d1:表示資料第1個(gè)字元

因?yàn)槠鹗即a為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,取其餘數(shù)M值。

1385/103=13…46 ?取餘數(shù)M=46

步驟三.將M值46代入B table找到相對值的字元為N,即檢查碼為N。

提醒:

若資料碼裡有Code A,Code B,Code C型態(tài)轉(zhuǎn)換,檢查碼代入的依據(jù)均以起始碼相對應(yīng)的字元組型態(tài)為主。

起始符(Unicode=00CC):ì

終止符(Unicode=00CE):Î

value95(Unicode=00C3):Ã

value96(Unicode=00C4):Ä

value97(Unicode=00C5):Å

value98(Unicode=00C6):Æ

value99(Unicode=00C7):Ç

value100(Unicode=00C8):è

value101(Unicode=00C9):é

value102(Unicode=00CA):ê
 
尼瑪,找這些確定那個(gè)起始符,終止符的ID105,106對應(yīng)的編碼含義找了半天,一開始對應(yīng)ASCII碼表查,怎么都不對

關(guān)閉窗口
主站蜘蛛池模板: 一区二区三区在线免费观看 | 亚洲日本免费 | 国产精品欧美一区二区 | 国产精品福利在线观看 | 欧美一区二区视频 | 中文字幕一区二区三区四区五区 | 在线播放中文字幕 | 在线观看日本高清二区 | 久久四虎 | 午夜视频导航 | 高清视频一区 | 亚洲精品99| 国产视频久久久 | 小川阿佐美pgd-606在线 | 日韩精品无码一区二区三区 | 99在线播放 | 超碰天天| 99re6在线视频精品免费 | 一级美国黄色片 | 天堂中文资源在线 | 欧美日韩国产中文字幕 | jav成人av免费播放 | 又爽又黄axxx片免费观看 | 中文字幕一区二区三区四区 | 在线黄色网| 国产午夜精品久久久 | 亚洲人成人一区二区在线观看 | 成人精品一区二区三区中文字幕 | 亚洲综合二区 | 亚洲一二三区不卡 | 欧美三级电影在线播放 | 国产7777| 国产免费一区二区 | 久久性色| 欧美一区二区三区一在线观看 | 农夫在线精品视频免费观看 | 一区二区三区日本 | 亚洲国产成人久久综合一区,久久久国产99 | 欧美久操网 | 精品在线观看入口 | 在线色网 |