Kod 128

Przykład kodu Code 128-B

Kod 128 (code128) – alfanumeryczny jednowymiarowy kod kreskowy wysokiej rozdzielczości. Został stworzony do zakodowania 128 znaków ASCII, do kodowania używa się kreski i przerwy o czterech możliwych szerokościach, co czyni go zwartym kodem.

Kod 128 może być skanowany w każdym kierunku i nie ma ograniczeń co do długości samego kodu.

Każdy znak Kodu 128 składa się z 11 czarnych i białych modułów (wykorzystuje zatem 11 bitów), wyjątkiem jest znak Stop, który składa się z 13 modułów. 11 modułów musi tworzyć następujący schemat – Pasek Przerwa Pasek Przerwa Pasek Przerwa o długości od 1 do 4 modułów każdy (11 bitów daje 2048 możliwości, z czego 216 jest możliwych do wykorzystania – Code 128 wykorzystuje tylko 107)

Przykład: znak a = 10010110000 > (1)x1 (2)x0 (1)x1 (1)x0 (2)x1 (4)x0  >  1 2 1 1 2 4

Nie licząc znaku STOP, mamy do dyspozycji 106 kombinacji czarnych i białych modułów. Każda z tych kombinacji może być wykorzystana do określenia znaku w jednym z trzech zestawów znaków (Code Set A, B i C). Wybór konkretnego zestawu dokonujemy poprzez użycie odpowiedniego znaku startowego (START A – 103, START B – 104, START C – 105). Mamy również do dyspozycji specjalne znaki CODE i SHIFT. Pozwalają one na zmianę zestawu znaków w trakcie skanowania (CODE zmienia zestaw od danego momentu, SHIFT tylko dla następnego znaku). W zestawie znaków znajdują się także znaki funkcyjne (FNC) – FNC1 określa np. standard GS1-128.

Każdy znak ma wartość od 0 do 105, wartość ta jest wykorzystywana do obliczenia znaku kontrolnego.

Obliczanie znaku kontrolnego

Znak kontrolny jest resztą z dzielenia sumy znaku start i iloczynów wartości znaków i ich pozycji przez 103 (liczbę znaków możliwych do wykorzystania jako znak kontrolny). Dla tekstu Code 128 wygląda to następująco:

                              Wartość		    Suma
			      =====                 =====
             Start Code B      104                   104
Pozycja 1              C       35         1 x 35 =    35
Pozycja 2              o       79         2 x 79 =   158
Pozycja 3              d       68         3 x 68 =   204
Pozycja 4              e       69         4 x 69 =   276
Pozycja 5                       0         5 x  0 =     0
Pozycja 6              1       17         6 x 17 =   102
Pozycja 7              2       18         7 x 18 =   126
Pozycja 8              8       24         8 x 24 =   192
                                                    =====
                                                    1197
                                                    =====
             1197 mod 103 = 64

Znakiem kontrolnym jest znak z wartością 64 – jest to w tym przypadku `

Tablica znaków Kodu 128

War   Code A   Code B   Code C     Paski/
tość                                   Przerwy
 0    spacja   spacja     00       2 1 2 2 2 2
 1     !        !         01       2 2 2 1 2 2
 2     "        "         02       2 2 2 2 2 1
 3     #        #         03       1 2 1 2 2 3
 4     $        $         04       1 2 1 3 2 2
 5     %        %         05       1 3 1 2 2 2
 6     &        &         06       1 2 2 2 1 3
 7     '        '         07       1 2 2 3 1 2
 8     (        (         08       1 3 2 2 1 2
 9     )        )         09       2 2 1 2 1 3
 10    *        *         10       2 2 1 3 1 2
 11    +        +         11       2 3 1 2 1 2
 12    ,        ,         12       1 1 2 2 3 2
 13    -        -         13       1 2 2 1 3 2
 14    .        .         14       1 2 2 2 3 1
 15    /        /         15       1 1 3 2 2 2
 16    0        0         16       1 2 3 1 2 2
 17    1        1         17       1 2 3 2 2 1
 18    2        2         18       2 2 3 2 1 1
 19    3        3         19       2 2 1 1 3 2
 20    4        4         20       2 2 1 2 3 1
 21    5        5         21       2 1 3 2 1 2
 22    6        6         22       2 2 3 1 1 2
 23    7        7         23       3 1 2 1 3 1
 24    8        8         24       3 1 1 2 2 2
 25    9        9         25       3 2 1 1 2 2
 26    :        :         26       3 2 1 2 2 1
 27    ;        ;         27       3 1 2 2 1 2
 28    <        <         28       3 2 2 1 1 2
 29    =        =         29       3 2 2 2 1 1
 30    >        >         30       2 1 2 1 2 3
 31    ?        ?         31       2 1 2 3 2 1
 32    @        @         32       2 3 2 1 2 1
 33    A        A         33       1 1 1 3 2 3
 34    B        B         34       1 3 1 1 2 3
 35    C        C         35       1 3 1 3 2 1
 36    D        D         36       1 1 2 3 1 3
 37    E        E         37       1 3 2 1 1 3
 38    F        F         38       1 3 2 3 1 1
 39    G        G         39       2 1 1 3 1 3
 40    H        H         40       2 3 1 1 1 3
 41    I        I         41       2 3 1 3 1 1
 42    J        J         42       1 1 2 1 3 3
 43    K        K         43       1 1 2 3 3 1
 44    L        L         44       1 3 2 1 3 1
 45    M        M         45       1 1 3 1 2 3
 46    N        N         46       1 1 3 3 2 1
 47    O        O         47       1 3 3 1 2 1
 48    P        P         48       3 1 3 1 2 1
 49    Q        Q         49       2 1 1 3 3 1
 50    R        R         50       2 3 1 1 3 1
 51    S        S         51       2 1 3 1 1 3
 52    T        T         52       2 1 3 3 1 1
 53    U        U         53       2 1 3 1 3 1
 54    V        V         54       3 1 1 1 2 3
 55    W        W         55       3 1 1 3 2 1
 56    X        X         56       3 3 1 1 2 1
 57    Y        Y         57       3 1 2 1 1 3
 58    Z        Z         58       3 1 2 3 1 1
 59    [        [         59       3 3 2 1 1 1
 60    \        \         60       3 1 4 1 1 1
 61    ]        ]         61       2 2 1 4 1 1
 62    ^        ^         62       4 3 1 1 1 1
 63    _        _         63       1 1 1 2 2 4
 64    NUL      `         64       1 1 1 4 2 2
 65    SOH      a         65       1 2 1 1 2 4
 66    STX      b         66       1 2 1 4 2 1
 67    ETX      c         67       1 4 1 1 2 2
 68    EOT      d         68       1 4 1 2 2 1
 69    ENQ      e         69       1 1 2 2 1 4
 70    ACK      f         70       1 1 2 4 1 2
 71    BEL      g         71       1 2 2 1 1 4
 72    BS       h         72       1 2 2 4 1 1
 73    HT       i         73       1 4 2 1 1 2
 74    LF       j         74       1 4 2 2 1 1
 75    VT       k         75       2 4 1 2 1 1
 76    FF       l         76       2 2 1 1 1 4
 77    CR       m         77       4 1 3 1 1 1
 78    SO       n         78       2 4 1 1 1 2
 79    SI       o         79       1 3 4 1 1 1
 80    DLE      p         80       1 1 1 2 4 2
 81    DC1      q         81       1 2 1 1 4 2
 82    DC2      r         82       1 2 1 2 4 1
 83    DC3      s         83       1 1 4 2 1 2
 84    DC4      t         84       1 2 4 1 1 2
 85    NAK      u         85       1 2 4 2 1 1
 86    SYN      v         86       4 1 1 2 1 2
 87    ETB      w         87       4 2 1 1 1 2
 88    CAN      x         88       4 2 1 2 1 1
 89    EM       y         89       2 1 2 1 4 1
 90    SUB      z         90       2 1 4 1 2 1
 91    ESC      {         91       4 1 2 1 2 1
 92    FS       |         92       1 1 1 1 4 3
 93    GS       }         93       1 1 1 3 4 1
 94    RS       ~         94       1 3 1 1 4 1
 95    US       DEL       95       1 1 4 1 1 3
 96    FNC 3    FNC 3     96       1 1 4 3 1 1
 97    FNC 2    FNC 2     97       4 1 1 1 1 3
 98    SHIFT    SHIFT     98       4 1 1 3 1 1
 99    CODE C   CODE C    99       1 1 3 1 4 1
 100   CODE B   FNC 4     CODE B   1 1 4 1 3 1
 101   FNC 4    CODE A    CODE A   3 1 1 1 4 1
 102   FNC 1    FNC 1     FNC 1    4 1 1 1 3 1
 103   Start A  Start A   Start A  2 1 1 4 1 2
 104   Start B  Start B   Start B  2 1 1 2 1 4
 105   Start C  Start C   Start C  2 1 1 2 3 2
 106   Stop     Stop      Stop     2 3 3 1 1 1 2

Zapis

2 1 1 2 3 2

dla kodu START C oznacza po kolei:

czarny pasek o szer. 2, biały pasek o szer. 1, czarny pasek o szer. 1, biały pasek o szer. 2, czarny pasek o szer. 3, biały pasek o szer. 2,

Bibliografia

Linki zewnętrzne

Media użyte na tej stronie

Code 128B-2009-06-02.svg
Wikipedia encoded as a Code 128B barcode, created in Inkscape