[ Codice 128 ]
[ 1 ]

4.2.6.1 - CODICE 128

   Il nome Codice 128 deriva dal fatto di potere codificare 128 caratteri ASCII, oltre a quattro caratteri funzionali. Consente inoltre di rappresentare i dati numerici in una forma compatta a doppia densita'.
   Ogni carattere e' costituito da 11 moduli, distribuiti in tre barre e tre spazi (escluso carattere di Stop). Inoltre le barre all'interno di uno stesso carattere sono sempre formate da un numero totale pari di moduli ( parita' pari ); di conseguenza gli spazi occupano un numero dispari di moduli. Gli elementi (barre e spazi) hanno uno spessore multiplo intero (da 1 a 4) del modulo.

   I simboli in codice 128 hanno due autocontrolli che minimizzano la probabilita' di errore in lettura: il self - checking dei caratteri (sulla parita') ed un check digit modulo 103.

   Un simbolo consiste in una sequenza di caratteri delimitata da due zone di overflow. La sequenza comincia con un caratteredi start, seguito da caratteri di dati e speciali (il carattere piu' significativo e adiacente al carattere di start), dal check digit, e termina con un carattere di stop.

   Il codice 128 ha tre "subset" di caratteri (vedi par. 4.2.6.8), denominati Code A,B e C. A seconda di quale carattere di start, o precedente carattere di selezione subset o carattere di shift e' usato, ogni carattere di barre e spazi codifichera' uno dei tre caratteri corrispondenti sotto le colonne A,B e C. Se il simbolo comincia con il carattere di start A, e' selezionato il subset Code A. Analogamente possono essere selezionati i subset Code B o Code C facendo iniziare il simbolo con il corrispondente caratteredi start. Il subset puo' essere cambiato all'interno del simbolo con i caratteri di selezione A, B o C, o con i caratteri di shift.

   La stessa informazione puo' essere rappresentata da diversi simboli in codice 128 con diverse combinazioni di caratteri ( "AUTO SWITCHING" ) di Start, Code e Shift ( vedi par. 4.2.6.10 )


4.2.6.2 - CARATTERISTICHE

  • Codice alfanumerico con caratteri speciali
  • Codice continuo
  • Codice self-checking

4.2.6.3 - VANTAGGI

  • Rappresentazione del set completo dei caratteri ASCII
  • Alta tolleranza

4.6.2.4 - SVANTAGGI

  • Anche gli spazi sono significativi.
  • Bassa densita' di informazione.

4.2.6.5 - SET DI CARATTERI

  • 128 caratteri alfanumerici e speciali (set ASCII)
  • 4 caratteri funzionali.
  • 4 caratteri di selezione subset.
  • 3 caratteri di start.
  • 1 carattere di stop.

4.2.6.6 - DIMENSIONI E TOLLERANZE

       Il Codice 128 può essere stampato a varie densità, a seconda del processo di stampa ( vedi le stampanti per codice a barre ) e del sistema di lettura ( Vedi i lettori per codice a barre e i terminali per raccolta dati). L'elemento dimensionale significativo e' lo spessore X del modulo, il cui valore nominale minimo e' 0.19 mm.
       Lo spessore nominale di barre e spazi e' dato dalla moltiplicazione dello spessore X del modulo per lo spessore in moduli delle barre e degli spazi stessi (1, 2, 3 o 4 ).
       L'ampiezza minima delle zone di overflow è data dal massimo tra 10 moduli e 2.54 mm, quando si utilizzano dei lettori manuali o dei terminali per raccolta dati deve essere almeno 6.35 mm.
       Per le applicazioni più comuni l'altezza minima delle barre è data dal massimo tra 6.35 mm e il 15% della lunghezza del simbolo.
       Nella stampa del Codice 128 sono da considerare tre diverse tolleranze:

      b = tolleranza sullo spessore di un elemento;
      e = tolleranza sulla distanza tra margini omologhi ( destro-destro sinistro-sinistro) di due barre consecutive;
      P = tolleranza sulla distanza tra i margini sinistri delle barre iniziali di due caratteri adiacenti;

    i cui valori sono :

      b = +/- 0.40 X - 0.013 mm e = +/- 0.20 X P = +/- 0.20 X

    In applicazioni speciali ad altissima densita' di stampa (spesore del modulo X < 0.19 mm) la tolleranza b e' data da :

      b = +/- 0.33 X

    Il carattere di stop deve soddisfare le tolleranze misurate sulla lunghezza di un carattere standard, consistente nelle prime tre barre ed i primi tre spazi.
    Inoltre deve soddisfare le tolleranze, visto da destra verso sinistra, con le ultime tre barre e gli ultimi tre spazi a formare un carattere.


4.2.6.7 - LUNGHEZZA DEL SIMBOLO

L = ( 5.5D + 11C + 35 )X + 2Q

    dove:

      L = lunghezza minima del simbolo, incluse le zone di overflow.
      D = numero di cifre nel campo numerico.
      C = numero di caratteri ASCII non compresi in D, piu' il numero di caratteri funzione, piu' il numero di caratteri di selezione subset.
      X = spessore del modulo
      Q = ampiezza delle zone di overflow.


4.2.6.8 - TABELLA DI CODIFICA

Valore
Code A
Code B
Code C
B1
S1
B2
S2
B3
S3
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
SP
!
"
#
$
%
&
'
(
)
*
+
,
-
.
/
0
1
2
3
4
5
6
7
8
9
:
;

=
>
?
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
NUL
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
HT
LF
VT
FF
CR
SO
SI
DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US
FNC 3
FNC 2
SHIFT
Code C
Code B
FNC 4
FNC 1
SP
!
"
#
$
%
&
'
(
)
*
+
,
-
.
/
0
1
2
3
4
5
6
7
8
9
:
;

=
>
?
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
'
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
DEL
FNC 3
FNC 2
SHIFT
Code C
FNC 4
Code A
FNC 1
00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
Code B
Code A
FNC 1
2
2
2
1
1
1
1
1
1
2
2
2
1
1
1
1
1
1
2
2
2
2
2
3
3
3
3
3
3
3
2
2
2
1
1
1
1
1
1
2
2
2
1
1
1
1
1
1
3
2
2
2
2
2
3
3
3
3
3
3
3
2
4
1
1
1
1
1
1
1
1
1
1
1
1
2
2
4
2
1
1
1
1
1
1
1
4
4
4
2
2
4
1
1
1
1
1
4
4
1
1
3
4
1
2
2
2
2
3
2
2
3
2
2
3
1
2
2
1
2
2
2
2
2
1
2
1
1
2
2
1
2
2
1
1
3
1
3
3
1
3
3
1
3
3
1
1
3
1
1
3
1
1
3
1
1
1
1
1
3
1
1
3
1
2
3
1
1
2
2
4
4
1
1
2
2
4
4
4
2
1
4
3
1
2
2
1
2
2
1
2
2
1
1
1
1
1
3
1
1
1
1
1
1
1
1
2
2
2
1
1
1
2
2
2
1
1
1
2
2
2
3
3
3
3
1
1
3
3
2
1
1
1
2
2
2
2
2
2
1
1
1
2
2
2
1
1
1
2
2
2
3
3
3
3
1
1
3
3
3
1
1
1
2
2
2
4
1
1
1
1
1
1
1
1
2
2
2
2
2
2
1
1
3
1
4
1
1
1
4
4
4
1
1
1
2
4
2
1
1
1
4
4
1
1
3
4
1
1
2
1
2
2
3
2
2
3
2
2
3
2
2
1
2
2
1
2
2
1
2
2
1
1
2
1
2
2
1
2
1
3
1
3
1
3
3
1
3
3
1
3
1
3
1
1
3
1
1
3
1
1
3
1
1
3
1
1
3
1
1
4
1
2
4
1
4
1
2
2
4
1
4
1
2
2
1
1
1
1
2
1
2
2
1
2
2
1
2
1
1
1
1
3
1
1
3
1
3
1
1
1
1
2
2
2
2
2
2
1
1
1
1
1
1
3
3
3
2
2
2
1
3
3
1
1
3
2
2
2
1
1
1
2
2
2
2
2
2
1
1
1
1
1
1
3
3
3
2
2
2
2
3
3
1
1
3
2
2
2
1
1
1
1
1
1
2
2
2
2
2
2
1
1
1
1
1
1
1
1
1
1
1
4
4
4
1
1
1
1
1
1
4
2
2
4
4
4
1
1
1
1
4
3
4
3
2
2
1
3
2
2
3
2
2
3
2
2
2
2
1
2
2
1
1
2
1
2
2
1
2
2
1
2
2
1
3
1
1
3
3
1
3
3
1
3
3
1
3
1
1
3
1
1
1
1
1
3
1
1
3
1
1
3
1
1
1
1
1
4
2
4
1
2
1
4
2
4
1
2
1
1
4
1
2
1
2
2
1
2
2
1
2
2
1
1
1
1
3
1
1
3
1
3
1
1
1
1
1
103
104
105
Start A



Start B



Start C
2
2
2
1
1
1
1
1
1
4
2
2
1
1
3
2
4
2

Valore
B1
S1
B2
S2
B3
S3
B4
Stop
2
3
3
1
1
1
2

    B1 - B4 = barra 1 - 4
    S1 - S3 = spazio 1 - 3


      1 = elemento di spessore 1 modulo
      2 = elemento di spessore 2 moduli
      3 = elemento di spessore 3 moduli
      4 = elemento di spessore 4 moduli


4.2.6.9 - CALCOLO DEL CHECK DIGIT

    Il carattere di controllo precede immediatamente il carattere di Stop. Il valore corrispondente e' la somma modulo 103 dei valori del carattere di Start e dei caratteri successivi.
    I pesi sono uno per il primo carattere dato speciale ( da sinistra verso destra ) e continuano con 2, 3, 4, ecc.. per i successivi caratteri.
    Il carattere di controllo, unitamente ai caratteri di Start/Stop, funzione e di selezione subset, non viene trasmesso dai decodificatori.


      Esempio :

        Codice : Start Code C 25
        Valori (dalla tabella) : 105 ----- 25
        Calcolo del check digit : 105 + (25*1) = 130

          dove : 105 e 25 sono i valori e 1 il peso
          somma modulo 103 : 130/103 = 1 resto 27


        Codice Completo di check digit : 2527


4.2.6.10 - USO DEI CARATTERI DI START, CODE E SHIFT

    Gli stessi dati possono essere rappresentati con diversi simboli in codice 128, con l'uso di diverse combinazioni di caratteri di Start, Code e Shift.
    Le seguenti regole per l'uso di tali caratteri consentono di minimizzare la lunghezza del simbolo.


      1 - Determinazione del carattere di Start :

        1a - se i dati cominciano con 4 o piu' cifre, usare il carattere di Start C;
        1b - altrimenti se nei dati compare un carattere di controllo prima di qualsiasi carattere alfabetico minuscolo, usare il carattere si Start A;
        1c - altrimenti, usare il carattere di Start B.


      2 - Se e' verificata la condizione 1a con un numero dispari di cifre, inserire un carattere Code A o Code B prima dell'ultima cifra, seguendo le regole 1b e 1c per scegliere tra Code A e Code b.

      3 - Se si presentano 4 o piu' cifre numeriche mentre si e' in Code A o in Code B:

        3a - se le cifre sono in numero pari, inserire un carattere Code C prima della prima cifra;
        3b - vicersa, se le cifre sono in numero dispari, insrire in carattere Code C dopo la prima cifra.


      4 - Se si presenta un carattere di controllo mentre si e' Code B:

        4a - se tra il carattere di controllo in questione e il successivo c'è un carattere alfabetico minuscolo, inserire un carattere di shift prima del carattere di controllo ;
        4b - viceversa, inserire un carattere Code A prima del carattere di controllo.


      5 - Se compare un carattere alfabetico minuscolo mentre si e' in Code A:

        5a - se tra il carattere alfabetico minuscolo in questione ed il successivo c'e' un carattere di controllo, inserire un carattere di shift prima del carattere alfabetico minuscolo;
        5b - altrimenti, inserire un carattere Code B prima del carattere alfabetico minuscolo.


      6 - Se si ha un carattere non numerico mentre si e' in Code C, inserire un carattere Code A o Code B prima del carattere in questione, seguendo le regole 1b e 1c per scegliere tra Code A e Code B.