Codigo 39 -
Code 39
J. Ignacio
Ulacia F. (18.1.1992 rev
9.11.2005)
Despues del Codigo
EAN/UPC, la segunda simbologia mas usada
en el mundo es el Codigo 39 (Code 39 o
C39). Esta se usa en la industria para
identificar modelos, numeros de serie y
cualquier informacion alfanumerica. Fue
desarrollado en 1975 por el Dr. David
Allais y Ray Stevens de Interface
Mechanisms (Intermec). Es la primera
simbologia alfanumerica desarrollada en el
mundo y usada en casi todas las
aplicaciones fuera del retail (venta al
menudeo).
Codificacion
El codigo 39 en un
codigo de barras unidimensional
alfanumerico que contiene unos cuantos
caracteres especiales. Es de longitud
variable lo que permite codificar
informacion con letras y numeros. Esta
diseñado para codificar las 26
letras mayusculas
(ABCDEFGHIJKLMNOPQRSTUVWXYZ), 10 digitos
(0123456789) y siete caracteres especiales
(-.$/+% espacio). El caracter de inicio es
el asterisco (*) y es el mismo caracter
que se usa al final. De esta forma este
caracter NO puede ser incluido dentro de
la codificacion.
La siguiente Tabla
muestra la codificacion
completa.
|
Caracter
|
Codificacion
|
Check
|
|
Caracter
|
Codificacion
|
Check
|
|
0
|
000110100
|
0
|
M
|
101000010
|
22
|
|
1
|
100100001
|
1
|
N
|
000010011
|
23
|
|
2
|
001100001
|
2
|
O
|
100010010
|
24
|
|
3
|
101100000
|
3
|
P
|
001010010
|
25
|
|
4
|
000110001
|
4
|
Q
|
000000111
|
26
|
|
5
|
100110000
|
5
|
R
|
100000110
|
27
|
|
6
|
001110000
|
6
|
S
|
001000110
|
28
|
|
7
|
000100101
|
7
|
T
|
000010110
|
28
|
|
8
|
100100100
|
8
|
U
|
110000001
|
30
|
|
9
|
001100100
|
9
|
V
|
011000001
|
31
|
|
A
|
100001001
|
10
|
W
|
111000000
|
32
|
|
B
|
001001001
|
11
|
X
|
010010001
|
33
|
|
C
|
101001000
|
12
|
Y
|
110010000
|
34
|
|
D
|
000011001
|
13
|
Z
|
011010000
|
35
|
|
E
|
100011000
|
14
|
-
(Menos)
|
010000101
|
36
|
|
F
|
001011000
|
15
|
(Punto)
|
110000100
|
37
|
|
G
|
000001101
|
16
|
Espacio
|
011000100
|
38
|
|
H
|
100001100
|
17
|
$
(USD)
|
010101000
|
39
|
|
I
|
001001100
|
18
|
/
(Diagonal)
|
010100010
|
40
|
|
J
|
000011100
|
19
|
+
(Mas)
|
010001010
|
41
|
|
K
|
100000011
|
20
|
% (Por
Ciento)
|
000101010
|
42
|
|
L
|
001000011
|
21
|
*
(Asterisco)
|
010010100
|
|
Tabla 1: Codificacion
de los caracteres del Codigo 39. La
primera posicion significa que es una
barra negra, la segunda blanca, la tercera
negra y asi sucesivamente. El digito cero
significa barra delgada y el 1 significa
barra gruesa. A continuacion se encuentra
la representacion del
asterisco.
Cada caracter esta
representado con cinco barras y cuatro
espacios teniendo un total de nueve
elementos. Las barras o espacios pueden
ser anchos o angostos. Tipicamente una
barra angosta tiene una dimension de 10
mils (10 milesimos de pulgada). La minima
dimension de la barra angosta (x) puede
ser de 7.5 mils. La dimension mas ancha no
tiene limite mas el que se pueda leer con
un lector de codigo de barras. En un
caracter se encuentran 3 barras anchas por
cada nueve elementos, de ahi su nombre
codigo 3 de 9. Entre dos caracteres por lo
general se usa la dimension de una barra
angosta de color blanco.
Digito
Verificador
El codigo 39 fue
diseñado para ser autoverificarse
internamente. Desgraciadamente, cuando las
etiquetas estan arrugadas o se lee de lado
es muy posible que el lector pueda
decodificar el simbolo con otra
informacion. En la vida real esto se llama
error de substitucion, y con nuestra
experiencia, sucede de 2 a 5 veces por
cada 10,000 codigos leidos en codigos sin
digito verificador. Esta reportado en la
literatura que sucede 1 por cada millon de
caracteres con digito verificador
(mas
informacion).
Si usted considera que le esta sucediendo
este problema, es facil el identificar los
numeros equivocados ya que salen
completamente de la estructura original
contenida en el codigo. Normalmente se
substituyen caracteres por %,+,$ donde no
deben de estar. Por ello es recomendable
el usar un digito verificador al final de
los caracteres. El uso de este digito,
aunque no elimina el error de substitucion
lo reduce en un factor de 100. Los
programas e impresoras modernos ya
incluyen codificacion con digito
verificador siempre y cuando se habilite.
Es importante mencionar que se tienen que
programar los lectores para que
identifiquen este caracter y eviten su
transmision. Consulte su manual de su
lector.
El algoritmo que usan
las impresoras se basa en asignar, a cada
caracter, un valor numerico del 0 al 42
que se encuentra en la tabla anterior. Al
asterisco se evita asignar un numero ya
que es el caracter delimitador. Luego se
suman todos los valores y el resultado se
divide entre 43. El residuo determina el
caracter de verificacion a usar. Por
ejemplo:
POSLINE =
25+24+28+21+18+23+14 = 153; Digito
Verificador = residuo(153/43) = 24 -- es
la letra "O"
Relacion de barras
anchas a angostas
Las barras anchas
tienen una proporcion de 3:1 con las
barras angostas, aunque la relacion de 2:1
se observa en algunas aplicaciones. Cuanto
mayor sea la proporcion de ancho:angosto
mejor sera la decodificacion y se reducira
el error de substitucion. En la practica
recomendamos el uso de relaciones por
arriba de 2.5:1
Impresion del
Codigo
Un codigo 39 debe tener
los siguientes elementos
- Zona Muda - antes
del codigo tiene que haber un espacio
en blanco sin impresion donde los
lectores determinan el inicio de un
codigo. Esta zona corresponde a 10
veces el ancho de una barra
delgada.
- Caracter de inicio
- Es el caracter asterisco
(*)
- Informacion a
codificar
- Digito verificador
- en caso de que se
utilice.
- Caracter de final -
que es el asterisco (*)
- Zona muda - igual
que la anterior.
La altura de un codigo
debe ser igual al 15% de su longitud o
0.25 pulgadas, el que sea
mayor.
Codificacion ASCII
Aunque el Code 39 solo
tiene 43 caracteres, es posible codificar
los 128 caracteres ASCII usando una
combinacion de dos caracteres. Es
importante mencionar que para usar esta
tabla hay que programar el lector de
codigo de barras a que identifique el par
de codigos; de lo contrario el lector
interpretara los caracteres tal como se
escribieron.
|
ASCII
|
C39
|
|
ASCII
|
C39
|
|
ASCII
|
C39
|
|
ASCII
|
C39
|
|
NUL
|
%U
|
SP
|
Space
|
@
|
%V
|
|
%W
|
|
SOH
|
$A
|
!
|
/A
|
A
|
A
|
a
|
+A
|
|
STX
|
$B
|
"
|
/B
|
B
|
B
|
b
|
+B
|
|
ETX
|
$C
|
#
|
/C
|
C
|
C
|
c
|
+C
|
|
EOT
|
$D
|
$
|
/D
|
D
|
D
|
d
|
+D
|
|
ENQ
|
$E
|
%
|
/E
|
E
|
E
|
e
|
+E
|
|
ACK
|
$F
|
&
|
/F
|
F
|
F
|
f
|
+F
|
|
BEL
|
$G
|
!
|
/G
|
G
|
G
|
g
|
+G
|
|
BS
|
$H
|
(
|
/H
|
H
|
H
|
h
|
+H
|
|
HT
|
$I
|
)
|
/I
|
I
|
I
|
i
|
+I
|
|
LF
|
$J
|
*
|
/J
|
J
|
J
|
j
|
+J
|
|
VT
|
$K
|
+
|
/K
|
K
|
K
|
k
|
+K
|
|
FF
|
$L
|
'
|
/L
|
L
|
L
|
l
|
+L
|
|
CR
|
$M
|
-
|
-
|
M
|
M
|
m
|
+M
|
|
SO
|
$N
|
.
|
.
|
N
|
N
|
n
|
+N
|
|
SI
|
$O
|
/
|
/O
|
O
|
O
|
o
|
+O
|
|
DLE
|
$P
|
0
|
0
|
P
|
P
|
p
|
+P
|
|
DC1
|
$Q
|
1
|
1
|
Q
|
Q
|
q
|
+Q
|
|
DC2
|
$R
|
2
|
2
|
R
|
R
|
r
|
+R
|
|
DC3
|
$S
|
3
|
3
|
S
|
S
|
s
|
+S
|
|
DC4
|
$T
|
4
|
4
|
T
|
T
|
t
|
+T
|
|
NAK
|
$U
|
5
|
5
|
U
|
U
|
u
|
+U
|
|
SYN
|
$V
|
6
|
6
|
V
|
V
|
v
|
+V
|
|
ETB
|
$W
|
7
|
7
|
W
|
W
|
w
|
+W
|
|
CAN
|
$X
|
8
|
8
|
X
|
X
|
x
|
+X
|
|
EM
|
$Y
|
9
|
9
|
Y
|
Y
|
y
|
+Y
|
|
SUB
|
$Z
|
:
|
/Z
|
Z
|
Z
|
z
|
+Z
|
|
ESC
|
%A
|
;
|
%F
|
[
|
%K
|
{
|
%P
|
|
FS
|
%B
|
<
|
%G
|
\
|
%L
|
|
|
%Q
|
|
GS
|
%C
|
=
|
%H
|
]
|
%M
|
}
|
%R
|
|
RS
|
%D
|
>
|
%I
|
^
|
%N
|
|
%S
|
|
US
|
%E
|
?
|
%J
|
_
|
%O
|
DEL
|
%T
|
|