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

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

條形碼編碼之Code128、EAN128

作者:huqin   來源:本站原創   點擊數:  更新時間:2014年11月22日   【字體:

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

Code128特性

1、具有A、B、C三種不同的編碼類型,可提供標準ASCII中128個字元的編碼使用;

2、允許雙向掃描;

3、可自行決定是否加上檢驗位;

4、條碼長度可調,但包括開始位和結束位在內,不可超過232個字元;

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

Code128各編碼方式的編碼范圍

1、Code128A:標準數字和字母,控制符,特殊字符;

2、Code128B:標準數字和字母,小寫字母,特殊字符;

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

Code128編碼規則:開始位 + [FNC1(為EAN128碼時加)] + 數據位 + 檢驗位 + 結束位

Code128檢驗位計算:(開始位對應的ID值 + 每位數據在整個數據中的位置×每位數據對應的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, 開始位對應的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(bbsbbbssbss)+ 2(bbssbbbssbs)+ 7(bbbsbbsbbbs)+  0(bssbbbsbbss)+ 0(bssbbbsbbss)+  7(bbbsbbsbbbs)+ 8(bbbsbssbbss)]+  檢驗位21(bbsbbbssbss)+  結束位Stop(bbsssbbbsbsbb), 即:bbsbssssbssbbbssbsbbssbbsbbbssbssbbssbbbssbsbbbsbbsbbbsbssbbbsbbssbssbbbsbbssbbbsbbsbbbsbbbsbssbbssbbsbbbssbssbbsssbbbsbsbb。 若要打印,只需將b用黑色線標出,s用白色線標出,一個簡單的條形碼生成程序就完成了!

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 = 51

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

各種方式的編碼結果羅列如下:

 

 編碼方式  開始位  FNC1  數據位  檢驗位  結束位  編碼結果
 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 編碼方式是屬於比較複雜的一種條碼,應用起來比較有彈性,在1981年開始流行起來。

Code 128 條碼主要特性有:

1.有A,B,C三種不同的編碼型態,可以提供128個標準的ASCII code字元.

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

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所組成.又細分為11等分,組成不同粗細比。字元最粗的線條最高可達最細的4倍。

例如:起始碼Code A

11010000100       條碼裡頭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型態字元表編碼邏輯。

若全部為數字時可選擇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 128 條碼三種字元表型態編碼差異說明

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

2.B型態字元表包含:標準ASCII=32 ~ ASCII=127等字元,以及7個Code 128 條碼專屬字元,共計103個字元,請參閱code 128 條碼字元表中的B型態。

3.C型態字元表主要支援數字00~99的編碼使用,若使用長數字的資料時,可以用C型態編碼,可縮短條碼列印的長度。數字00~99加上3個特殊控制字元,總共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條碼列印出來的長度較短。

Code A型態時的編碼如下圖

 

 

Code C型態時的編碼如下圖

 

 

2.Code A及Code C型態混合應用時機

 

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


Code 128 條碼檢查碼的計算方式

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

 

步驟一.計算出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=13…46 ?取餘數M=46

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

提醒:

若資料碼裡有Code A,Code B,Code C型態轉換,檢查碼代入的依據均以起始碼相對應的字元組型態為主。

起始符(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):ê
 
尼瑪,找這些確定那個起始符,終止符的ID105,106對應的編碼含義找了半天,一開始對應ASCII碼表查,怎么都不對

關閉窗口
主站蜘蛛池模板: 国产色网 | 日韩成人免费视频 | 亚洲高清在线视频 | 久青草影院 | 欧美午夜精品理论片a级按摩 | 亚洲欧美在线视频 | 日韩欧美在线视频播放 | 日韩欧美国产精品综合嫩v 一区中文字幕 | 91九色网站 | 久久久久国产精品午夜一区 | 欧美成人免费在线视频 | 网站一区二区三区 | 亚洲精品二区 | 国产精品视频一 | 超碰综合| 国产成人精品久久二区二区91 | 一级免费毛片 | 亚洲欧洲国产视频 | 精品久久久久久久久久久久久久 | www.精品一区 | 黄色毛片免费看 | 99综合| 日韩不卡在线 | av天天干 | 中国一级毛片免费 | 久久精品欧美电影 | 久久久久久国产精品 | 在线免费观看毛片 | 91看国产 | 伊人精品在线视频 | 精品免费视频 | 国产一区二区三区在线 | 综合天天久久 | 一级视频在线免费观看 | 中文字幕视频在线观看 | 视频在线日韩 | 国产网站在线免费观看 | 欧美精品乱码久久久久久按摩 | 亚洲品质自拍视频网站 | 国产成人免费视频网站高清观看视频 | 亚洲精品视频久久 |