<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> 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碼表查,怎么都不對

        關閉窗口
        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮