|
Ce code simple d'emploi permet le codage de 43 caractères : 10 chiffres, 26 lettres majuscules, les symboles $ % + - . / et l'espace. Le mode étendu permet de coder les 128 caractères ASCII; dans ce mode les caractères ajoutés par rapport au mode "simple" sont codés à l'aide de 2 caractères.
Caractère |
Valeur |
Motif |
Caractère |
Valeur |
Motif |
Caractère |
Valeur |
Motif |
0 |
0 |
101000111011101 |
F |
15 |
101110111000101 |
U |
30 |
111000101010111 |
1 |
1 |
111010001010111 |
G |
16 |
101010001110111 |
V |
31 |
100011101010111 |
2 |
2 |
101110001010111 |
H |
17 |
111010100011101 |
W |
32 |
111000111010101 |
3 |
3 |
111011100010101 |
I |
18 |
101110100011101 |
X |
33 |
100010111010111 |
4 |
4 |
101000111010111 |
J |
19 |
101011100011101 |
Y |
34 |
111000101110101 |
5 |
5 |
111010001110101 |
K |
20 |
111010101000111 |
Z |
35 |
100011101110101 |
6 |
6 |
101110001110101 |
L |
21 |
101110101000111 |
- |
36 |
100010101110111 |
7 |
7 |
101000101110111 |
M |
22 |
111011101010001 |
. |
37 |
111000101011101 |
8 |
8 |
111010001011101 |
N |
23 |
101011101000111 |
Espace |
38 |
100011101011101 |
9 |
9 |
101110001011101 |
O |
24 |
111010111010001 |
$ |
39 |
100010001000101 |
A |
10 |
111010100010111 |
P |
25 |
101110111010001 |
/ |
40 |
100010001010001 |
B |
11 |
101110100010111 |
Q |
26 |
101010111000111 |
+ |
41 |
100010100010001 |
C |
12 |
111011101000101 |
R |
27 |
111010101110001 |
% |
42 |
101000100010001 |
D |
13 |
101011100010111 |
S |
28 |
101110101110001 |
|
|
|
E |
14 |
111010111000101 |
T |
29 |
101011101110001 |
* |
|
100010111011101 |
Exemple de clé de contrôle pour : ZB65732
35 + 11 + 6 +5 +7 +3 +2 = 69
69
/ 43 = 1, reste 26 qui correspond à la lettre Q
Nouveau code avec la clé
: ZB65732Q
Les caratéres ne faisant pas partie du mode simple sont codés à l'aide de l'un des 4 préfixe % $ / + suivi d'un caractère de base selon la table suivante. Pour utiliser littéralement les caratéres qui servent de préfixe ou le symbole * il faudra utiliser un codage sur 2 caractéres
Caractère à produire |
Séquence à utiliser |
|
Caractère à produire |
Séquence à utiliser |
|
Caractère à produire |
Séquence à utiliser |
---|---|---|---|---|---|---|---|
NUL |
%U |
|
+ |
/K |
|
V |
V |
SOH |
$A |
|
, |
/L |
|
W |
W |
STX |
$B |
|
- |
- |
|
X |
X |
ETX |
$C |
|
. |
. |
|
Y |
Y |
EOT |
$D |
|
/ |
/O |
|
Z |
Z |
ENQ |
$E |
|
0 |
0 |
|
[ |
%K |
ACK |
$F |
|
1 |
1 |
|
\ |
%L |
BEL |
$G |
|
2 |
2 |
|
] |
%M |
BS |
$H |
|
3 |
3 |
|
^ |
%N |
HT |
$I |
|
4 |
4 |
|
_ |
%O |
LF |
$J |
|
5 |
5 |
|
` |
%W |
VT |
$K |
|
6 |
6 |
|
a |
+A |
FF |
$L |
|
7 |
7 |
|
b |
+B |
CR |
$M |
|
8 |
8 |
|
c |
+C |
SO |
$N |
|
9 |
9 |
|
d |
+D |
SI |
$O |
|
: |
/Z |
|
e |
+E |
DLE |
$P |
|
; |
%F |
|
f |
+F |
DC1 |
$Q |
|
< |
%G |
|
g |
+G |
DC2 |
$R |
|
= |
%H |
|
h |
+H |
DC3 |
$S |
|
> |
%I |
|
i |
+I |
DC4 |
$T |
|
? |
%J |
|
j |
+J |
NAK |
$U |
|
@ |
%V |
|
k |
+K |
SYN |
$V |
|
A |
A |
|
l |
+L |
ETB |
$W |
|
B |
B |
|
m |
+M |
CAN |
$X |
|
C |
C |
|
n |
+N |
EM |
$Y |
|
D |
D |
|
o |
+O |
SUB |
$Z |
|
E |
E |
|
p |
+P |
ESC |
%A |
|
F |
F |
|
q |
+Q |
FS |
%B |
|
G |
G |
|
r |
+R |
GS |
%C |
|
H |
H |
|
s |
+S |
RS |
%D |
|
I |
I |
|
t |
+T |
US |
%E |
|
J |
J |
|
u |
+U |
SPACE |
SPACE |
|
K |
K |
|
v |
+V |
! |
/A |
|
L |
L |
|
w |
+W |
" |
/B |
|
M |
M |
|
x |
+X |
# |
/C |
|
N |
N |
|
y |
+Y |
$ |
/D |
|
O |
O |
|
z |
+Z |
% |
/E |
|
P |
P |
|
{ |
%P |
& |
/F |
|
Q |
Q |
|
| |
%Q |
' |
/G |
|
R |
R |
|
} |
%R |
( |
/H |
|
S |
S |
|
~ |
%S |
) |
/I |
|
T |
T |
|
DEL |
%T |
* |
/J |
|
U |
U |
|
|
|
Maintenant que nous savons créer le motif d'un code barre, il nous reste à le dessiner à l'écran et à l'imprimer sur papier. Deux approches sont possibles :
La plupart des polices pour codes barre 3 de 9 trouvées sur le net (Polices de démonstration incomplètes) sont payantes (Parfois très chères) et de qualité douteuse; la largeur des modules n'étant pas toujours constante dans la définition de la police. J'ai donc décidé de dessiner entièrement une police 3 de 9 et de la proposer en téléchargement. Je l'ai testé sur une imprimante laser en corps 11, ce qui donne un très petit code barre d'environ 1,6 mm de largeur par caractère, résultat : lecture à 100% ! Sur une bonne imprimante à jet d'encre il faut monter au corps 15 ce qui donne des caractères de 2,1 mm de large.
Cette police contient les 43 caractères de base et le délimiteur sous le symbole *. Chaque caractère se termine par une barre blanche fine de séparation.
Copiez ce fichier |
Un code barre 3 de 9 sera donc constitué de la manière suivante :
|
Voici un petit programme écrit |
La fonction Code39$ peut -être réutilisée dans n'importe quel autre programme écrit en Visual Basic 6 ; elle peut également être recopiée telle quelle dans une macro VBA rattachée à un document Excel ou Word.
Public Function Code39$(chaine$) 'V 1.0.0 'Paramètres : une chaine 'Retour : * une chaine qui, affichée avec la police CODE39.TTF, donne le code barre ' * une chaine vide si paramètre fourni incorrect Dim i% Code39$ = "" If Len(chaine$) > 0 Then 'Vérifier si caractères valides For i% = 1 To Len(chaine$) Select Case Asc(Mid$(chaine$, i%, 1)) Case 32, 36, 37, 43, 45 To 57, 65 To 90 Case Else i% = 0 Exit For End Select Next If i% > 0 Then Code39$ = "*" & chaine$ & "*" End If End If End Function |
Fichier Excel de démonstration : et avec Open Office :
Depuis la première parution de cette page, j'ai reçu de nombreuses versions dans différents langages, les voici :
Language |
Auteur |
|
Visual Foxpro |
Emile MAITREJEAN |
|
Delphi |
Jean-Camille POPULUS |
Vous aimez cette page ? Cliquez ici ! |