English version

Le code 3 de 9.



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.


Etudions le mode d'encodage.
Caractère Valeur Motif 0 0 101000111011101 1 1 111010001010111 2 2 101110001010111 3 3 111011100010101 4 4 101000111010111 5 5 111010001110101 6 6 101110001110101 7 7 101000101110111 8 8 111010001011101 9 9 101110001011101 A 10 111010100010111 B 11 101110100010111 C 12 111011101000101 D 13 101011100010111 E 14 111010111000101
Caractère Valeur Motif F 15 101110111000101 G 16 101010001110111 H 17 111010100011101 I 18 101110100011101 J 19 101011100011101 K 20 111010101000111 L 21 101110101000111 M 22 111011101010001 N 23 101011101000111 O 24 111010111010001 P 25 101110111010001 Q 26 101010111000111 R 27 111010101110001 S 28 101110101110001 T 29 101011101110001
Caractère Valeur Motif U 30 111000101010111 V 31 100011101010111 W 32 111000111010101 X 33 100010111010111 Y 34 111000101110101 Z 35 100011101110101 - 36 100010101110111 . 37 111000101011101 Espace 38 100011101011101 $ 39 100010001000101 / 40 100010001010001 + 41 100010100010001 % 42 101000100010001       *   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


Le mode étendu.

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 NUL %U SOH $A STX $B ETX $C EOT $D ENQ $E ACK $F BEL $G BS $H HT $I LF $J VT $K FF $L CR $M SO $N SI $O DLE $P DC1 $Q DC2 $R DC3 $S DC4 $T NAK $U SYN $V ETB $W CAN $X EM $Y SUB $Z ESC %A FS %B GS %C RS %D US %E SPACE SPACE ! /A " /B # /C $ /D % /E & /F ' /G ( /H ) /I * /J
Caractère à produire Séquence à utiliser + /K , /L - - . . / /O 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 : /Z ; %F < %G = %H > %I ? %J @ %V A A B B C C D D E E F F G G H H I I J J K K L L M M N N O O P P Q Q R R S S T T U U
Caractère à produire Séquence à utiliser V V W W X X Y Y Z Z [ %K \ %L ] %M ^ %N _ %O ` %W a +a b +b c +c d +d e +e f +f g +g h +h i +i j +j k +k l +l m +m n +n o +o p +p q +q r +r s +s t +t u +u v +v w +w x +x y +y z +z { %P | %Q } %R ~ %S DEL %T    

La création des codes barres.

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.


La police " code39.ttf "

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 dans le répertoire des polices, le plus souvent : \Windows\Fonts


Structure d'un code 3 de 9.

Un code barre 3 de 9 sera donc constitué de la manière suivante :

Un petit programme pour tester le mode de base.

Voici un petit programme écrit en Visual Basic 6 ; le
fichier d'installation copiera le programme,
les dépendances Visual Basic, les fichiers sources et la police.

Fichier d'auto-installation :

Fichier ZIP sans installation :

Ce programme de test ne gère ni le mode étendu ni la clé de contrôle.

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 Office.

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
Pichier pour Libre 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 Delphi Francisco FERNANDEZ


Vous aimez cette page ?

Elle vous est utile ?
Cliquez ici !