L'objet code barre ne gère que les codes barres à une dimension.
Cette documentation traite de l’utilisation des objets code barre pour le développement Divalto via le SDK xwin.
Paramètres dans le SDK
Voici la liste des paramètres dans xwin
L'objet code barre demande les paramètres suivants:
-La variable qui doit contenir la valeur à convertir en code barre.
Le type du code barre :
A l'exécution
Les 6 premiers caractères sont utilisés pour le paramétrage du code barre, le
code barre doit donc commencer à partir du 7 ème caractère.
Ces 6 premiers caractères doivent être mis à espaces avec :Les deux premiers caractères doivent contenir le type de code barre entre 1 et 19
exemple " 1" ou " 2" ou "10" etc ( voir Les types des codes barres )Le caractère suivant peut être à espace, ceci indique qu'il faut prendre la valeur
par défaut du calcul et de l'affichage de la clé sinon
"1" = sans calcul de la clé
"2" = calcul de la clé sans affichage de la clé
"3" = calcul de la clé et affichage de la clé
sinon le type est fixe avec EAN 13 ,EAN 8 etc
Le calcul de la clé oui / non, si oui alors la clé est calculée et ajoutée à la fin de la valeur.
L'affichage de la clé oui / non , si oui et que la clé a été calculée par l'objet code barre alors celui-ci affiche aussi la valeur de la clé.
L'affichage de la valeur sous les traits du code barre oui / non.
Le nom du code barre au dessus des traits du code barre oui / non.
Si les chiffres supplémentaires doivent être imprimés vers le bas oui / non
sinon ils seront imprimés au dessus des traits qui codent les chiffres supplémentaires.
(voir pour les codes EAN 13 , EAN 8 , UPC A et UPC E )Code barre vertical oui / non , sinon il sera imprimé horizontalement .
S'il faut imprimer un cadre autour de la boîte contenant le code barre oui / non
La largeur d'un élément de code barre, c'est à dire la largeur d'un trait. Cette valeur est en centièmes de millimètre , par défaut elle vaut 34, soit 0,34 millimètres.
Types des codes barres
Les types des codes barres sont les suivants
1 - EAN 3
2 - EAN 8
3 - UPC A
4 - UPC E
5 - 2OF5 Entrelacé
6 - CODE 39
7 - CODE 39 Plus
8 - CODE 93
9 - CODE 93 Plus
10 - CODE 128 type A
11 - CODE 128 type B
12 - CODE 128 type C
13 - CODE EAN 128 type A
14 - CODE EAN 128 type B
15 - CODE EAN 128 type C
16 - CODABAR
17 - MSI
18 - ITF 14
19 - CODE 11
Famille des codes barres
On peut classer les codes barres par familles
Famille EAN 13 / EAN 8 / UPC A / UPC E
C'est un code strictement numérique avec : 1,2,3,4,5,6,7,8,9,0
La longueur du code est toujours fixe.
L'objet code barre complète la valeur avec des 0 devant pour arriver à la longueur voulue par le type de code barre.
La clé est obligatoire et est toujours affichée.
On peut ajouter 2 ou 5 caractères supplémentaires par exemple pour les code barres ISBN qui sont utilisés sur les livres, les revues, les magazines et les journaux.
L'objet code barre complète la valeur supplémentaire avec des 0 devant pour arriver à 2 caractères sinon il ajoute autant de 0 pour arriver à 5 caractères.
Si le code barre contient une valeur supplémentaire, il faut alors saisir cette valeur de la façon suivante :
exemple :
123456789012-12
123456789012-1 -> 123456789012-01
123456789012-12345
123456789012-123 - > 123456789012-00123
Il est utilisé dans la grande distribution et la presse.EAN 13
Code strictement numérique avec : 1,2,3,4,5,6,7,8,9,0
Toujours 13 caractères ( 12 caractères plus la clé )
Si la valeur fait moins que 12 caractères, l'objet code barre ajoute des 0 devant
La clé est obligatoire
Si la zone ne fait pas 13 caractères, l'objet code barre calcule la clé quelque soit le
paramétrage avec ou sans calcul de la clé.
La valeur de la clé est toujours affichée.
On peut ajouter 2 ou 5 caractères supplémentaires
EAN 8
Code strictement numérique avec : 1,2,3,4,5,6,7,8,9,0
Toujours 8 caractères ( 7 caractères plus la clé )
Si la valeur fait moins que 7 caractères, l'objet code barre ajoute des 0 devant
La clé est obligatoire
Si la zone ne fait pas 8 caractères, l'objet code barre calcule la clé quelque soit le
paramétrage avec ou sans calcul de la clé.
La valeur de la clé est toujours affichée.
On peut ajouter 2 ou 5 caractères supplémentaires
UPC A
Code strictement numérique avec : 1,2,3,4,5,6,7,8,9,0
Toujours 12 caractères ( 11 caractères plus la clé )
Si la valeur fait moins que 11 caractères, l'objet code barre ajoute des 0 devant
La clé est obligatoire
Si la zone ne fait pas 12 caractères, l'objet code barre calcule la clé quelque soit le
paramétrage avec ou sans calcul de la clé.
La valeur de la clé est toujours affichée.
On peut ajouter 2 ou 5 caractères supplémentaires
UPC E
C'est une optimisation du code UPC A. Si la valeur répond à certaines règles alors elle
Peut être imprimée en UPC E sur 6 caractères au lieu de 12 , sinon elle sera imprimée en
UPC A.
La valeur de base est la même que pour le code UPC A, c'est à dire 12 caractères.
Les règles pour transformer un UPC A en UPC E sont les suivantes :
a) le premier chiffre doit être 0
b) soit le nombre UPC A sur 12 caractères représentés par D1 D2 D3 D4 D5 D6 D7 D8
D9 D10 D11 D12 à traduire sur 6 caractères T1 T2 T3 T4 T5 T6
si D11 = '5' ou '6' ou '7' ou '8' ou '9' et D6 <> '0' et D7 à D10 = '0' alors
on peut enlever de D7 à D10 ce qui donne T1=D2 , T2=D3 , T3=D4 , T4=D5 ,
T5=D6 , T6=D11
sinon
si D6 à D10 = '0' et D5 <> '0' alors
on peut enlever D6 à D10 ce qui donne T1=D2 , T2=D3 , T3=D4 , T4=D5 ,
T5=D11 , T6='4'
sinon
si D4 = '0' ou '1' ou '2' et D5 à D8 = '0' alors
on peut enlever de D5 à D8 ce qui donne T1=D2 ,T2=D3, T3=D9,T4=D10,
T5=D11 , T6=D4
sinon
si D4 ='3' ou '4' ou '5' ou '6' ou '7' ou '8' ou '9' et D5 à D9 = '0' alors
on peut enlever de D5 à.D9 ce qui donne T1=D2 ,T2=D3,T3=D4,T4=D10,
T5=D11 , T6='3'
sinon
le code n'est pas traduisible en UPC E et doit être afficher en UPC A
Famille du type 2 sur 5 entrelacé
C'est un code strictement numérique avec : 1,2,3,4,5,6,7,8,9,0
La longueur de ce code est variable mais la longueur finale ( c'est à dire la longueur de la valeur plus la clé, si on à demandé le calcul de la clé ) doit être toujours multiple de 2, si ce n'est pas le
cas , l'objet code barre ajoutera un 0 devant la valeur.
En effet, le premier caractère est codé dans les barres noires tandis que le second est codé dans les espaces entre les barres noires.
Exemple : si la valeur finale est 123 , l'objet code barre codera la valeur 0123.
La clé n'est pas obligatoire mais il est recommandé de toujours ajouter une clé de contrôle.
2OF5 Entrelacé
Code strictement numérique avec : 1,2,3,4,5,6,7,8,9,0
nombre de caractères toujours pair : exemple 123 -> traduit 0123
ITF 14
Code strictement numérique avec : 1,2,3,4,5,6,7,8,9,0
nombre de caractères toujours pair : exemple 123 -> traduit 0123
toujours 14 caractères ( 13 + clé )
La clé est obligatoire pour ITF 14.
La clé est toujours affichée pour ITF 14.
Si la valeur fait moins que 13 caractères l'objet code barre ajoute des 0 devant
Si la zone ne fait que 13 caractères, l'objet code barre calcule toujours la clé quelque soit
le paramétrage avec ou sans calcul de la clé
Famille du type code 39
C'est un code alpha-numérique avec : 1,2,3,4,5,6,7,8,9,0, plus les lettres A à Z plus l'espace et quelques caractères spéciaux.
La longueur de ce code peut être variable, l'objet code barre élimine les blancs non significatifs à la fin de la valeur.
La clé n'est pas obligatoire mais il est recommandé de toujours ajouter une clé de contrôle.
Ce code barre peut être utilisé dans toutes applications qui doivent coder des valeurs alpha-numérique, il est utilisé dans l'industrie et en pharmacie ( boîtes de médicaments )
Le caractère * symbolise les caractères début et fin du code barre, on peut saisir 1234 ou simplement 1234, l'objet code barre ajoute alors le caractère * devant et derrière la valeur.
CODE 39
Code alpha-numérique avec : 1,2,3,4,5,6,7,8,9,0
A jusqu'à Z
a..z sont traduit en A..Z
les caractères accentués sont traduit en A..Z
plus les caractères spéciaux : espace , $ , % , + , - , /
et le point . (la virgule est traduit en point )
Le caractère * symbolise les caractères début et fin du code barre
CODE 39 Plus
Version étendu du CODE 39 avec les caractères : 1,2,3,4,5,6,7,8,9,0
A jusqu'à Z
a jusqu'à z
les caractères accentués sont traduit en a..z
plus les caractères spéciaux : espace , $ , % , + , - , /
le point . la virgule ,
et les caractères !, ", # , & , ', (, ), *, ; , :
< , = ,> , ? ,@, [ , \ , ] , ^ , _ , ' , { , | ,} , ~
Par défaut ce sont les seuls codes possible mais, si votre lecteur est compatible avec la norme ISO 646 on peut coder d'autres caractères
Pour cela , il faut mettre votre lecteur de code barre en mode ISO 646 et utilisée la codification suivante :
Il faut aussi mettre le code ! avant et après le texte
Exemple si vous voulez code 1234 + la touche return , il faut envoyer à l'objet code barre le texte : !1234$M!
Le code $M indique la valeur de la touche return
ASCII | Code 39 | ||||||||||||||
A | A | a | +A | 0 | 0 | ESC (Escape) | %A | SH (Start of Heading) | $A | ||||||
B | B | b | +B | 1 | 1 | FS (File Separator) | %B | SX (Start of Text) | $B | ||||||
C | C | c | +C | 2 | 2 | GS (Group Separator) | %C | EX (End of Text) | $C | ||||||
D | D | d | +D | 3 | 3 | RS (Record Separator) | %D | ET (End of Transmission) | $D | ||||||
E | E | e | +E | 4 | 4 | US (Unit Separator) | %E | EQ (Enquiry) | $E | ||||||
F | F | f | +F | 5 | 5 | ; | %F | AK (Acknowledge) | $F | ||||||
G | G | g | +G | 6 | 6 | < | %G | BL (Bell-Audible of Attention Signal) | $G | ||||||
H | H | h | +H | 7 | 7 | = | %H | BS (Backspace) | $H | ||||||
I | I | i | +I | 8 | 8 | > | %I | HT (Horizontal Tabulation) | $I | ||||||
J | J | j | +J | 9 | 9 | ? | %J | LF (Line Feed) | $J | ||||||
K | K | k | +K | ! | /A | [ | %K | VT (Vertical Tabulation) | $K | ||||||
L | L | l | +L | " | /B | | | %L | FF (Form Feed) | $L | ||||||
M | M | m | +M | # | /C | ] | %M | CR (Carriage Return) | $M | ||||||
N | N | n | +N | $ | /D | ^ | %N | SO (Shift Out) | $N | ||||||
O | O | o | +O | % | /E | _ | %O | SI (Shift In) | $O | ||||||
P | P | p | +P | & | /F | { | %P | DL (Data Link Escape) | $P | ||||||
Q | Q | q | +Q | ' | /G | %Q | D1 (Device Control 1-XON) | $Q | |||||||
R | R | r | +R | ( | /H | } | %R | D2 (Device Control 2) | $R | ||||||
S | S | s | +S | ) | /I | ~ | %S | D3 (Device Control 3-XOFF) | $S | ||||||
T | T | t | +T | * | /J | DEL | %T | D4 (Device Control 4) | $T | ||||||
U | U | u | +U | + | /K | NU (Null) | %U | NK (Negative Acknowledge) | $U | ||||||
V | V | v | +V | , | /L | @ | %V | SY (Synchronous Idle) | $V | ||||||
W | W | w | +W | - | /M | ` | %W | EB (End of Transmission Block) | $W | ||||||
X | X | x | +X | . | /N | SP (= or ~ in our fonts) | SP | CN (Cancel) | $X | ||||||
Y | Y | y | +Y | / | /O | EM (End of Medium) | $Y | ||||||||
Z | Z | z | +Z | : | /Z | SB (Substitute) | $Z |
Famille du type code 93
C'est un code alpha-numérique avec : 1,2,3,4,5,6,7,8,9,0, plus les lettres A à Z plus l'espace et quelques caractères spéciaux.
La longueur de ce code peut être est variable, l'objet code barre élimine les blancs non significatifs à la fin de la valeur.
La clé est en général obligatoire.
Ce code barre peut être utilisé dans toutes applications qui doivent coder des valeurs alpha-numérique, il est utilisé dans l'industrie.
CODE 93
Code alpha-numérique avec : 1,2,3,4,5,6,7,8,9,0
A jusqu'à Z
a..z sont traduit en A..Z
les caractères accentués sont traduit en A..Z
plus les caractères spéciaux : espace , $ , % , /
et le point . (la virgule est traduite en point )
CODE 93 Plus
Version étendu du CODE 93 avec les caractères : 1,2,3,4,5,6,7,8,9,0
A jusqu'à Z
a jusqu'à z
les caractères accentués sont traduit en a..z
plus les caractères spéciaux : espace , $ , % , + , - , /
le point . la virgule ,
et les caractères !, ", # , & , ', (, ), *, ; , :
< , = ,> , ? ,@, [ , \ , ] , ^ , _ , ' , { , | ,} , ~
3.5 ) Famille du type code 128
Ce code peut être alpha-numérique ou strictement numérique.
Il s'agit toujours des mêmes symboles , mais un code de début indique le jeu de caractères symbolisé.
Il existe trois modes de jeu de caractères , mode A, mode B et mode C.
Le code EAN 128 est identique au code Code 128 à part l'ajout d'un caractère appelé FNC1 au début du code barre et qui n'est pas transmis à l'application.
La longueur de ce code peut être variable, l'objet code barre élimine les blancs non significatifs à la fin de la valeur.
La clé est en général obligatoire.
Ce code barre peut être utilisé dans toutes applications qui doit coder des valeurs alpha-numérique, il est utilisé dans l'industrie. Il est plus performant que le code 39 ou 93. Et possède en mode C , une meilleure densité numérique que les autres codes barres.
en mode A, CODE 128 A ou EAN 128 A ( numérique + lettres en majuscules )
Code alpha-numérique avec : 1,2,3,4,5,6,7,8,9,0
A jusqu'à Z
a..z sont traduit en A..Z
les caractères accentués sont traduits en A..Z
plus les caractères spéciaux : espace , $ , % , /
le point . , la virgule ,
! , ", # , & , ', ( , ) , * , + , - , : , ; ,<, =, >
? , @ , [ , \ , ] , ^ , _ , '
et les codes ascii entre $00 et $31
en mode B, CODE 128 B ou EAN 128 B ( numérique + lettres en majuscules/minuscules)
Code alpha-numérique avec : 1,2,3,4,5,6,7,8,9,0
A jusqu'à Z
a jusqu'à z
les caractères accentués sont traduits en a..z
plus les caractères spéciaux : espace , $ , % , /
le point . , la virgule ,
! , ", # , & , ', ( , ) , * , + , - , : , ; ,<, =, >
? , @ , [ , \ , ] , ^ , _ , '
en mode C, CODE 128 C ou EAN 128 C ( uniquement numérique )
Code strictement numérique.
Les symboles sont utilisés pour encoder 00,01,02,03,...10,11,12,..,30,31,32 .... jusqu'à 99.
Le nombre de caractères plus la clé doit donc être toujours pair, exemple 123 sera codé en
01 23
Si ce n'est pas le cas, l'objet code barre ajoute un 0 devant
Code CODABAR
Code numérique avec : 1,2,3,4,5,6,7,8,9,0,
plus les caractères + , - , . $ , / (la virgule est traduite en point )
La longueur de ce code peut être variable
La clé n'est pas obligatoire mais il est recommandé de toujours ajouter une clé de contrôle.
Il y a quatre caractères de début et de fin du code barre : A,B,C,D ( a,b,c,d, est traduit en
A,B,C,D)
Par défaut , l'objet code barre prend A et B comme caractère de début et de fin.
On peut donc saisir soit la valeur directement , soit la valeur avec le code début/fin voulu.
exemple :
1234 -> A1234B
A1234B-> A1234B
a1234b-> A1234B
C1234D -> C1234D
Il est utilisé dans le domaine médical
Code MSI
Code strictement numérique avec : 1,2,3,4,5,6,7,8,9,0,
La longueur de ce code peut être variable
La clé n'est pas obligatoire mais il est recommandé de toujours ajouter une clé de contrôle.
CODE 11
Code strictement numérique avec : 1,2,3,4,5,6,7,8,9,0,
et le caractère -
La longueur de ce code peut être variable
La clé est en général obligatoire.
Calcul de la clé de contrôle
Si vous demandez à l'objet code barre de calculer la clé de contrôle, celui-ci utilise les formules suivantes. Si vous voulez utiliser d'autres formules de calcul, il faut calculer la valeur de la clé, l'ajouter à la valeur à coder et ne pas mettre la case 'Calcul de la clé" dans le masque xwin.
Pour les codes ITF24 , 2OF5 Entrelacé, EAN13, EAN8, UPC A et UPC E
s1 = faire la somme des caractères en partant du dernier et en sautant un caractère sur deux
exemple : 1234567890
0 + 8 + 6 + 4 + 2 = 20
s2 = faire la somme des autres caractères
exemple : 1234567890
9 + 7 + 5 + 3 + 1 = 25
cle = s1 * 3 + s2
exemple : 20*3 + 25 = 85
chercher la puissance de 10 immédiatement supérieure
c = reste de cle / 10
si c*10 < cle alors c = c + 1
c = c * 10
exemple : c = 90
prendre la différence
cle = c - cle
exemple : 90 - 85 = 5
la clé est ajoutée à la fin de la valeur
exemple : 12345678905
Pour les codes CODE 39 et CODE 39 PLUS
Chaque caractère codé correspond à une valeur , appelé "poids".
Le poids des caractères est le suivant :
caractère : 0..9 A..Z - . espace $ / + %
poids : 0..9 10..35 36 37 38 39 40 41 42
s = faire la somme des caractères selon leur poid et en sautant le caractère *
exemple : 1234567890
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 +9 + 0 = 45
cle = reste s / 43
exemple : reste de 45 / 43 = 2
ajouter la clé a la fin de la valeur
exemple : 12345678902
Pour les codes CODE 93 et CODE 93 PLUS
Chaque caractère codé correspond à une valeur , appelé "poids".
Le poids des caractères est le suivant :
caractère : 0..9 A..Z - . esp $ / + %
poids : 0..9 10..35 36 37 38 39 40 41 42
En CODE 93 PLUS , les autres caractères sont codés sur 2 caractères
avec un premier caractère symbolisé par ($) (%) ayant un poids
de 43, 44, 45,46 plus un caractère entre A..Z
L'objet code barre calcule deux clés : cleC et cleK
rang = 1
cleC = 0
pour i = dernier caractère jusqu'au premier caractère
cleC = cleC + poids du caractère[i] * rang
rang = rang + 1
si rang > 20 alors rang = 1
finpour
exemple : 1234567890
1*10 + 2*9 + 3*8 + 4*7 + 5*6 + 6*5 +7*4 +8*3 + 9*2 + 0*1 = 210
cleC = reste cleC / 47
exemple : reste 210 / 47 = 22 -> M
la clé cleC est ajoutée a la fin de la valeur
exemple : 1234567890M
rang = 1
cleK = 0
pour i = dernier caractère jusqu'au premier caractère
cleK = cleK + poids caractère[i] * rang
rang = rang + 1
si rang > 15 alors rang = 1
finpour
exemple : 1234567890M
1*11+2*10+3*9+4*8+5*7+6*6+7*5+8*4+9*3+0*2+22*1 = 277
cleK = reste cleK / 47
exemple : reste 277 / 47 = 42 -> %
la clé cleK est ajoutée a la fin de la valeur
exemple : 1234567890M%
Pour les codes CODE 128 et EAN 128
Chaque caractère codé correspond à une valeur , appelé "poids".
Le poids des caractères est le suivant :
en mode A
caractère:esp ! " # $ % & ' ( ) * + , - . / 0..9 : ; < = > ? @ A..Z [ \ ] ^ _
poids : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16..25 26 27 28 29 30 31 32 33..58 59 60 61 62 63
caractère : ascii de $00 a $31
poids : 64 à 95
en mode B
comme pour le mode A
caractère:esp ! " # $ % & ' ( ) * + , - . / 0..9 : ; < = > ? @ A..Z [ \ ] ^ _
poids : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16..25 26 27 28 29 30 31 32 33..58 59 60 61 62 63
caractère ' a..Z { | } ~ del(127)
poids 64 65..90 91 92 93 94 95
en mode C
valeur : 00 01 02 03 04 05 etc 99
poids : 0 etc 99
Il faut ajouter le poids des caractères de début de mode qui ont les valeurs suivantes :
mode début A 103
mode début B 104
mode début C 105
En mode EAN 128 , il faut aussi ajouter le caractère spécial FNC1 qui a un poids de 102.
s = faire la somme des caractères selon leurs poids en partant du premier caractère * par le rang du caractère + valeur du caractère de début
exemple mode A : 1234567890
103 + 17*1 + 18*2 + 19*3 + 20*4 + 21*5 + 22*6 + 23*7 + 24*8 + 25*9 + 16*10 = 1268
exemple mode B : 1234567890
104 + 17*1 + 18*2 + 19*3 + 20*4 + 21*5 + 22*6 + 23*7 + 24*8 + 25*9 + 16*10 = 1269
exemple mode C : 1234567890
12 34 56 78 90
105 + 12*1 + 34*2 + 56*3 + 78*4 + 90*5 = 1115
cle = reste s / 103
exemple en mode A : reste de 1268 / 103 = 32 -> @
exemple en mode B : reste de 1269 / 103 = 33 -> A
exemple en mode C : reste de 1115 / 103 = 85 -> 85
ajouter la clé a la fin de la valeur
exemple en mode A : 1234567890@
exemple en mode B : 1234567890A
exemple en mode C : 123456789085
En mode EAN 128 il faut faire comme si on ajoutait la valeur FNC1 au début de la chaîne
exemple mode A : FNC1 1234567890
103 + 102*1 + 17*2 + 18*3 + 19*4 + 20*5 + 21*6 + 22*7 + 23*8 + 24*9 + 25*10 + 16*11 = 1575
exemple mode B : FNC1 1234567890
104 + 102*1 + 17*2 + 18*3 + 19*4 + 20*5 + 21*6 + 22*7 + 23*8 + 24*9 + 25*10 + 16*11 = 1576
exemple mode C : FNC1 1234567890
12 34 56 78 90
105 + 102*1 + 12*2 + 34*3 + 56*4 + 78*5 + 90*6 = 1487
cle = reste s / 103
exemple en mode A : reste de 1575 / 103 = 30 -> >
exemple en mode B : reste de 1576 / 103 = 31 -> ?
exemple en mode C : reste de 1487 / 103 = 45 -> 45
ajouter la clé a la fin de la valeur
exemple en mode A : 1234567890>
exemple en mode B : 1234567890?
exemple en mode C : 123456789045
Pour le code CODABAR
Ajouter le caractère A et B en début fin de la valeur s'ils n'y sont pas.
Chaque caractère codé correspond à une valeur , appelé "poids".
Le poids des caractères est le suivant
caractère : 0..9 - $ : / . + A B C D
poids : 0..9 10 11 12 13 14 15 16 17 18 19
cle = 0
pour i = premier caractère jusqu'au dernier caractère
cle = cle + poids du caractère[i]
finpour
exemple : A1234567890B
16+1+2+3+4+5+6+7+8+9+0+17 = 78
chercher la puissance de 16 immédiatement supérieure
c = reste de clé / 16
si c*16 < cle alors c = c + 1
c = c * 16
exemple : c = 80
prendre la différence
clé = c - clé
exemple : 80 - 78 = 2
ajouter la clé a la fin de la valeur mais avant le caractère de fin
exemple : A12345678902B
Pour le code MSI
Construire un nombre en partant du dernier caractère puis en sautant un sur deux
exemple : 1234567 -> nouveau nombre 1357
faire nouveau nombre * 2
exemple : 1357 * 2 = 2714
puis faire la somme des chiffres
exemple : 2 + 7 + 1 + 4 = 14
faire la somme des chiffres qui n'ont pas été pris
exemple : 2 + 4 + 6 = 12
ajouter les deux sommes
exemple : 14 + 12 = 26
chercher la puissance de 10 immédiatement supérieure
c = reste de clé / 10
si c*10 < clé alors c = c + 1
c = c * 10
exemple : c = 30
prendre la différence
clé = c - clé
exemple : 30 - 26 = 4
la clé est ajoutée à la fin de la valeur
exemple : 12345674
Pour le CODE 11
Chaque caractère codé correspond à une valeur, appelé "poids".
Le poids des caractères est le suivant
caractère 0..9 -
poids 0..9 10
L'objet code barre calcule la clé appelée cleC.
Il peut aussi calculer une clé appelée cleK si le nombre de caractère après l'ajout de la cleC dépasse une certaine valeur que l'on peut paramétrer dans harmony.ini . voir chapitre harmony.ini
rang = 1
cleC = 0
pour i = dernier caractère jusqu'au premier caractère
cleC = cleC + poids du caractère[i] * rang
rang = rang + 1
si rang > 10 alors rang = 1
finpour
exemple : 1234567890
1*10 + 2*9 + 3*8 + 4*7 + 5*6 + 6*5 +7*4 +8*3 + 9*2 + 0*1 = 210
cleC = reste cleC / 11
exemple : reste 210 / 11 = 1
la clé cleC est ajoutée a la fin de la valeur
exemple : 12345678901
Pour le calcul de la cleK selon le paramétrage dans harmony.ini, l'objet code barre utilise l'algorithme suivant :
rang = 1
cleK = 0
pour i = dernier caractère jusqu'au premier caractère
cleK = cleK + poids caractère[i] * rang
rang = rang + 1
si rang > 9 alors rang = 1
finpour
exemple : 12345678901
1*2 + 2*1 + 3*9 + 4*8 + 5*7 + 6*6 +7*5 +8*4 + 9*3 + 0*2 + 1*1= 229
cleK = reste cleK / 11
exemple : reste 229 / 11 = 9 -> 9
la clé cleK est ajoutée a la fin de la valeur
exemple : 123456789019
Au sujet des codes ISBN
Chaque livre possède un numéro qui identifie ce livre , c'est la code ISBN.
Pour afficher ce code sous forme de code barre, il faut utiliser le code barre EAN13 mais en
transformant la valeur à passer au code barre.
La transformation est simple , il faut ajouter devant le code la valeur 978 et enlever la clé du code ISBN, c'est en général le dernier caractère (chiffre entre 0 et 9 et la lettre X qui indique la valeur 10 )
Exemples:
code ISBN complet 1-55615-677-4
devient 978-1-55615-677 => 978155615677 , l'objet code barre ajoutera alors le 13 caractère de la clé du code EAN13
code ISBN sans clé de fin 1-55615-677 ou 1-55615-677-X
devient 978-1-55615-677 => 978155615677 , l'objet code barre ajoutera alors le 13 caractères de la clé du code EAN13
code ISBN sans code de début 8026-003 => 2-8026-003 ( par défaut ajouter la valeur 2 devant )
devient 978-2-8026-003 => 97828026003 , l'objet code barre ajoutera alors le 13 caractère de la clé du code EAN13
Si votre code barre n'est pas dans la liste de l'objet code barre
Il existe une multitude de code barre, mais beaucoup utilise une symbologie identique à celle de l'objet code barre. En fait , ces codes barres indiquent simplement ce que représente chaque chiffre, mais utilisent une symbologie courante.
par exemple le code MONARCH est tout simplement le code CODABAR
le code PRESSLEY est le même que le code MSI , seul le calcul de la clé peut être différent
le code LOGMAR est en fait un code 2 sur 5 Entrelacé
le code GENCOD est en fait EAN 13
le code GALIA est en fait le CODE 39
le code CIP est en fait le CODE 39
le code ISBN est en fait le EAN 13
le code Matrix 2 of 5 est en fait un CODE 11
le code JAN est en fait une code EAN
Code barre de type GS1-128 (anciennement EAN-128) ou GENCOD
Il utilise le codage de type 128C, et code une série de valeurs numériques. Voir le site
http://www.gs1.fr/gs1_fr/standards_gs1_ 1/codes_a_barres_1/les_codes_a_barres_gs1/le_code_a_barres_gs1_128
Le 128C est un codage de type 128 qui code un chiffre de 2 caractères entre 00 et 99 sur un caractère de code 128 .
Le champ est donc toujours de longueur paire, si ce n'est pas le cas alors il faut faire comme s'il y avait un '0' devant, attention il n'y a pas de BLANC non plus, Il n'y a que des chiffres de '00' à '99' .
Exemple :
123 > 01>premier code128c 23->deuxième code128c et au décodage le lecteur renverra 0123
Il faut donc envoyer au code 128c des chiffres entre '00' et '99', et décomposer le traitement pour rendre les valeurs multiples de 2 caractères.
Il faut aussi utiliser le mode 'à l'exécution' avec le mode 20 ou 21, ce mode indique que le traitement de la longueur (qui doit être paire) doit être fait élément par élément et non pas globalement à cause des caractères FNC1 qui peuvent se trouver entre deux valeurs et qui peuvent rendre la longueur totale du code barre impaire.
Exemple : on veut coder cette série de valeurs
1 ean 14 ;'01' est du type n14
1 dte 6;une date de fabrication
1 fab 6;un numéro de fabrication
1 qte 8;une qte
1 dte2 6;autre date
;on commence par récupérer et par formater les champs
Dte = FormatD("AAM0J0",IMP_ETIQ.DLUO)
Dte =Modify(' ','0',dte) ;on a 6 chiffres 000000
Fab= '0' & CLI.NoFab ;si fabrique fait 5 de long on le met dans une zone de 6
fab =Modify(' ','0',fab) ;on a 6 chiffres 000000
qte = Format("<00000000>",IMP_ETIQ.QTE) ;sur 8 par exemple avec des 0
dte2 = FormatD("AAM0J0",IMP_Etiq.DatFab)
dte2 =Modify(' ','0',dte2) ;on a 6 chiffres 000000
ean = '0' & ART.EAN ;1+13 -> 14 chiffres
ean = modify(' ','0',ean)
; dans le masque imprimante, il faut mettre l'objet code barre dans le mode « à l'exécution »
;maintenant on peut construire le code barre
IMP_ETIQ.EAN128 = "211 " & \ ; type de code barre 21, 1 on ne veut pas de calcul de clé
;nota, la zone fait 6 caractères d'entête
'10' & ean & \ ;code ean
'15' & dte & \ ;date dluco
'91' & fab & qte & FNC1 & \ ;numéro de fabrication et qte FNC1 permet d'indiquer une
;zone de lg variable
'10' & qt2 ;etc
remarquez que les code d'identifications sont '01', 02', … , et pas '1', '2' ,… , car ils doivent aussi êtres multiples de 2 caractères et que les codes '410' '411' … sont multiples de n3 a n13 car '410' + n3, donne 6 caractères
Rappel : en mode "A l'exécution" les 6 premiers caractères sont :
Type de code barre 2,0 ;de 1 a 21
Calcul de la clé 1,0 ;1=aucun calcul 2=calcul 3=calcul et affichage
Réservé pour le futur 3
Les types de code barre 20 et 21 sont les mêmes que 12 (CODE12C) et 15 (EAN128C) a part qu'il n'y a pas de contrôle que la longueur soit multiple de 2, ceci a cause des codes FNC1 qui peuvent se trouver dans le code barre et qui peuvent rendent impair la longueur du code barre.
Exemples de programmations
Plusieurs exemples de programmation de code barre sont fournis dans les Divalto/exemple, notamment ici dans le dossier codebarre.
Sous-projet | |||
---|---|---|---|
codebarre | illustre l’impression des codes barres les plus classiques | ||
code barre colissimo | illustre l’impression des codes colissimo | ||
code barre swiss | illustre le QR Code des factures suisses | ||
code barre ybarcode | illustre l’utilisation de la DLL ybarcode.dll | Cet exemple génère plus de 100 exemple de codes barre, dont le paramétrage est décrit dans le fichier demoybarcode.txt | Quelques extraits : |