Le préambule est formé d'unités de deux mots succesifs, c'est-à-dire 4 octects, 32 bits.
La première unité est constituée d'un premier mot, le nombre d'octets constituant le préambule, suivi d'un mot nul. Le nombre d'octects du préambule est dans mes fichiers 116+8*nombre de changements de couleurs où la couleur initiale est comptée comme un changement de couleur. Le préambule d'un fichier monochrome comporte ainsi 124 octects.
Je mets deux mots nuls dans la deuxième unité.
Les 7 mots suivants comportent usuellement dans les fichiers .jef des indications de type date et heure codés en
ASCII. Je fais de même. J'ajoute après ces 7 mots un mot nul.
Le mot suivant est le nombre de changements de couleurs (la couleur initiale est comptée comme un changement de couleur). Il est suivi d'un mot nul qui permet de passer à l'unité suivante.
Viens ensuite, codé sur un mot, le nombre de mots du corps du fichier .jef, c'est-à-dire aux mots d'instructions près, le nombre de points à broder. Un mot nul complète cette unité.
Les 21 unités suivantes de 2 mots, soit 84 octets sont remplis par des octets nuls dans mes fichiers par flemme. Les informations usuellement présentes dans les fichiers .jef à ces emplacements, telles que longueur et hauteur en mm d'un rectangle contenant le motif à broder, ne sont pas nécessaires à la réalisation de la broderie. Ces valeurs sont codées sur les premiers mots des unités, le second étant nul. A l'instar de ce qui est fait pour les points, le codage d'information spatiales commence par un octet x (abscisse) suivi d'un octet y (ordonnée). Comme les valeurs totales peuvent excéder la capacité d'un octect, il arrive que l'unité suivante soit sollicitée pour compléter les valeurs tronquées.
Enfin vient la dernière partie du préambule, celle consacrée aux couleurs. Elles sont indiquées dans l'ordre où elles doivent être brodées, chacune occupant 4 mots, c'est-à-dire, 2 unités. Le premier mot est le code de l'une des 78 couleurs Janome : 1 pour “Noir 002”, 2 pour “Blanc 001”, 3 pour “Jaune 204”, 4 pour “Orange 203”… Comme pour les unités précédentes, un mot nul clôt l'unité. La seconde et dernière unité d'une couleur dans mes fichiers comporte h0D=13=
ASCII“fin de ligne” codé sur le premier mot suivi d'un mot nul.
Ouf le préambule est terminé. Un exemple est donné ci-dessous en hexadécimal, il correspond à une broderie monochrome.
J'utilise dans le corps du fichier 3 instructions : h8001, h8002, h8010. Les instructions débutent donc par un octet h80. C'est astucieux car les octets codant les points proprement dits sont signés de -127=h81 à +127=h7F. Il reste une des 256 valeurs disponibles : h80 dont le signe est ambigu, 128 ou -128. faire un choix de signe serait déplaisant car il induirait une disymétrie dans les possibilités de broder entre gauche et droite, ainsi qu'entre haut et bas. Réserver h80 pour indiquer une instruction est donc bien vu.
h8001 et h8002 indiquent un départ d'une portion du motif à broder.
h8001 indique en plus le passage à la couleur suivante. Ma brodeuse s'arrête et me demande d'installer la nouvelle couleur.
h8010 indique la fin du corps du fichier, la fin de la broderie. Sa présence est impérative sous peine de refus du fichier par la brodeuse bien qu'elle connaisse dès le préambule la taille du corps du fichier.
Les données spatiales du corps sont codées en déplacement (coordonnées des vecteurs de translation) et non pas en absolu (coordonnées des points) comme c'est la règle pour le G-code. Contrairement aux concepteurs de ce dernier, Janome n'a pas choisi un compromis entre simplicité pour la machine à commande numérique et lisibilité par un humain. C'est la machine qui est priviligiée, non l'humain. Les fichiers sont binaires, les coordonnées sont celles de déplacements…
La distance entre deux points successifs de broderie est courte sinon il y aurait de grands fils tendus. Aussi les déplacements sont petits alors que les coordonnées des positions peuvent être nettement plus imposantes. Par souci de compacité, il est donc pertinent de coder les déplacements plutôt que les positions. De plus, le nombre d'impulsions envoyées aux moteurs pas à pas est proportionnel au déplacement voulu, pas à la position recherchée. Du point de vue machine, coder les déplacements est plus direct.
L'échelle utilisée est d'environ 0,1 mm pour 1 unité.
Chaque déplacement se code sur un mot, le premier octet signé pour x (l'abscisse), le second pour y (l'ordonnée). Chacune des coordonnées prend une valeur entière entre -127 et 127. Il est impossible d'effectué directement des déplacement de plus grande ampleur (maximum environ 1,27 cm).
Le premier déplacement suivant une instruction h8001 ou h8002 n'est pas suivi d'un point machine. Il permet d'aller au départ de la séquence de broderie. Si le déplacement nécessaire excède la taille maximale autorisée d'un déplacement, il suffit d'empiler une séquence de (h8002 déplacement) pour positionner l'aiguille en n'importe quel point voulu du cadre de broderie.
A part le premier déplacement suivant une instruction h8001 ou h8002, tous les autres sont suivis d'un point machine.
Je n'en utilise pas plus pour broder sur ma machine.