Voila comment imprimé en direct sur une imprimante à tickets un code barres de type code128 avec du texte formaté.
C’est un exemple en Windev mais il fonctionne avec tous les langages.
Pour commencer, on va reprendre les bases, le langage ESC/POS vient de chez Epson pour les POS (Point Of Sale -> Point De Vente) qui date de 1997. C’est de l’ASCII envoyé sur le port série, parallèle ou USB qui est analysé et imprimé directement par l’imprimante.
Je ne vais pas faire la liste de toutes les commandes qui existent, je vais simplement faire un tour des principales.
En règle générale est commencent par le caractère ESC(0x1B ou 27) ou GS(0x1D ou 29).
- LF => line Feed ou saut de ligne (0x0A ou 10)
- ESC + « – » => Souligné
- + 0 => Off
- + 1 => On
- + 2 => Double Lignes
- ESC + « E » => Gras
- + 0 => Off
- + 1 => On
- GS + « B » => Négatif
- + 0 => Off
- + 1 => On
- ESC + « ! » => Taille x 2
- + 0 => Off
- + 64 => x2
- ESC + « M » => Police
- + »0″ (ou 0) => Font A
- + « 1 » = (ou 1) => Font B
- ESC + « a » => Alignement
- + « 0 » => Gauche
- + « 1 » => Centré
- + « 2 » => Droite
- ESC + « R » => Charset
- + 1 => France
- ESC + « t » =>
- + 6 => West Europe (dépends parfois de l’imprimante)
- ESC + « @ » => Reset
- GS + « VA » => Feed et Cut
Code 128
- GS + « w » + 2 => Largeur des barres, par défaut c’est 3
- GS + « H » + 2 => Impression du code lisible en dessous
- GS + « kI » => impression du code 128
Maintenant qu’on a les bases, il existe plusieurs type de code128. Le plus courant est le type B. Afin d’imprimé un code128 il faut ajouter 3 paramètres à la commande à envoyé à l’imprimante. Il s’agit du la taille du buffer, le type de code et la chaine à encoder. Le buffer est la concaténation du type de code et de la chaine à encoder. Voici un exemple brut dont les valeurs son données en décimal :
GS + « kI » + 20 + « {B » + « 1234567890AZERTYUI » + LF
20 est la taille du buffer, {B est un code128 de type B, 1234567890AZERTYUI est le contenu du code barres qui fait 18 caractères, LF valide la fin de la ligne et lance l’impression de la commande.
Finalement c’est très simple 🙂
fantastique !