FR 2957442 A1 20110916 FR 1051736 A 20100310 INTERFACE UTILISATEUR POUR UNE IMPRIMANTE INDUSTRIELLE DESCRIPTION DOMAINE TECHNIQUE ET ART ANTÉRIEUR L'invention concerne le domaine de l'impression industrielle, par exemple par jet d'encre mais également par la technique laser, ou thermique. Dans ce domaine, on cherche à imprimer des informations sur des objets très divers, par exemple des cartons d'emballage de tout type de matière, alimentaire ou autre, ou directement sur des objets tels que des œufs, voire sur des étiquettes destinées à identifier les produits. Les informations à imprimer peuvent varier, d'un objet à l'autre, et/ou d'un lot de mêmes objets à un autre, et/ou d'un lieu de fabrication à l'autre, et/ou d'une période temporelle de fabrication à une autre, ... Un utilisateur d'une machine d'impression industrielle va donc avoir besoin de moyens lui permettant de faire évoluer le contenu des informations à imprimer. On connaît notamment des machines comportant un clavier à membrane, mais ces machines sont limitées en ce qui concerne l'édition du message à concevoir. En particulier, une ligne créée ne peut être modifiée que si elle est effacée et complètement réécrite. Il se pose donc le problème de trouver un 30 nouveau dispositif, et un nouveau procédé, pour concevoir et éditer des informations à imprimer en nombre sur une série d'objets, par exemple tels que ceux indiqués ci dessus. Tl se pose également le problème de trouver un dispositif et un procédé permettant" de réaliser une édition des informations à imprimer sur une pluralité d'objets, par exemple tels que ceux indiqués ci-dessus, de manière plus aisée, ou plus souple, qu'avec les dispositifs connus de l'art antérieur. EXPOSÉ DE L'INVENTION L'invention concerne d'abord un dispositif de conception d'information en vue d'une impression de ces informations sous forme de caractères sur un objet, comportant : - un écran de visualisation, - des moyens pour définir sur cet écran au moins un premier bloc d'écriture d'informations, - des moyens pour définir, dans ce premier bloc, une taille des caractères à y insérer, -- des moyens pour modifier la taille et/ou la nature des caractères d'au moins le premier bloc d'écriture et pour modifier automatiquement la position d'au moins un deuxième bloc, en contact avec le premier bloc par sa droite ou par sa gauche, en fonction de la longueur de la chaîne de caractères dans le premier bloc et/ou en fonction de la taille des caractères de ce premier bloc. L'invention concerne également un dispositif d'impression, comportant . - un écran de visualisation, - des moyens pour définir sur cet écran au moins un premier bloc d'écriture d'informations, - des moyens pour définir, dans ce premier bloc, des caractères à y insérer, - des moyens pour définir un premier type de blocs pouvant être modifiés sans limitation d'accès, et un deuxième type de bloc ne pouvant être modifié qu'avec une limitation d'accès et/ou des moyens pour définir si un opérateur peut avoir accès à la modification de tous les types de bloc, ou à seulement un type particulier de bloc. L'invention concerne également un procédé de conception d'information en vue d'une impression de ces informations sous forme de caractères sur un objet, comportant : - définir sur un écran de visualisation au moins un premier bloc d'écriture d'informations, et une taille des caractères à y insérer, modifier la taille et/ou la nature des caractères d'au moins ce premier bloc, ce qui modifie automatiquement la position d'au moins un deuxième bloc, en contact avec le premier bloc par sa droite ou par sa gauche, en fonction de la longueur de la chaîne de caractères dans le premier bloc et/ou en fonction de la taille des caractères de ce premier bloc. Il est possible de prévoir en outre des moyens, ou une étape, pour : - positionner un curseur sur un des côtés, droite ou de gauche, d'un bloc, lorsque le curseur vient en contact avec ce bloc, -et/ou, lorsqu'un curseur vient en contact simultané avec deux blocs, dont l'un occupe une position haute et l'autre une position basse sur l'écran, positionner automatiquement ce curseur sur le côté du bloc inférieur ou du bloc supérieur, -et/ou, lorsqu'un curseur est situé sur une extrémité ou le côté d'un bloc et que sa hauteur n'est pas égale à la hauteur de cette extrémité ou de ce côté, adapter la hauteur du curseur à celle du bloc, dès lors que le curseur est tiré en direction du bloc, -et/ou adapter la position et la taille de chaque curseur, au début d'une ligne, dès lors que le curseur est positionné sur, ou au voisinage de, cette même ligne. - et/ou lorsqu'il n'est pas possible de positionner un curseur sur une ligne, du fait de la présence d'un bloc, déplacer le curseur sur le côté (droite ou gauche) le plus proche de ce bloc, dont il prend la hauteur, - et/ou positionner un curseur à l'endroit où est positionné l'extrémité d'un doigt d'un utilisateur sur l'écran, ou bien à l'endroit où est positionné un curseur mobile, avec éventuellement une attraction vers un côté d'un bloc que l'extrémité d'un doigt touche partiellement ou contre lequel ou à l'intérieur duquel le curseur mobile est positionné, la hauteur du curseur pouvant alors devenir égale à celle du bloc ou à la distance entre deux lignes voisines sur l'écran. Il est possible de prévoir en outre des moyens ou des étapes de procédé pour : - déplacer et horizontalement un premier bloc jusqu'au côté gauche (respectivement jusqu'au côté droit) de l'écran, ou jusqu'au côté droit d'un deuxième bloc, situé à sa gauche, dès lors qu'un troisième bloc, dont au moins une partie était initialement situé à gauche (respectivement à droite) du premier bloc, et avec lequel le côté gauche (respectivement le côté droit) du premier bloc était initialement en contact (respectivement par son côté droit), est supprimé, -- et/ou déplacer horizontalement un premier bloc, initialement en contact par son côté gauche (respectivement droit) avec le côté droit (respectivement gauche) d'un deuxième bloc, vers la droite (respectivement la gauche) de l'écran, dès lors qu'un troisième bloc est inséré entre le premier et le deuxième bloc, - et/ou déplacer horizontalement un premier bloc le plus à gauche (respectivement à droite) possible de l'écran dès lors qu'il est déplacé, par exemple verticalement, de sorte qu'un deuxième bloc, qui était initialement situé à sa gauche (respectivement à sa droite) et avec lequel il était en contact par son côté gauche (respectivement par son côté droit), n'est plus présent à sa gauche (respectivement à sa droite), - et/ou déplacer horizontalement un premier bloc et un deuxième bloc, chacun en contact de l'autre par un de ses cotés, de sorte qu'ils restent dans la même position relative, dès lors que l'un des deux blocs est poussé ou tiré horizontalement. Un dispositif selon l'invention peut également comporter des moyens pour, ou une étape de procédé pour, sélectionner une vitesse de défilement d'un objet sur lequel une impression est à -réaliser et/ou un algorithme spécifique et/ou un certain nombre de lignes repères sur l'écran. Il est également possible de sélectionner un sens de la tête d'impression et/ou une vitesse d'un objet à imprimer et/ou un algorithme et/ou une mesure de la vitesse et/ou un type de déclenchement et/ou un mode de déclenchement et/ou une unité et/ou un filtrage Dtop et/ou une marge aller et/ou une marge retour. Selon l'invention, un bloc peut être notamment de type texte ou date ou heure ou compteur ou code barre. Dans un bloc de type compteur, il est possible de créer ou modifier un numéro de compteur et/ou un type de compteur et/ou une valeur de départ du compteur et/ou une valeur finale du compteur et/ou un pas du compteur et/ou un nombre d'articles dans un lot, le compteur s'incrémentant lorsque la valeur du lot est atteinte. Il est également possible de modifier, pour un bloc de type de compteur, un mode incrémentation du compteur et/ou un mode de réinitialisation du compteur et/ou un mode de remise à zéro du compteur. Dans un bloc de type date, il est possible de modifier une valeur de décalage de la date et/ou un format de date et/ou de définir un premier jour de la semaine et/ou de définir une heure à laquelle la date passe au jour suivant et/ou de convertir une durée de décalage supérieur à 365 jours en années, en mois et en jours. Après avoir conçu l'information à imprimer selon un procédé tel que ci-dessus, il est possible de b a procéder à son impression. Une étape d'impression sur un ou des objets est alors réalisée. L'invention concerne également un dispositif d'impression, comportant : -un dispositif de conception d'information selon 10 l'invention, tel que décrit ci-dessus, - des moyens d'impression, - des moyens de commande des moyens d'impression. Un système d'impression selon l'invention 15 comporte un dispositif d'impression selon l'invention, tel que décrit ci-dessus, et au moins un détecteur de vitesse d'objets à imprimer. Un système d'impression selon l'invention comporte au moins un détecteur de vitesse permettant de 20 synchroniser la vitesse d'impression des moyens d'impression et la vitesse de défilement des objets par rapport aux moyens d'impression. Il peut en outre comporter des moyens, par exemple un convoyeur, pour déplacer les objets à 25 imprimer par rapport aux moyens d'impression. BRÈVE DESCRIPTION DES DESSINS - Les figures lA à 1D représentent une imprimante industrielle dans laquelle est incorporé un 30 dispositif selon l'invention, - la figure 2 représente l'aspect d'un écran dans un dispositif selon l'invention, - les figures 3A à 3C représentent un écran d'un dispositif selon l'invention, avec divers états d'affichage d'un message, - les figures 4A et 4B illustrent une technique de modification de la présentation d'informations sur un écran selon l'invention, la figure 5 représente le déplacement d'un curseur sur un écran selon l'invention, - les figures 6A à 20H représentent divers aspects de la modification d'un écran selon l'invention, - la figure 21 représente un champ délimité 15 par quatre sommets, - les figures 22A à 45 représentent diverses possibilités d'utilisation d'un dispositif selon l'invention, - la figure 46 représente un système 20 d'impression, avec dispositif de contrôle et convoyeur, - la figure 47 représente une variante d'un dispositif selon invention, avec un contrôle distant par ordinateur. EXPOSÉ DÉTAILLÉ DE MODES DE RÉALISATION PARTICULIERS 25 Une imprimante industrielle incorporant un écran, ou une interface utilisateur, selon l'invention, est représentée en figure lA à ID. Sur cette figure, la référence 2 désigne l'interface utilisateur (on utilisera par la suite le 30 terme « écran »). Au voisinage de l'écran 2 se trouve un indicateur 4, par exemple une diode LED, de mise sous tension de dispositif. L'écran est situé en haut d'un ensemble 6 formant un pupitre, et comportant, un compartiment hydraulique 8, pour une imprimante à jet d'encre auquel on peut avoir accès par l'ouverture d'une porte 19. La référence 10 désigne le module d'impression, par exemple un dispositif d'impression par jet d'encre, alimenté par un ombilic 12, qui amène les fluides, et notamment l'encre, au module 10. Le module 10 est par exemple comme décrit dans le document EP 1234670 ou dans EP 1827843 ou dans EP203108. Be manière résumée, un tel module comporte essentiellement : - des moyens générateurs de gouttes d'encre, - une électrode de charge des gouttes, -une paire d'électrodes de déflection d'un jet de gouttes chargées, - une gouttière de récupération des gouttes non déviées. Une description plus détaillée de l'agencement de ces moyens peut être trouvée dans le document précité EP 1 234 670, en particulier en paragraphe 15 et 16 de ce document. La figure 1B représente de manière un peu 25 plus détaillée l'intérieur du pupitre lorsque la porte 19 est ouverte : on y voit, d'une part, des moyens 14 électroniques, par exemple une ou des cartes électronique CPU et/ou un port USE et/ou un lecteur de cartes mémoires SD, mais aussi des moyens permettant de 30 gérer l'alimentation en fluides de la tête d'impression, par exemple une pompe 16 à encre, une 20 cartouche 18 d'encre et une cartouche 20 d'additifs. Ces cartouches contiennent donc des éléments consommables, elles peuvent être enlevées lorsque le fluide correspondant arrive à un niveau minimum et elles peuvent être alors remplacées par des cartouches pleines. Chaque cartouche, lorsqu'elle est en position de fonctionnement dans le dispositif, est verrouillée à l'aide de moyens, par exemple un ergot de verrouillage, que l'utilisateur peut déplacer afin de dégager la cartouche et de la sortir du dispositif. Comme on le verra plus loin, un écran du dispositif peut comporter une information sur l'état de remplissage de chacune de ces cartouches. Les moyens électroniques 14 commandent l'envoi d'impulsions électriques vers les électrodes de charge et de déviation de gouttes d'encre qui sont situées dans la tête 10. Ces moyens 14 commandent également l'envoi de flux de liquide (encre, solvants) vers la tête 10, 20 par exemple par l'intermédiaire de vannes. La figure 1C représente le même dispositif, en vue arrière, avec un panneau 5 amovible pour l'accès au compartiment électrique, des moyens 3 de connexion, par exemple pour des liaisons de type série/parallèle, 25 et le départ 11 de l'ombilic. Une carte dite « Interface Industrielle » (optionnelle) peut être fixée à l'intérieur de la machine, par exemple sur la plaque 5 de la figure 1C. Elle reçoit les signaux des fils qui arrivent sur les 30 presse-étoupes 3 de cette même figure. Elle permet la prise en compte des signaux externes connectés à l'imprimante. La figure lD représente en partie le même dispositif, en vue arrière, le panneau 5 d'accès eau compartiment électrique étant enlevé. On voit sur cette figure un bloc d'alimentation 7, un ventilateur 9 et on voit également la carte CPU 14. L'arrière de l'interface opérateur 2 est également visible. Les moyens électroniques 14 sont programmés 10 pour mettre en œuvre des étapes de procédé telles que décrites dans la suite de cette description. Un autre exemple de dispositif auquel l'invention peut être appliquée est une imprimante à laser. 15 Un mode de réalisation de l'écran 2 est représenté en figure 2. Un tel écran est constitué d'un ensemble de très nombreux pixels. Dans cet exemple, le message 21 à imprimer apparait sur un champ de visualisation 20, ici en 20 caractères sombres sur un fond clair, mais toute autre représentation est possible. Dans une partie de ce champ de visualisation 20, des boutons 20', 20" peuvent être prévus pour agrandir ou réduire la taille de l'image perçue par l'utilisateur. Ce champ 20 apparait 25 sur un fond coloré 23, qui peut, dans un mode de réalisation, avoir diverses couleurs en fonction de l'état de la machine: - il peut être d'une première couleur, par exemple gris, lorsque l'impression est en pause ou que 30 l'imprimante est arrêtée, - il peut être d'une deuxième couleur, par exemple vert, lorsque l'impression est en cours ou lorsque que l'imprimante est prête à imprimer. Le haut de l'écran comporte également une y b barre côlorée 24, qui peut donner des informations sur l'imprimante. Par exemple, cette zone 24 est rouge lorsqu'un défaut est détecté sur l'imprimante, orange lorsqu'une alarme est détectée et qu'aucun défaut n'est présent, et grise ou blanche dans les autres cas. Cette zone peut également comporter une indication de date et d'heure, comme indiqué sur la figure 2. Un bouton 25 permet de démarrer une impression, ou de mettre en pause une impression qui est en cours. Un champ 26 peut comporter des indications concernant l'autonomie de l'imprimante vis-à-vis du volume de produit consommable, par exemple l'autonomie de l'imprimante vis-à-vis du volume d'encre dans la cartouche 18, et l'autonomie de l'imprimante vis-à--vis du volume d'additif dans la cartouche 20. Dans la partie inférieure de l'écran on trouve, dans l'exemple illustré, un bouton 27 pour démarrer et arrêter l'imprimante, et une barre d'icône 28, qui comporte ici trois icones 281, 282, 282. Un bouton 27a permet d'accéder à un écran dans lequel un opérateur va pouvoir entrer un code personnel, la comparaison de ce code à une liste préétablie va permettre de décider si l'opérateur en question peut avoir accès à seulement des modifications simples ou aussi à des modifications avancées des blocs d'un message. On peut également trouver des informations 29, 29' relatives à la production qui est en cours (par exemple une information en provenance du compteur de messages imprimés). D'une manière générale, l'écran 2 permet de : - contrôler l'impression, - et/ou contrôler l'état de l'imprimante, - et/ou visualiser les informations de production en cours, - et/ou visualiser le message en cours d'impression, - et/ou accéder à différents menus, qui seront expliqués plus loin. Selon l'invention, l'élaboration d'un 15 message à imprimer peut être réalisée avec une certaine souplesse ou flexibilité. Ceci est illustré à l'aide des figures 3A-3C, 4A, 4B. La figure 3A représente un écran similaire à celui de la figure 2, et l'on voit que l'utilisateur 20 va sélectionner un bouton 281 qui permet de passer dans un mode de modification. ou de création d'une information à imprimer. Par exemple, la sélection du bouton 281 fait apparaitre un écran tel que celui de la figure 3B, qui 25 comporte une première partie (à gauche dans cet exemple) contenant un message, par exemple un message à modifier, et une deuxième partie (à droite dans cet exemple) comportant par exemple un menu déroulant, avec des informations relatives aux divers objets ou 30 produits sur lesquels une impression doit être réalisée. On voit sur la figure 3B que l'utilisateur 10 sélectionne ici le champ correspondant, dans la deuxième partie, à un premier type de produit, des bouteilles de lait de 2 litres dans cet exemple, mais que lui sont offertes d'autres possibili.és, pour un deuxième type de produit, ou un troisième type de produit,..., par exemple ici des bouteilles de lait de 1 litre ou des œufs. Dans la partie gauche, on voit un message qui comporte des blocs (on utilise aussi, dans la 10 suite, le terme « champ ») avec des caractères de différentes tailles, une seule taille par bloc de caractères. Plus particulièrement, l'information indiquée ici comporte quatre blocs, disposés l'un au-dessus des autres, et comportant respectivement : - pour le bloc supérieur, une information de type texte : « BEST BEFORE», - pour le deuxième bloc, une date : 01/10, - pour le troisième bloc, un code de machine: SCR190, - pour le quatrième bloc, une heure: 11:07. On voit sur cet exemple que le bloc supérieur a une première taille de caractères, inférieure à la taille des caractères du deuxième bloc, mais supérieure à la taille des caractères des 25 troisième et quatrième blocs. Un certain nombre d'icones 280 sont présentées à l'utilisateur lorsque l'image de la figure 3E lui apparait. L'une de ces icones lui permet de faire apparaître uniquement le champ comportant 30 l'information à imprimer, c'est l'exemple de la figure 3C. Sur cet écran, est également indiquée l'information 15 20 d'agrandissement par rapport à la taille réelle de l'information, telle qu'elle sera imprimée. Là encore, divers boutons peuvent être offerts à l'utilisateur, :dont des boutons 281 permettant de procéder à l'impression, et un bouton 2812 permettant de mémoriser un message qui vient d'être conçu ou modifié. La modification d'un message est réalisée bloc par bloc, par exemple successivement pour chacun des quatre blocs qui ont été présentés dans cet exemple. Pour la modification d'un bloc, un curseur est positionné à une extrémité du bloc correspondant, et ce curseur permet de démarrer une inscription dans ce bloc. Comme on l'a déjà indiqué ci-dessus, la taille des caractères peut être sélectionnée dans chaque bloc, indépendamment de la taille des caractères dans les autres blocs. Dans la suite, comme dans l'exemple ci-dessus, on prend l'exemple de blocs ou de champs qui sont tous de forme (de frontière) sensiblement rectangulaire. Mais d'autres formes peuvent être envisagées, avec une application adaptée des règles ci-dessous. À chacune de ses positions, chaque bloc délimite un sous-ensemble des pixels de l'écran. L'intersection de deux blocs dans un même écran est au plus égale à tout ou partie de deux côtés des deux blocs. Autrement dit, deux blocs peuvent avoir au moins une partie d'un côté en commun, et au plus un côté en commun, mais ne peuvent pas se chevaucher, c'est-à-dire ne peuvent pas avoir en commun des pixels strictement compris à l'intérieur de leurs frontières respectives. Les figures 4A et 4B représentent une particularité d'un dispositif de visualisation selon l'invention, en effet un tel dispositif permet de déplacer manuellement un bloc d'information sur l'écran qui est présenté à l'utilisateur. Ainsi, il est possible de faire glisser un champ à l'aide du doigt de l'utilisateur jusqu'à un endroit souhaité pour un déplacement approximatif, avec effet « magnétique » dans la partie dans laquelle le champ est déplacé. Par cet effet, la base inférieure du bloc déplacé est « attirée » par la ligne de référence la plus proche, par exemple celle située en dessous. En variante, il est possible d'appuyer sur le bloc sélectionné, et de le faire se déplacer à l'aide de curseurs 30-33 disposés autour de l'écran (voir la figure 4B). Les commandes, élaborées ou envoyées à partir d'un écran tel que l'écran 2, sont reçues par les moyens électroniques 14, qui, ensuite, envoient aux divers éléments constitutifs de la tête 10 les commandes nécessaires pour piloter l'impression. Toutes les propriétés ou règles qui vont être expliquées ci-dessous peuvent être mises en œuvre par programmation des moyens électroniques 14. Pour mettre en ouvre la flexibilité de conception et de modification des informations à imprimer qui a été indiquée ci-dessus, un certain nombre de règles relatives au mouvement des blocs, et/ou au positionnement du curseur, et/ou au déplacement de celui-ci dans les blocs, et/ou au mouvement des blocs les uns par rapport aux autre, ont été développées. Ces règles vont être présentées en liaison avec les figures 5 à 20H. Comme on le voit sur la figure 5, la conception et l'évolution des blocs est facilitée si l'on utilise des lignes 34, parallèles entre elles, et qui sont présentées à l'utilisateur lors de l'édition d'un message. Dans la plupart des cas, les messages sont créés en alignant des caractères sur ces lignes. De préférence, l'écart vertical entre deux lignes voisines est le même, quelles que soient les lignes voisines considérées. Mais, dans certains cas, on peut être amené à configurer l'écran de manière à présenter des lignes écartées de manière irrégulière, c'est-à-dire que l'écartement entre deux lignes d'un couple de lignes voisines est différent de l'écartement entre deux lignes d'un autre couple de lignes voisines. En vue de la conception d'un message, un curseur 35 est présenté à l'utilisateur, comme illustré en figure 5 où la référence 34 désigne un ensemble de lignes présentées à l'utilisateur. Ce curseur peut se déplacer horizontalement par pas, on a représenté sur la figure 5 cinq positions de curseur, chaque position étant obtenue par déplacement du curseur vers la droite, à partir de sa position précédente, du déplacement minimum, c'est-à-dire d'un pas. Le même déplacement est possible vers la gauche. Les figures 6A-20H présentent comment un curseur est positionné par rapport à un bloc d'informations, et comment les blocs peuvent être déplacés les uns par rapport aux autres. Des exemples de ces blocs ont déjà été donnés ci-dessus, en liaison avec les figures 3A-4B. Dans chaque bloc, un utilisateur peut écrire une information qui fera partie d'un ensemble d'informations à imprimer ultérieurement. On suppose que l'écriture se fait, dans chaque bloc, de la gauche vers la droite. Cependant, l'invention couvre aussi le cas de l'application à des langues dans lesquelles on écrit de la droite vers la gauche, ou de haut en bas ou encore le cas on intervertit l'horizontale et la verticale. Un dispositif selon l'invention peut présenter une ou plusieurs des propriétés suivantes A - L. A. On présente en figure 6A la position d'un bloc 40, qui est appuyé sur la ligne inférieure de l'ensemble 34 de quatre lignes. Un curseur 35 est également présent sur l'écran. Si une partie quelconque du curseur vient en contact (c'est-à-dire qu'une des extrémités du curseur vient toucher le haut ou le bas du bloc) du bloc 40, alors le curseur est automatiquement positionné en position verticale, sur un des côtés du bloc, et prend une hauteur égale à celle du côté du bloc sur lequel il est positionné. Ainsi, on voit sur la figure 6A que le curseur a une première hauteur égale à la séparation entre deux lignes horizontales voisines, tandis, que, dans la position de la figure 6B, il a une deuxième hauteur, différente de la première hauteur et égale à la hauteur du bloc 40 contre lequel il a été amené. Cette hauteur a donc varié lorsque le curseur est passé de la position de la figure 6A à la position de la figure 6B. B. II est possible de prévoir que, lorsque le curseur entre en contact avec deux blocs simultanément, alors le curseur est positionné en contact avec l'un seulement de ces blocs, par exemple, parmi ces deux blocs, le bloc inférieur ou supérieur sur l'écran. Ainsi, sur la figure 6C, le curseur 35, qui a cette fois une hauteur égale à la distance entre deux lignes séparées par une ligne intermédiaire du champ de lignes 34, va entrer en contact avec les deux blocs 40, 40' ; en figure GD, le curseur 35 est amené en position contre le côté du bloc 40 inférieur uniquement. Il prend alors une hauteur égale à la hauteur du côté de ce bloc inférieur. Selon un autre mode de réalisation, il vient en contact avec le bloc supérieur 40' sur l'écran. C. Comme indiqué en figures 7A et 7B, si un curseur placé à une première extrémité (gauche ou droite) d'un bloc est déplacé à la deuxième extrémité (respectivement droite ou gauche) du même bloc, il est positionné automatiquement à cette deuxième extrémité, et il maintient la taille qu'il avait antérieurement, en position contre la première extrémité du même bloc. D. Les figures 8A-8D illustrent une autre situation, dans laquelle un curseur est situé sur une première extrémité d'un bloc (ici une extrémité gauche droite d'un bloc 40'), et sa hauteur ne correspond pas à la hauteur de cette extrémité. Dans ce cas, toute « traction », par l'opérateur à l'aide de son doigt, (ici, vers la droite sur l'écran) en direction de ce bloc 40' modifie la taille de curseur pour l'adapter à la taille de ce bloc 40', mais ne déplace pas le curseur sur l'écran. C'est notamment le cas lorsqu'un curseur est situé, comme en figure 8A, entre deux blocs connexes 40, 40', qui sont de hauteurs différentes, ou si l'utilisateur a modifié la hauteur des caractères dans un bloc, et donc la hauteur de bloc, avant de déplacer le curseur. Ainsi, en figure 8A, le curseur 35 est tiré vers le bloc 40', et sa hauteur, dnitialement égale à la "hauteur du côté droit du bloc 40 devient égale à la hauteur du côté gauche du bloc 40'. De même, en figure 8C, un bloc 40 a une hauteur inférieure à celle du curseur 35 : une traction du curseur vers le bloc 40 ramène la hauteur du curseur à une hauteur égale à celle du bloc 40. E. D'une manière générale, il peut être prévu qu'un curseur maintienne sa position contre un bloc 40 (figure 9A) jusqu'à ce qu'un utilisateur déplace le curseur verticalement ou latéralement (cas de la figure 9B), ou que le curseur 35 soit déplacé vers une position 35'. F. Au début de chaque ligne, un curseur 35 se positionne comme eu début d'un bloc. En particulier, lorsque le curseur est positionné sur une extrémité d'une ligne, il prend la taille définie par la distance de cette ligne et de la ligne immédiatement voisine, et il est positionné à cette extrémité. Ainsi, en figure 10A, le curseur 35, qui chevauche les deux lignes du haut de la figure, est tiré vers la gauche par l'utilisateur, et est ensuite amené automatiquement sur les deuxième et troisième lignes : sa hauteur passe de la distance entre les deux lignes du haut à une distance entre la deuxième et la troisième ligne à partir du haut. G. Lorsqu'un curseur est déplacé verticalement, il se positionne de manière à aligner sa base (ou partie inférieure) avec celle de la ligne vers laquelle il est déplacé, tout en conservant la même hauteur. Une fois que la position verticale est maintenue, le curseur:se déplace vers la gauche jusqu'à ce qu'il rencontre un bloc, ou l'extrémité gauche de la ligne. Ainsi, en figures 11A et 11B, un curseur est d'abord déplacé verticalement (figure 11A), de bas en haut, et son extrémité inférieure est positionnée sur la deuxième ligne à partir du bas. Il est alors automatiquement amené vers l'extrémité gauche de la ligne (cas de la figure 11B) puisqu'il ne va rencontrer aucun bloc. Par contre, dans la situation des figures 11C et 11D, il va, lors de son déplacement vers la gauche, après que sa base ait été positionnée verticalement sur la deuxième ligne, rencontrer un bloc 40, et se positionner par conséquent, automatiquement, à l'extrémité droite de ce bloc. Pour le faire changer de taille, on le tire comme en figures 8C/8D. H. Lorsqu'il n'est pas possible de positionner un curseur sur une ligne, du fait de la présence d'un bloc, alors le curseur est déplacé sur le côté (droite ou gauche) le plus proche de ce bloc, dont il prend la hauteur. Ainsi, en figure 12A, on voit un curseur 35 qui est déplacé verticalement par l'utilisateur vers la deuxième ligne, alors que la partie inférieure d'un bloc 40, déjà positionnée sur la troisième ligne, est proche de la deuxième ligne. Automatiquement, le curseur 35 est attiré vers le côté gauche de ce bloc 40 (car, sur cette figure, c'est le côté gauche du bloc 40 qui est le plus proche de la nouvelle position du curseur 35 après que celui-ci ait été déplacé verticalement) et la hauteur du curseur devient égale à la hauteur latérale du bloc 40 (figure 1.28). Si cela n'est pas possible parce que l'extrémité supérieure (respectivement inférieure) du champ de définition de l'information (ou de l'écran) est atteinte par la partie supérieure (respectivement inférieure) du curseur, alors le curseur ne peut tout simplement pas être déplacé et est ramené dans sa position antérieure. De préférence, l'écran utilisé est un écran tactile (on verra plus loin, en liaison avec la figure 47, il est également possible d'utiliser d'autres types d'écran). On va donc définir les règles de positionnement du doigt d'un utilisateur sur cet écran. On considère donc, sur les figures 13A-15D, qu'_un cercle 50 représente l'extrémité du doigt d'un utilisateur sur l'écran. 1. Lorsque l'extrémité du doigt d'un utilisateur recouvre une extrémité gauche ou droite d'un bloc, alors cette extrémité est considérée comme étant l'endroit auquel le curseur doit être positionné automatiquement, en adaptant sa hauteur et sa position verticale â celle de l'extrémité de ce bloc. Ainsi, en figure 13A, on voit le positionnement 50 de l'extrémité du doigt de l'utilisateur, en bas et à gauche d'un bloc 40, ce qui (figure l3B) attire immédiatement le curseur 35 en position sur l'extrémité gauche ou le côté gauche de ce bloc, avec une hauteur égale à celle du bloc. J. Dans les autres cas, lorsque l'extrémité du doigt ne rencontre pas de bloc d'information, alors la position 50 détermine la position horizontale du curseur, et une des -extrémités de celui-ci est positionnée sur la ligne horizontale la plus proche, avec une hauteur égale à la séparation d'avec la ligne immédiatement voisine de l'autre extrémité du curseur. C'est le cas des figures 14A et l4B. K. Si la présence d'un bloc empêche ce positionnement, alors le curseur est automatiquement positionné sur un des côtés du bloc, et sa hauteur devient égale à celle de ce côté du bloc. Ainsi, en figure I5A, le bloc 40 empêche le curseur 35 d'être positionné à la fois horizontalement par la position définie par l'extrémité 50 du doigt de l'utilisateur, et verticalement entre les deuxième et troisième lignes horizontales. Le curseur est donc automatiquement amené sur l'extrémité gauche du bloc 40, et sa hauteur devient égale à celle de cette extrémité gauche 20 (figure I5B). L. Lorsque le curseur est amené dans une position dans laquelle l'une de ses extrémités rencontre une extrémité du bord de l'écran ou du bord de champ 34 de lignes qui a été défini, alors sa 25 hauteur est adaptée de manière à rester dans le champ 34 de lignes dans l'écran. Ainsi, en figure l5C, l'extrémité 50 du doigt de l'utilisateur est positionnée entre les première et deuxième lignes supérieures du champ d'écriture 34, le curseur 35 est 30 amené dans cette position, mais sa taille est réduite de manière à pouvoir s'insérer entre les première et deuxième lignes supérieures (figure 15D). Un dispositif selon l'invention comporte de préférence -des moyens de positionnement _des blocs, de manière à pouvoir gérer ou déplacer ceux-ci comme des caractères dans un texte utilisé dans un traitement de texte courant. Pour diverses raisons, la dimension (verticale et/ou horizontale) d'un bloc peut varier au cours de la conception d'informations à imprimer sur des objets. En particulier, la hauteur des caractères inscrits dans ce bloc peut être modifiée et/ou des caractères peuvent être ajoutés dans un bloc, ce qui e pour conséquence d'augmenter la taille, par exemple horizontalement, de ce bloc. Selon l'invention, chacun des blocs voisins conserve ses caractéristiques internes propres (la taille des caractères qui y sont inscrits n'est pas modifiée, pas plus que la longueur de la chaîne de caractères qui est inscrite) mais la position de ces blocs voisins est réorganisée, de manière à tenir compte des nouvelles caractéristiques du bloc précédent. On nomme les règles énoncées ci-dessous par les lettres M- R. Un dispositif selon l'invention peut présenter une ou plusieurs de ces propriétés. M. Les figures 16A et 16B donnent un premier exemple de repositionnement des blocs. Sur la figure 16A sont positionnés quatre blocs 40, 40A, 40B, 40C, dont l'un d'entre eux, le bloc 40, va être supprimé. Initialement il est positionné entre les deux blocs 40A et 40B, son côté gauche étant en contact avec le côté droit du bloc 40A, et son côté droit étant en contact avec le côté gauche du bloc 40B. La suppression du bloc 40 entraîne un repositionnement du bloc 40B vers la gauche, _jusqu'à ce qu'il vienne en appui contre le bloc 40C. Il serait venu en appui contre le côté droit du bloc 40A s'il ne rencontrait pas le bord droit du bloc 400 dans son déplacement vers la gauche. Une règle illustrée par cet exemple, est que si le côté gauche d'un premier bloc touche le côté _0 droit d'un deuxième bloc, une suppression de ce deuxième bloc tire ou déplace le premier bloc vers la gauche. Une règle similaire ou symétrique peut être élaborée pour un premier bloc dont le côté droit touche 15 le côté gauche d'un deuxième bloc: une suppression de ce deuxième bloc tire ou déplace également le premier bloc vers la ,droite. Les figures 16C et 16D représentent une autre illustration de cette règle. La suppression du 20 bloc 40 entraîne le repositionnement de deux blocs, le bloc 40A et le bloc 40B, le plus possible vers la gauche, de manière à venir en contact avec le bord gauche du champ de l'image, ou de manière à venir en contact avec le bord droit du bloc 40C. Les deux blocs 25 40A et 40B ont donc été déplacés vers la gauche, mais en fait le côté gauche du bloc 40B vient en contact avec le bord droit du bloc 40C, du fait de la présence de ce dernier. N. Les figures 16E et 16F représentent la 30 situation du positionnement d'un nouveau bloc 40 parmi un ensemble de blocs 40A-40Û déjà présents sur l'image. Ce bloc 40 est inséré à droite du bloc 40C, là, où initialement, était positionné un curseur 35 entre le bloc 40C et 40D. L'insertion du bloc 40 conduit à déplacer le bloc 40D vers la droite, le bord gauche du r a bloc 40 étant en contact avec le bord droit du bloc 40C et le bord droit du bloc 40 venant en contact avec le bord gauche du bloc 40D. Le bloc 40B n'est pas affecté par le positionnement du nouveau bloc 40, son côté gauche reste en contact avec le côté droit du bloc 400. i0 Un bloc ou un ensemble de blocs peut également être déplacé en translation, horizontale et/ou verticale, ce qui a pour conséquence de déplacer en translation d'autres blocs. Un déplacement d'un bloc est effectué par déplacement de l'extrémité d'un doigt 15 d'un utilisateur, positionné sur ce bloc (cas d'un écran tactile), ou par déplacement d'un curseur mobile positionné sur ce même bloc (cas d'un écran tel que celui de la figure 47). O. Ainsi, en figure 17A et ?7B, un bloc 40, 20 dont le côté gauche est en contact avec le côté droit du bloc 40A et dont le côté droit est en contact avec les côtés gauches, respectivement des blocs 40B et 400, est déplacé vers la droite, en utilisant des boutons 30 -- 33 appropriés sur l'écran (voir écran de la figure 4B 25 par exemple). Le déplacement en translation horizontale, vers la droite, du bloc 40, a pour conséquence un même déplacement en translation horizontale vers la droite, de la même amplitude, des blocs 40B et 40C. On retrouve, en figure 17E, après 30 déplacement du bloc 40, un groupement de blocs 40, 40B, 400 qui a la même disposition qu'avant le déplacement tvoir la figure 17A) mais qui se trouve déplacé vers la droite. P. En figure 17C et 17B, on déplace en translation horizontale un bloc 40, dont. les côtés respectivement gauche et droit touchent respectivement les côtés respectivement droit et gauche des blocs 40A et 40D, vers la gauche, jusqu'à ce que le bloc 40A vienne en contact, par son côté gauche, avec le côté droit d'un bloc 40C. L'ensemble 40, 40A, 40D subit un déplacement en translation horizontale vers la gauche, ce qui n'affecte pas la position d'un bloc 40B, qui n'était initialement en contact avec aucun des blocs déplacés, et qui ne se trouvait pas sur la trajectoire de ceux-ci. Là encore, la disposition relative des blocs 40A, 40, 40D, n'est pas modifiée par le déplacement. Seul leur positionnement par rapport aux autres blocs est modifié. Sur cet exemple, on voit qu'un bloc, tel que le bloc 40D, est tiré vers la gauche avec le bloc en contact sur sa gauche avec lui. Plus généralement si un bloc est déplacé horizontalement vers la gauche, il « tire » avec lui les blocs qui le contactent sur son côté droit. Dans une variante, on pourrait élaborer la règle symétrique, selon laquelle si un bloc est déplacé horizontalement vers la droite, il « tire » avec lui les blocs qui le contactent sur son côté gauche. On remarquera la différence de comportement entre les deux situations, celle des figures 17A et 17B d'une part, et celle des figures 17C et 17D d'autre part: en figures 17A/B, le bloc 40 pousse 40B et 40C, mais ne tire pas 40A, tandis qu'en 17C/D le bloc 40 pousse 40A et tire 40D. Cela est lié au fait que le dispositif décrit ici est adapté à une édition de gauche à droite. Donc on configure le système pour qu'il cherche en permanence à caler à gauche les blocs déplacés. On. peut dire qu'il y a un effet magnétique vers la gauche qui n'est pas symétrique. Q. En figures 17E et 17F on descend verticalement un bloc 40, initialement compris entre un bloc 40A et 40B et en contact avec ceux-ci par ses côtés gauche et droit. Le bloc 40 était également en contact avec un bloc 40C, situé en dessous du bloc 40, mais également en contact, par son côté gauche, avec le côté droit du bloc 40A. Lorsque le bloc 40C ne peut plus être en contact avec le côté droit du bloc 40A, il vient en positionnement sur le côté gauche de l'image, sous le bloc 40A, les deux blocs 40A et 40C étant en contact respectivement par leurs parties inférieures et supérieures. La position des autres blocs de l'image n'est pas modifiée. R. le déplacement d'un curseur 35 dans un ensemble de blocs 40,40, 40,40 peut obéir à la règle illustrée en figures 18A-18D. Lorsque l'extrémité 50 du doigt de l'utilisateur est dans 11 un bloc 40B, le curseur est 25 positionné initialement à l'extrémité gauche de ce bloc, comme illustrée en figure 188. Lorsque l'extrémité 50 du doigt de l'utilisateur se déplace vers un autre bloc, par exemple le bloc 40 (voir figure 18B), le curseur 35 30 vient se positionner, là encore, à l'extrémité gauche du bloc 40 qui vient d'être atteint par le doigt de l'utilisateur. Pour que le curseur prenne une hauteur égale à la hauteur du côté gauche du bloc 40, il faut encore, conformément à ce qui a été déjà expliqué ci-dessus (voir les: explications données en liaison avec les figures 8A - 8D), une légère traction du doigt ou un léger déplacement du doigt. Si l'extrémité 50 du doigt de l'utilisateur vient dans une zone de l'écran qui n'est occupé par aucun blocs (c'est le cas des figures 18C et 18D), alors ce sont les règles déjà expliquées ci-dessus qui s'appliquent. L'espacement entre des blocs peut être obtenu de deux manières, explicitement ou implicitement. L'espacement explicite est illustré en figure 19A, où un champ d'espacement 400 est inséré entre, à gauche, un bloc 40A et, à droite, deux blocs 40B et 40C. Un tel bloc d'espacement se comporte comme n'importe quel autre bloc, et est présenté visuellement à l'utilisateur de manière à ce que celui-ci puisse effectuer des opérations sur ce bloc 400, par exemple changer sa largeur. Un placement implicite se produit lorsque l'utilisateur crée un bloc sans contact avec d'autres blocs, ou déplace un bloc existant, vers la droite par exemple. Dans les deux cas, l'espace créé est créé implicitement. L'utilisateur verra un espace vide, et non pas un bloc vide 400 comme ce serait le cas dans le cas de la création d'un bloc d'espacement tel que le bloc 400 de la figure 19A. Ainsi, en figures 19E - 19C, un ensemble de blocs 40, 40B, 40C est déplacé vers la droite, comme déjà expliqué ci-dessus, ce qui crée un espace vide 400' entre le côté droit du bloc 40A et le côté gauche du bloc 40. Cet espacement permet de ne pas tirer l'ensemble 40-405-40C vers la gauche, à la différence de la règle déjà explicitée ci-dessus, selon laquelle tous les blocs qui touchent un bloc vers la gauche sont tirés vers la gauche jusqu'à ce qu'ils touchent un autre bloc. Les figures 20A-20H y illustrent diverses situations qui vont être rapidement décrites ci-dessous. En figure 20A, un bloc 40, dont le côté droit touche le côté gauche d'un bloc 40B, est déplacé vers le bas. Seule la position relative de ces deux blocs 40, 40B est affectée, le bloc 40A n'étant pas affecté par ce déplacement. Le bloc 40B lui-même ne bouge pas, seul le bloc 40 est déplacé par rapport à lui. En figure 20C, on déplace vers la gauche un bloc 40, dont le côté droit touche le côté gauche d'un bloc 40B. L'ensemble 40-40B est donc déplacé vers la gauche, et se rapproche du bloc 40A dont la position n'est pas affectée par cette opération (figure 20D). En figure 20E, on déplace vers la gauche un ensemble de bloc 40-40C, similaire à l'ensemble 40-40B des figures 20C et 20D. Ni le bloc 40A ni le bloc 40B ne sont affectés par cette opération. Le bloc 40A voit l'ensemble 40-40C se rapprocher de lui, tandis que ce dernier s'éloigne du bloc 40B. Le bloc 40C est tiré vers la gauche avec le bloc 40, en application de la règle indiquée ci-dessus (si un bloc est déplacé horizontalement vers la gauche, i{ « tire » avec lui les blocs qui le contactent sur son côté droit). En figura 20G, on tire vers le bas un bloc 40, dont le côté gauche est en contact avec le côté droit d'un bloc 40', le côté gauche de ce dernier contactant le côté droit d'un bloc 40A. Le bloc 40, déplacé vers le bas, est positionné contre le côté droit du bloc 40A dès lors que son côté gauche ne contacte plus le côté droit du bloc 40'. Il est donc tiré vers la gauche. L'ensemble 40B-40C n'est, lui, pas affecté par cette opération, puisque qu'il n'était en contact avec aucun des autres blocs (voir figure 20H). Les règles énoncées ci-dessus peuvent être programmées dans les moyens électroniques 14 d'un dispositif d'impression selon l'invention. On décrit maintenant des éléments logiciels pour la mise en oeuvre des règles ci-dessus, en particulier pour le mouvement des curseurs et des blocs. A cette fin, on définit une classe dite Clams ILI9032MessageField4« bloc message »), qui stocke les propriétés d'un bloc d'informations. Ces propriétés sont les suivantes : Rectangle fieldPosRectangle image fieldlmage FontCIJ fontSelectedForEield Int fieldBolderization Int nFID NEP.Msg.BlockData fieldData On définit ensuite une classe Class IUI9032MessageCursor (« curseur de message »), qui stocke les propriétés du curseur courant. Ces propriétés sont les suivantes . int currentCursorHeight Point currentCursorPosition On définit également une classe Class IUI9032MessageEdition (« édition de message »), qui facilite le mouvement et l'affichage des blocs en considérant les règles de mouvements des blocs de messages, tels qu'expliquées ci-dessus, et notamment pour l'insertion d'un bloc, la suppression d'un bloc, le déplacement d'un bloc par l'utilisateur et la modification d'un bloc. Cette classe gère également le mouvement du curseur, sur la base .de sa position courante et de la position des blocs de messages. Les propriétés en sont : Int..resolution MessageCursor...editorCursor ArraryList of MessageField lise Methods: MoveCursorHorizontallyByRaster MoveCursorVerticallyByRaster MoveCursorToThumbPosition (Point positionToMove) InsertField (MessageField) DeleteField MoveField Cette classe permet à l'éditeur de déplacer les blocs et le curseur de différentes manières, comme déjà expliqué ci-dessus. Cette classe permet de mettre à jour la position d'un bloc d'informations, ce que l'éditeur utilise pour afficher, de manière correcte, la nouvelle position d'un bloc. Les étapes pour l'insertion d'un bloc ou d'un champ sont les suivantes: Create the Message field abject. Get the height and width of the message field. Get the current cursor position. Set the position of the current field. Loop through the List of field and check 15 for overlapping and move the overlapping field. On décrit maintenant les interactions des classes de message IU19032 avec le sous système NEP. L'interaction de la classe 20 IUI9032MessageField avec le NEP est limitée à contenir NEP.Msg.BlockData. Différents scénarios d'interaction sont décrits ci-dessous. Au départ, l'éditeur utilise NEP.message puis crée la classe édition--message et fait des 25 itérations dans NEP.Msg/block/field pour obtenir chaque champ objet et créer un « bloc-message » pour chaque bloc de données. Lorsque l'utilisateur insère un bloc au message, l'éditeur crée un objet de « bloc-message » et 30 de « bloc de données NEP » (ce bloc est basé sur le type, par exemple compteur, texte statique, données horaires, tels que décrits plus loin). L'éditeur affecte les données NEP au bloc-messages et ajoute la liste des objets de la classe Edition messages. Lors du mouvement d'un bloc par pixels, les données d'informations sont stockées dans la classe IUI9032MessageField comme indiqué ci-dessous : Rectangle fieldPosRectangle Image fieldlmage FontCIJ fontSelectedForField int fieldBolderization int nFID NEP.Msg.BlockData fieldData On explique maintenant comment est réalisée la liaison des données des blocs-messages. Afin de gérer le déplacement des blocs au moyen des algorithmes décrits ci-après on définit 4 tableaux nommés « multimap » dans lesquels on mémorise 20 un champ x1, x2, y1, y2 qui a l'allure d'un rectangle comme illustré en figure 21, de sommets (X1, Y2), (XI, Yl), (X2, Y2), (X2, Y1). 1> Pour le premier tableau les couples (xl, 25 FID) où xl est la coordonnée du bloc défini selon la figure 21 et FID le numéro du bloc de données message géré par l'éditeur, le tableau est ordonné selon les xl ascendants. On note que 2 blocs peuvent avoir la même valeur de xl. Pour accéder au bloc de données NEP à 30 partir du bloc de données message un dictionnaire est créé, voir le point 5 2> Pour le premier tableau les couples (x2, FID) où x2 est la coordonnée du bloc défini selon la figure 21 et FID le numéro du bloc de données message géré par l'éditeur, le tableau est ordonné selon les x2 ascendants. On note que 2 blocs peuvent avoir la même valeur de x2. Pour accéder au bloc de données NEP à partir du bloc de données message ur dictionnaire est créé, voir le point 5 Pour le premier tableau les couples (yl, F1D) où yl est la coordonnée du bloc défini selon la figure 21 et FID le numéro du bloc de données message géré par l'éditeur, le tableau est ordonné selon les yl ascendants. On note que 2 blocs peuvent avoir la même valeur de yl. Pour accéder au bloc de données NEP à partir du bloc de données message un dictionnaire est créé, voir le point 5 Pour le premier tableau les couples (y2, FID) où y2 est la coordonnée du bloc défini selon la figure 21 et FID le numéro du bloc de données message géré par l'éditeur, le tableau est ordonné selon les y2 ascendants. On note que 2 blocs peuvent avoir la même valeur de y2. Pour accéder au bloc de données NEP à partir du bloc de données message un dictionnaire est créé, voir le 5 Un dictionnaire est créé afin d'établir la relation entre la référence unique du bloc de données message et la structure du bloc de données NEP. Des algorithmes de déplacement des blocs 30 peuvent être les suivants : Algorithme pour déplacer un bloc d'un pixel vers la droite MoveRightByOnePixel (nFID) { Get the current position of the field (Rect) Update the position nNextXlPos = nX2Pos + 1 Find key nNextXlPos in muiti map 1 (Find the field which is touching it) if (nNextXi.Pos Pound) I/Any field is touching Need to move that too f Get y l and y2 position of current block using nFID and map it to dictionary For each element having the sarne x position { Check for any y position is coinciding with current block% y position If (coinciding) Get x2 position of current key element MoveRightByOnePixel(nFID of current key element) Cali this fonction recursively till no fields are touching. } } } Move the block by one pixel get new xl and x2 position. Update the maps with the new position 2 5 Update dictionary using nFID for current field. Algorithme pour déplacer un bloc d'un pixel vers la gauche On peut d'abord s'assurer de ce qu'un 30 mouvement vers la gauche, d'un pixel, est possible ou non. Pour procéder à cette vérification, l'algorithme suivant peut être utile . Bool IsLeftMovePossible (int nXlPosition, int nFID) r { int nX2Prev = nXlPosition -- 1; If (nX2Prev 15 retum; Move the block to left by one dot. Store current xl and x2 position Calculate new xl and x2 for new positions 2 0 delete current element front multi map 1 and 2 Add current element based on new xl and x2 in rnultimap 1 and 2 Modify in dictionary for the muent element with new xl and x2 position nXlNextPixel = previous x2 (before moving 1 pixel left) of current element + I 2 5 IiTo move ail the fields touching the current field in the right Finding in multi map I with n) lNextPixel as key if (found) { for Bach element in that key 30 { if y position is coinsiding with current one r MoveLeftByDot(nFID of current key ciment) 3 35 7 } } 40 Algorithme pour déplacer un bloc d'un pixel vers le bas On peut d'abord s'assurer de ce qu'un mouvement vers le bas, d'un pixel, est possible ou non. Pour procéder à cette vérification, l'algorithme suivant peut être utile: bool IsDownMovementPossibleByPixel.( nY 1. Position, nFID) { nY2NextPos = nY IPosition - 1 if (nY2NextPos for each element in the key { Check for x position is coinciding or not if (x position coinciding) from nFID get yl from dictionary bool bRet = IsDownMovelnentPossible (yl position of current key element, nFID of current key element) if bRet == false return fasse s' } retu.rn tn. e Si l'algorithme précédent donne un résultat positif, il peut être procédé à la mise en œuvre de l'algorithme de descente suivant: 3 0 MoveDownByPixel ( nY 1 Position, nFID ) nY2NextPos = nY 1 Position -1 fend key nY2NextPos in mufti map 4 if (found) 35 f for each element in the key { check for x position is coinciding or not if x position coincided 40 s from nFID get yl from dictionary MoveDownBypixel ( yl position of the current element, nFID of current 25 field) 39 } M.ove current element clown by l pixel and calculate new yl and y2 position Delete current element from multi map 3 and 4 based on its previous yl and y2 Add in multi map 3 and 4 based on current yl and y2 update in dictionary for current element bool bRetVal IsAnyRightBlockPresent (yl position of curent element, nFID of current element) if (!bretVal) MoveBlockuntilLeftReached( xl of current element, nFID of current element) } L'algorithme pour détecter la présence d'un bloc est le suivant : bool IsAnyRightBlockPresent( nYlPosition, nFID) { 2 0 from nFID get xl of current block nNextlndex = get current index of x l in multimap I + 1 (nNextlndex is the index of next element in multi map 1) for (nlndex = nNextlndex; nln.dex û 0; nlnd.ex--) C for each element in the current nlndex the itém. in mufti map 2 { check for y position of current element is coincidimg or not if (found) nDistanceToMove = x2 of current element of nlndex th item in mufti map xl of current element break } } } if nDistanceToMove -1 nove the block to 0 th position 2 0 else move the current block by nDistanceToMove left Delete current element from multi map 1 and 2 based on their xl and x2 position -Add current element in multi map 1 and 2 2 5 Update in dictionary } Algorithme pour déplacer un bloc d'un pixel vers le haut 30 On peut d'abord s'assurer de ce qu'un mouvement vers le haut, d'un pixel, est possible ou non. Pour procéder à cette vérification, l'algorithme suivant peut être utile: 3 5 bool IsUpMovementPossibleByPixel ( nY2Position, nFID ) { nYlNextPosition = nY2Position + 1 if ( nY lNextPosition > EditorHeight) return false 40 find key nYlNext position in m.ulti map 3 if (found) for each element in the key 10 15 2- { check for x position is coinciding or not if x position nnatched return false return true { Si l'algorithme précédent donne un résultat 10 positif, il peut être procédé à la mise en œuvre de l'algorithme de montée suivant: MoveUpByPixel ( nY2Position, nFID ) { 15 if (! IsUpMovementPossibleByPixel(nY2Position, nFTD )) return take current xl, x2, y1 position using nFID from dictionary move block up by 1 pixel and calculate new yl and y2 delete current element fionn mufti map 3 and 4 2 0 add current key based on new yl, y2 position in mufti map 3 and 4 update in dictionary bool bRetVal = IsAnyRightBlockPresent( current yl position, current nFID) if ( !bRetVal ) 2 5 MoveBlockUntilL,eftReached( xl of current element, nFID of Current etement) nNextY2 = y] value of current element before modification -1 fend in multimap 4 for nNexty2 key 3 0 if (found) { for each element in that key { check for x position in coinciding or not r MoveUpByPixel( y2 position of current key element, nFID of current key element) s 1 Les moyens électroniques 14 d'un dispositif selon l'invention, par exemple un microprocesseur, sont 35 40 programmés pour mettre en œuvre une ou plusieurs des règles ci-dessus ou un ou plusieurs des algorithmes ci-dessus, que ce soit directement sur l'imprimante (cas des figures lA - 1C) ou à distance (cas de la figure 47). On Va maintenant expliquer des exemples d'utilisation d'un dispositif selon l'invention. L'écran de la figure 22A est similaire à celui de la figure 3B et déjà décrit ci-dessus. Sur cet écran, le travail d'impression sélectionné 60 est surligné, par exemple en couleur, comme indiqué sur la figure 22A. En outre, un symbole 62 peut être positionné dans le champ correspondant, afin d'indiquer que ce travail est en cours d'impression pour un premier type de produit (dans cet exemple . des pommes). Ici, ce symbole est représenté par une succession de petites gouttelettes disposées verticalement, mais toute autre représentation est possible. Si l'utilisateur sélectionne un deuxième type de produit, en cliquant ou en sélectionnant un autre champ 64 dans la liste du menu déroulant de la droite de l'écran, alors l'impression correspondante à réaliser sur la matière sélectionnée apparait dans la partie gauche de l'écran (référence 66 sur la figure 22B). Si l'information affichée comporte des blocs qui peuvent être modifiés immédiatement par l'utilisateur, ceux-ci peuvent être indiqués, par exemple en étant surlignés d'une certaine couleur. C'est le cas des informations 66l et 662 en figure 22B). Lorsque l'utilisateur appuie sur le bouton 282 (« send to print » ou « envoi impression »), alors un écran du type de celui de la figure 22C apparait, qui demande une confirmation du souhait de l'utilisateur de modifier les champs modifiables avant impression sur la matière sélectionnée. Les réponse possibles de l'utilisateur sont « oui » ou « non ». La réponse « oui » permet d'accéder à la modification du message, la réponse « non » envoie en impression le message visualisé, sans modification de ce dernier. Si l'impression est en cours, apparaît alors un écran du IO type de la figure 22D, qui demande à l'utilisateur si l'impression en cours doit être arrêtée, et si il faut passer à l'impression des nouveaux produits sélectionnés. Là encore, l'utilisateur peut répondre, à l'aide de deux boutons, « oui » ou « non ». Si la 15 réponse « oui » est sélectionnée, le remplacement de l'impression en cours par une nouvelle impression est confirmé. Sinon, l'envoi en impression du message sélectionné est annulé. En cas de réponse positive, on arrive à l'écran de ïa figure 22E qui indique que le 20 nouveau travail à imprimer est chargé et est prêt à être imprimé. La modification d'un message peut consister à modifier, dans ce message, par exemple un texte et/ou une date et/ou une heure et/ou un compteur et/ou un 25 code à barres. On distingue entre une modification avancée et une modification simple : en effet, il est possible, dans un dispositif selon l'invention, d'autoriser l'accès à certains champs, et d'interdire l'accès à la 30 modification à d'autres champs, en fonction du profil de l'utilisateur et de l'importance de l'information correspondante. On peut donc distinguer entre deux niveaux d'édition ou de modification : - un niveau simple, qui permet une modification d'un premier type de champs et qui sécurise certains champs, ou champs d'un deuxième type de champs, - un niveau de modification avancée, qui 10 permet une modification du contenu et/ou du format de l'ensemble des champs. On explique d'abord le déroulement d'une modification de niveau simple. Partant d'un écran tel que celui de la 15 figure 23A, qui est identique, sauf pour le message affiché, à celui des figures 2 et 3A, déjà décrit ci-dessus, un utilisateur peut cliquer sur un bouton 282 (« modifier »} et faire apparaitre les parties modifiables du message affiché (figure 23B), par 20 exemple en surlignant ces parties modifiables d'une certaine couleur. L'utilisateur peut alors cliquer sur un des champs modifiables, par exemple le champ en format texte « BEST BEFORE» de la figure 23B. Il lui est présenté ensuite un écran tel 25 que celui de la figure 23C, qui va permettre d'entrer dans le détail des modifications. L'utilisateur peut alors taper le champ correspondant à l'aide du clavier 70 qui lui est présenté sur l'écran. Lorsque la modification est terminée, il peut cliquer sur un 30 bouton 285, afin de faire apparaître le texte modifié, comme en figure 23D, sur un écran similaire à celui de la figure 23B. les modifications peuvent être mémorisées en cliquant sur un bouton de mémorisation 2812. Le nom du produit concerné est ensuite affiché, sur un écran représenté en figure 23E et similaire à celui de la figure 23C : autrement dit, l'utilisateur peut alors modifier également le champ relatif au produit, à l'aide du clavier 70, et confirmer une éventuelle modification à l'aide d'un bouton 285 de confirmation. Au final, apparait un message de confirmation de la modification de la sélection réalisée (figure 23F). Si l'on souhaite modifier une date, par exemple une date de péremption, alors on clique ou on sélectionne la zone correspondant à la date, comme sur l'écran de la figure 24A, similaire à celui de .la figure 23B. Apparait alors un écran de modification de date, comme celui de la figure 24B, qui présente la date antérieure, et, par exemple, un nombre de jours ou de semaines ou de mois à ajouter. Les modifications réalisées apparaissent immédiatement dans la zone d'aperçu 68, et l'utilisateur peut confirmer la modification à l'aide d'un bouton 285. Le message à modifier apparait ensuite à l'écran, figure 24C, identique à l'écran initial de la figure 24A, mais avec les informations modifiées. Le même principe peut être appliqué lorsque l'on souhaite modifier un champ de type « compteur », auquel cas il peut être présenté à l'utilisateur un e écran, comme celui de la figure 24B, avec une zone d'aperçu 68' (figure 25), un bouton 290 permettant de remettre le compteur à sa valeur de départ, et un champ 291 permettant de remettre le compteur à une valeur souhaitée. Des exemples de modification d'un compteur sont donnés plus loin. Le bouton 285 est, là encore, utilisé pour confirmer la modification réalisée, le message complet modifié est ensuite présenté à l'utilisateur. On explique maintenant le déroulement d'une création ou d'une modification avancée. L'écran d'édition peut alterner entre deux - le mode « curseur » (cas de l'écran de la - le mode « champ » (cas de l'écran de la Quel que soit le mode, chaque écran e un 20 ensemble de boutons 80,90 (icônes 81 - 87 du mode de curseur, icônes 91 - 95 du mode d'écran). On passe du mode curseur au mode champ en appuyant sur un champ visible sur l'écran pour le sélectionner. 25 On passe du mode champ au mode curseur en appuyant sur la zone d'édition de l'écran en dehors des champs présents sur l'écran ou en appuyant sur un bouton 285. Le mode curseur est le mode par défaut 30 lorsqu'aucun champ n'est sélectionné (figure 26A). En mode curseur, un curseur 35, par exemple de couleur modes : figure 26A), figure 26B).15 rouge, clignote dans la zone d'édition et des flèches latérales 75, 75', 76, 76' (par exemple elles aussi de couleur rouge), sont présentes autour de la zone d'édition. Dans ce mode, une ou plusieurs des actions suivantes peuvent être possibles: - déplacer le curseur, - et/ou ajouter un champ, - et/ou définir le style de police d'un champ avant sa création, Pour déplacer le curseur 35, on peut procéder de deux manières : * appuyer sur la zone d'édition (figure 27A) à.'endroit souhaité pour un déplacement approximatif avec « magnétisme » sur les lignes repères, ou utiliser les flèches latérales 75, 75', 76, 76' pour un déplacement plus précis sur les lignes repères (figure 27B). Pour ajouter un champ à la position du curseur, on peut appuyer sur un des icones 81-87 en bas de l'écran pour ajouter le type de champ souhaité, par exemple le bouton 83 pour un champ de type texte, le bouton 84 pour un champ de type date, le bouton 85 pour un champ de type heure, tandis que le bouton 86 donne accès à d'autres champs 860 - 865 (voir figure 28B). Le nouveau champ apparaîtra à l'endroit du curseur. On peut définir le style de police d'un champ avant sa création. En mode curseur, le style de police appliqué à l'endroit du curseur apparaît dans le bord de l'écran, par exemple dans l'angle supérieur droit 77 de l'écran (figure 26A). Pour modifier la police, un bouton spécifique 82 est prévu. Lorsqu'on clique sur ce bouton, plusieurs boutons 820, 822, 823, chacun permettant d'ouvrir un menu déroulant pour un attribut de style donné, peuvent apparaître dans une partie de l'écran, â côté du message, par exemple: un bouton 820 pour la police, un bouton 822 pour la taille de la police, un bouton 823 pour la dilatation des 10 caractères. On peut modifier chaque attribut de style en sélectionnant parmi les possibilités offertes lorsqu'on déroule un menu à partir de chacun des boutons 820, 822, 823. 15 Les tailles de police disponibles dépendront du choix de la police. Une fois les modifications effectuées, on peut les valider en appuyant sur le bouton 285 prévu à cet effet. 20 Les modifications de style sont prises en compte à partir de l'endroit où est positionné le curseur 35 (figure 293). Le prochain champ créé aura le style de police nouvellement défini. 25 En mode champ (figure 26B), un champ sélectionné 40 peut être surligné, par exemple en bleu. Les flèches de déplacement 75, 75', 76, 76' autour de la zone d'édition ainsi que l'indication du style de police peuvent alors devenir de la même couleur, par 30 exemple bleus. Dans ce mode, on peut déplacer un champ et/ou effectuer les actions possibles suivantes : ® modifier le contenu d'un champ (à l'aide du bouton 94), e et/ou modifier le style de police d'un champ déjà créé (à l'aide du bouton 92), / et/ou supprimer un champ (à l'aide du bouton 93). Un champ peut être déplacé de deux manières : a) En faisant glisser le champ à l'aide du doigt jusqu'à l'endroit souhaité pour un déplacement approximatif avec magnétisme sur les lignes repères (cas de la figure 30A). b) ou en appuyant sur le champ pour le sélectionner, puis en utilisant les flèches 75, 75', 76, 76' pour un déplacement fin (cas de la figure 30B). Pour modifier le contenu d'un champ, on sélectionne le champ à modifier (bouton 94), puis on appuie sur un icône, par exemple en bas de l'écran, pour accéder à l'écran de modification. Une indication 78 du type du champ sélectionné apparaît, par exemple en bleu, sous l'indication 77 du style de police (figure 26B). Pour modifier le style de police d'un champ déjà créé, on appuie sur le champ concerné pour le sélectionner. Le style de police actuellement appliqué au champ sélectionné apparaît (77) dans le pourtour de l'écran, par exemple en bleu dans l'angle supérieur droit de l'écran. Pour modifier la police, un bouton spécifique 92 est prévu. Lorsqu'on clique sur ce bouton, plusieurs boutons 920, 922, 923 chacun permettant d'ouvrir un menu déroulant pour un attribut de style donné, peuvent apparaître dans une partie de l'écran, à côté du message (figure 31A), paf exemple: un bouton 920 pour la police, un bouton 922 pour la taille de la police, un bouton 923 pour la dilatation des caractères. On peut modifier chaque attribut de style en sélectionnant parmi les possibilités offertes lorsqu'on déroule un menu à partir de chacun des boutons 920, 922, 923. Les tailles de police disponibles dépendront du choix de la police. Les modifications de style apportées au champ apparaissent (voir figure 31B après réduction de la taille de la police). Une fois les modifications effectuées, on peut les valider en appuyant sur le bouton 285. Pour supprimer un champ, on appuie sur le champ concerné 40 pour le sélectionner (figure 32A). On appuie ensuite sur un bouton 93 pour supprimer le champ sélectionné. Le champ est alors supprimé. L'interface repasse ensuite en mode curseur : voir la figure 32B où le champ supprimé n'apparaît plus. Dans le reste du document, on définit un « job » comme un ensemble de champs contenant chacun une information à imprimer. Un « Job » peut d'ailleurs être compris comme équivalent à un message. La fonction de verrouillage et de déverrouillage d'un champ permet d'autoriser ou non la modification simple et sécurisée de certains champs sans affecter la composition globale du job. En modification avancée, certains champs peuvent être verrouillés ou déverrouillés. Le contenu des champs déverrouillés pourra être modifié en modification simple. On donne l'exemple de la figure 33 pour 10 le champ « Compteur »: - si le champ est déverrouillé, on appuie sur un bouton 100 pour verrouiller le champ, - si le champ est verrouillé, on appuie sur un autre bouton (non représenté sur la figure 33) 15 pour déverrouiller le même champ. Pour mettre en œuvre la fonction de modification d'un job, on sélectionne le job à modifier, et l'écran de modification simple apparaît. Pour plus de détails sur l'utilisation de cet écran, on 20 peut se reporter à ce qui été décrit ci-dessus en liaison avec les figures 3A - 3C (partie concernant la modification simple). A partir de l'écran de la figure 3E, et après sélection du bouton 2811, l'écran d'édition du job apparaît (figure 34), dont un ou 25 plusieurs champs peut ou peuvent être modifié(s), et/ou déplacé(s) et/ou supprimé(s). On ou plusieurs nouveaux champs peut ou peuvent être ajouté(s). Pour mettre en œuvre la fonction de création d'un job, on peut procéder de la manière 30 suivante. Un job est composé de champs de différents types. Chaque type de champ correspond à un type de donnée (texte, date, compteur, etc...). A pab ti r de l'écran principal (figures 3A et 3B), on appuie sur un bouton 2802, qui fait apparaître l'écran de sélection des jobs (figure 35A). Il lui est donc présenté ensuite un écran (similaire à celui de la figure 23C), qui va permettre d'entrer dans le détail des modifications. L'utilisateur peut alors taper le nom d'un nouveau job à l'aide du clavier 70 qui lui est présenté sur l'écran. Lorsque la cette étape est terminée, il peut cliquer sur un bouton 285, et un écran de paramétrage du job (figure 35B) apparaît. Un ou plusieurs champs 300, 302, 304 peuvent être prévus, pour sélectionner un ou plusieurs paramètres, par exemple la vitesse de défilement de l'objet et/ou un algorithme spécifique et/ou un certain nombre de lignes repères sur l'écran. Un champ ou un aperçu 305 permet de visualiser une taille de caractère sélectionnée à l'aide de l'un de champs 304. Lorsque ces champs 300, 302, 304 apparaissent, ils affichent de préférence les réglages préalablement rentrés dans les paramètres de job par défaut. On appuie sur un bouton 285 pour confirmer les réglages et entrer dans l'édition du job. Plus précisément, on peut, à l'aide de l'écran de la figure 35B, modifier les paramètres principaux d'un job. On peut ainsi: 0 Choisir la vitesse objet avec le bouton 300 de la figure 35B; la vitesse affichée initialement 30 définit la vitesse utilisée par défaut dans le job, cette vitesse peut être modifiée par l'utilisateur, par sélection dans le menu déroulant qui s'affiche lorsqu'il clique sur le champ 300 ; Par exemple, l'utilisateur peut avoir à choisir entre 284 m/s ou 300 m/s ou 320 m/s_etc. Choisir un algorithme (ce terme est utilisé ici pour décrire un ensemble de données d'impression permettant de calculer la tension à appliquer à chacune des gouttes à imprimer. Un tel algorithme contient les données d'impression permettant d' imprimer un job/message d'une hauteur maximale donnée à une vitesse d'impression maximale donnée) spécifique (en cliquant sur le bouton 302 de la figure 35B), auquel cas la vitesse objet maximale ne peut être modifiée ; l'algorithme affiché initialement définit l'algorithme utilisé par défaut dans le job, cet algorithme peut être modifié par l'utilisateur, par sélection dans le menu déroulant qui s'affiche lorsqu'il clique sur le champ 302; la figure 36 représente le menu qui est présenté à l'utilisateur lorsque celui-ci clique sur la sélection du bouton 302. 0 Choisir le nombre de lignes repères (en cliquant sur le bouton 304 de la figure 35B): le nombre de lignes repères affiché initialement définit la police utilisée par défaut dans le job, ce nombre peut être modifié par l'utilisateur, par sélection dans le menu déroulant qui s'affiche lorsqu'il clique sur le champ 304. Par exemple, l'utilisateur peut avoir à choisir entre 5, 7, 11, 16, 24 lignes repères. Le choix du nombre de lignes repères peut dépendre de l'algorithme ou de la vitesse choisis. Par exemple, en algorithme multi-ligne le nombre de lignes repères peut être imposé. L'écran,. d'édition apparaît (celui de la figure 27A). Le premier champ peut alors être créé, comme déjà expliqué ci-dessus. On peut modifier les paramètres d'un job. Ils sont accessibles par exemple par la sélection d'une succession d'icones depuis l'écran principal représenté en figures 2 et 3A - 3C, par exemple par sélection successive des icônes 281 (figure 3A), 2801 (figure 3B), 2813 (figure 3C). Un écran spécifique à l'ensemble des paramètres est alors affiché, comme illustre en figure 37A. Parmi les paramètres concernés, on peut avoir : - le sens de la tête d'impression, -- et/ou la vitesse de l'objet, - et/ou l'algorithme, - et/ou la mesure de la vitesse, - et/ou le type de déclenchement, - et/ou le mode de déclenchement, - et/ou l'unité, - et/ou le filtrage Dtop, - et/ou la marge aller, - et/ou la marge retour. La programmation du paramètre « sens de la tête d'impression » dépend de l'installation de l'imprimante sur la chaîne de production et du résultat souhaité en lecture. L'imprimante peut proposer de choisir la configuration adaptée parmi plusieurs configurations, par exemple parmi les quatre configurations de la figure 37B. Chaque configuration indique le sens de fixation de la tête ainsi que le sens de défilement du produit. En fonction de ces paramètres, l'installation de la tête sur la chaîne de production peut donner lieu à diverses configurations. Ici, dans l'exemple donné, c'est parmi 4 configurations qu'il est possible de choisir. l'une de ces 4 combinaisons. Un symbole 317, 317' (ici une vis dépassant d'un carré noir) indique le sens de fixation de la tête, un symbole 319, 319' (ici une flèche à côté de l'une des lettres). En fonction de la configuration choisie, l'imprimante imprime les lettre dans le sens souhaité déterminé par cette configuration. Dans l'exemple donné, cela signifie par exemple que l'impression va avoir lieu de droite à gauche et dans le bon sens selon l'une des configurations retenues : si c'est la configuration CI la plus à droite sur la figure 37B, l'imprimante va commencer par imprimer la barre verticale du F, sur la configuration C2 suivante c'est le bout de la barre horizontale du L qui va être imprimé en premier, etc.. Des moyens 318 peuvent aussi être disponibles pour sélectionner l'impression par transparence : sélectionner « Oui pour obtenir une lecture du job par transparence, dans le cas où l'on imprime sur une surface transparente pour permettre une lecture du côté opposé å l'impression. Des moyens 321 peuvent aussi être disponibles pour sélectionner (en sélectionnant « Oui ») une impression comme illustré en figure 37C, à savoir une première impression normale et une deuxième impression, symétrique de la première selon une symétrie verticale et/ou horizontale vis-à-vis d'un sens de défilement de l'objet à imprimer. La programmation du paramètre « vitesse de l'objet» permet, dans le cas d'un défilement de produits à vitesse constante, de choisir la valeur de la vitesse en millimètre par seconde. Dans un mode particulier (« Tachy »), on peut aussi entrer la valeur de la vitesse maximum de défilement du produit. En ce qui concerne le choix d'un algorithme (comme déjà expliqué ci-dessus, il s'agit là des données d'impression permettant de calculer la tension à appliquer à chacune des gouttes à imprimer) : il est possible de choisir un algorithme ou de laisser l'imprimante sélectionner automatiquement celui le plus adapté à la vitesse d'impression programmée (AUTO). La figure 37D représente un écran de choix d'un algorithme. En fonction de ce choix, l'imprimante proposera une sélection des polices appropriées et/ou de la zone d'édition. L'algorithme définissant une hauteur d'impression totale maximum, l'imprimante proposera à l'opérateur uniquement des polices dont la hauteur est compatible avec cette hauteur d'impression et/ou une zone d'édition limitée à cette hauteur maximum. De préférence, une nouvelle sélection d'algorithme ou de vitesse d'impression n'est pas autorisée sur un job déjà existant. 11 faut préalablement effacer le contenu du job pour modifier ces paramètres. Le paramètre de mesure de la vitesse permet de définir si la mesure de vitesse est inactive ou: si elle se fait avec un encodeur (tachymètre) ou avec 2 cellules. La figure 46 représente schématiquement une chaîne 200 de production, une imprimante 1 selon l'invention et respectivement un détecteur 213 de vitesse ou deux détecteurs 213, 213' de vitesse (l'un des deux et sa liaison avec les moyens 1 sont représentés en traits interrompus). Des objets 215e, 215b, 215c, 215d .... défilent sur la chaîne, par exemple un convoyeur 277 pour venir être imprimés par l'imprimante 1. Si la vitesse du convoyeur est constante, il n'y a pas de mesure de vitesse. On sélectionne un mode spécifique (appelé «Tachy») pour utiliser un détecteur 213 de vitesse, appelé aussi tachymètre ou encodeur, qui permet, à l'aide d'une information donnée par exemple en impulsions, de synchroniser, de préférence en permanence, la vitesse d'impression de l'imprimante et la vitesse de défilement des objets 215a, 215b, 215c, 215d à imprimer sur la chaîne 200 de production, afin de garantir une résolution horizontale constante. Cela est particulièrement intéressant lorsque la vitesse de défilement des objets n'est pas constante. Dans ce cas, on peut aussi définir le paramètre « Division tachy » : on entre alors un nombre pour obtenir la largeur de caractère souhaitée à l'impression. On peut sélectionner encore un autre mode spécifique « Cellules » pour mesurer la vitesse à l'aide de 2 dispositifs ou cellules de mesure de vitesse 213, 213'. Dans ce cas, on peut aussi définir le paramètre « Distance cellules », qui permet d'entrer un nombre correspondant à la distance d entre les 2 cellules (par exemple de 10 mm de à 9999 mm). Si un détecteur est une cellule photoélectrique, il va être possible de déclencher le début de l'impression sur la détection de l'objet à imprimer. Le paramètre « Type de déclenchement » permet de choisir si le déclenchement de l'impression se fait à la détection d'un objet 215a, b, c ou à la demande de l'opérateur. Dans le premier cas (déclenchement « objet»), l'impression se déclenche au passage d'un objet 215a, b, c Dans l'autre cas (déclenchement « manuel»), l'opérateur déclenche l'impression lorsqu'il le souhaite. Le paramètre « mode de déclenchement » permet de choisir entre divers modes, par exemple unique, répétitif ou multitop. Le mode « unique » correspond à l'impression d'un seul job par objet. Le mode « répétitif» correspond à l'impression en continu tant qu'un objet est détecté. 30 L'espacement des impressions sur l'objet peut être défini dans le paramètre « Intervalle répétitif ». Le mode « Multitop » correspond à l'impression en continu dbun nombre de jobs défini pour un top objet (ce terme « top » ou « Dtop » est utilisé pour décrire l'instant de détection de l'objet à imprimer, par exemple par une cellule photo électrique). Le nombre de jobs imprimés par top objet peut être défini dans le paramètre « Nombre de multitops ». L'espacement des impressions peut être défini dans le paramètre « Intervalle répétitif ». Le paramètre « Unité » permet de définir l'unité des valeurs de marge aller, de marge retour et d'intervalle répétitif. Le choix est possible entre 15 plusieurs unités, par exemple entre millimètre, mètre ou pouce. Le paramètre « Filtrage Dtop (US) » correspond au temps minimum que le signal de détection d'objet a à atteindre pour être pris en compte par 20 l'imprimante. Sa valeur peut être comprise entre par exemple 200 ps et 9999 ps. On peut augmenter ce temps en cas d'impressions intempestives, car si ce signal de détection est parasité il peut déclencher une impression à tort, on cherche donc ainsi à la filtrer. 25 Le paramètre « Marge aller » (respectivement : « marge retour ») représente l'espace entre le point de détection de l'objet et le début de l'impression lorsque le job est imprimé à partir du premier du (respectivement : du dernier) caractère. Ce 30 paramètre décrit la distance que doit parcourir l'objet entre l'instant « Top » et le début d'impression du job sur le produit. On distingue la marge « Aller » qui décrit la distance par rapport au début du job de la marge « Retour » pour décrire la distance par rapport à la fin du jc~b. La marge retour est utilisée dans le cas b s où l'on commence par imprimer la fin du job, ce qui est possible en fonction de la configuration choisie (voir les explications ci-dessus en liaison avec la figure 37B). Un ensemble de paramètres peut être appliqué par défaut à tous les jobs. Cet ensemble peut être modifié par un opérateur en sélectionnant l'écran adapté. Pour ajouter et/ou modifier un champ « Texte », on peut positionner le curseur à la position souhaitée, comme en figure 28A, puis appuyer sur un bouton 83 pour ajouter un champ de type « Texte » dont le début se situe à la position du curseur. On saisit alors le texte à l'aide de l'écran de la figure 38A (ou 26A) puis on valide la création du texte par appui sur un bouton 285. Préalablement, on peut définir le style de police du champ, par appui sur le bouton 82. On peut déverrouiller un champ par sélection d'un bouton 287. Seul le contenu du texte pourra alors être changé en modification simple. Le nouveau champ « Texte » apparaît dans le job (voir figure 38B). La fonction « d'ajout et/ou de modification d'un champ « date » permet d'insérer la date actuelle ou une date différée dans le job. Il est possible d'insérer plusieurs dates différées, par exemple jusqu'à 6 dates différées, en plus de la date actuelle. La date actuelle correspondra à un champ « Date ». Les dates différées correspondront, dans l'exemple de 6 dates différées, à des champs Date 1 à 6. Les possibilités de format de Date, de Date 1 et de Dates 2 à 6 peuvent être différentes. Partant de l'écran de la figure 28A, on positionne le curseur à la position souhaitée, puis on appuie sur un bouton 84 pour ajouter un champ Date qui débute là où est positionné le curseur. 10 Préalablement, police du champ, par appui La sélection conséquence l'apparition de indique la date couranteon peut définir le style de sur le bouton 82. du bouton 84 a pour l'écran de la figure 39 qui (dans un aperçu 168) à un décalage que l'on peut registre 170. Un bouton 171 15 laquelle on peut appliquer choisir en incrémentant un permet de choisir l'unité du décalage (jour, semaines, mois ...). Par exemple, en définissant un décalage de 10 jours l'aperçu indique la nouvelle date calculée. Pour 20 entrer la date actuelle, on laisse le décalage sur 0 et, pour entrer une date différée, on définit un décalage différent de 0. On appuie ensuite sur un bouton 285 pour insérer la date dans le job. Le nouveau champ Date 25 apparaît dans le job. Pour modifier le format de la date, on peut procéder de la manière suivante. Après avoir sélectionné le bouton 173 de 30 modification de date de la figure 39, on a la possibilité de sélectionner un format d'indication du jour par un menu déroulant 161, un format d'indication du mois par un menu déroulant 162, un format d'indication d'année par un menu déroulant 165 (figure 40). Le menu 164 permet de sélectionner les symboles séparateurs des éléments de la date. Un bouton (non visible sur la figure 40 car caché par le menu déroulant 165) permet de valider le format sélectionné, puis de retourner à l'écran précédent. Ceci peut être réalisé pour la date courante, mais aussi pour chacune des dates différées 2-6. A titre d'exemple on peut choisir pour le jour l'indication du jour de la semaine un chiffre entre 1 et 7 (d), ou l'indication du jour du mois (dd, un nombre entre 01 et 31), ou l'indication du jour de l'année (ddd, un nombre entre 001 et 365). Pour une date différée, on peut choisir pour le jour l'indication du jour de l'année programmable pour la Date 1 (dyprog). Sa valeur dépendra du paramètre Modulo Date 1. On peut se reporter à l'explication du paramètre Modulo Date ? pour plus de détails. En variante, pour une date différée, on peut choisir pour le jour l'indication d'un jour programmable de l'année pour les Dates 1-6 (dprog). Sa valeur dépendra du paramètre Modulo Date 2-6. On peut se reporter à l'explication du paramètre Modulo Date 2-6 pour plus de détails. A titre d'exemple encore on peut choisir pour le mois l'indication du mois de l'année (avec un nombre entre 01 et 12) (mm), ou l'indication des 3 premières lettres du mois , dans une langue ou une autre. A titre d'exemple encore on peut choisir pour l'année l'indication de l'année (avec un nombre entre 0 et 9) (mm), ou l'indication 2 derniers chiffres de l'année (entre 00 et 99). Pour modifier les paramètres du champ «date », on peut utiliser un écran tel que celui de la figure 41, sur lequel on peut sélectionner chacun des choix suivants : US format : permet d'appliquer à la date le format américain (mois-jour-année). ,- Premier jour de la semaine : permet de définir le premier jour de la semaine. Par exemple, si jeudi est défini comme premier jour de la semaine, mercredi sera alors le dernier jour. • Heure de changement de date: permet de définir l'heure à laquelle date passe au jour suivant. Par exemple, si l'heure est définie sur 05:00, la date du jour ne changera qu'à 5 h du matin et non à minuit. • Langue pour mois 1: permet de choisir langue dans laquelle sera écrit le mois pour la date et la date 1 (élément mmml de la liste déroulante « mois »). * Langue pour mois 2 : permet de choisir la langue dans laquelle sera écrit le mois pour la date et la date 2 (élément mmm2 de la liste déroulante « mois ») . • calendrier Hijri: permet d'indiquer les dates sur la base du calendrier Hijri au lieu du calendrier julien. On peut se reporter à la partie concernant le réglage de la date dans les paramètres généraux pour plus de détails sur le calendrier rt Modulo Date 1 : ce paramètre est utilisé pour les dates différées avec un décalage supérieur à 365 jours. Sa valeur influe sur l'élément dyprog selon le principe de la division entière suivante : Décalage = n x modulo date 1 - dyprog Le décalage (en jours) de la date différée est le dividende, Modulo Date 1 le diviseur, n le quotient entier, et dyprog le reste de la division entière. L'élément dyprog permet donc de coder la date en fonction du Modulo selon la formule suivante : dyprog = Décalage - (n x Modulo Date 1) Par exemple, si un opérateur saisit une date différée avec un décalage de 1000 jours, dyprog variera en fonction de la valeur du Modulo, comme indiqué dans le tableau I ci-dessous. Modulo dyprog 150 1000 --- (6 x 1.50) = 100 200 1000 - (5 x 200) = 0 365 1000 - (2 x 365) = 270 600 1000 - (1 x 600) = 400 1000 1000 - (1 x 1000) = 0 Tableau 1 * Modulo Date 2 à 6 . le principe est le même que pour Modulo Date 1 mais appliqué aux Dates 2 à 6 et à l'élément dprog. La valeur du Modulo ne dépasse pas la 25 valeur du décalage. Sa valeur par défaut est de 365 pour Modulo Date 1 et de 1000 pour Modulo Date 2-6. Les paramètres par défaut appliqués aux champs Date de tous les jobs peuvent être modifiés par sélection d'une succession d'icône. La fonction « d'ajout et/ou de modification b d'un champ « hèure » est mise en ouvre de la manière suivante. Partant de l'écran de la figure 26A, on positionne le curseur à la position souhaitée, puis on appuie sur l'icône 85 pour ajouter un champ « Heure » qui débute à l'endroit où est positionné le curseur. Comme indiqué sur la figure 42A on peut utiliser des flèches 175, 175' de commande latérale pour se déplacer dans le champ « heures ». On peut supprimer l'élément qui précède le curseur en appuyant sur un bouton. On peut appuyer sur un des éléments possibles 179e - 179c au-dessous de la ligne d'aperçu 177 afin de l'insérer dans cette ligne 177. Un bouton 285 (figure 42C) permet de valider le format et d'insérer le champ. Le nouveau champ « Heure » apparaît dans le job (figure 42D). La fonction « d'ajout et/ou de modification d'un champ « compteur» est mise en ouvre de la manière suivante. Partant de l'écran de la figure 28A, on positionne le curseur 35 à la position souhaitée, puis on appuie successivement sur les boutons 86 puis 860 (figure 43A) pour ajouter un champ « Compteur» à la position du curseur. La ligne d'aperçu 181 (figure 43B) résume les caractéristiques du compteur. Des fenêtres individuelles 183a,183b,183c permettent de visualiser, le numéro du compteur sélectionné, et, pour un compteur donné, sa valeur de départ et sa valeur finale. Des fenêtres 185x, 185b, 185c permettent respectivement de visualiser le type de compteur, le pas du compteur, la valeur d'un lot. Un bouton 870 permet d'accéder aux paramètres du champ compteur, et un bouton 873 permet de verrouiller ce champ. De manière plus détaillée, la modification des caractéristiques du compteur peut être réalisée de la manière suivante. On choisit d'abord le numéro du compteur, à l'aide du bouton 183a. Un job peut contenir jusqu'à, par exemple, 15 compteurs. La figure 43C illustre le menu auquel on accède en cliquant sur le bouton 183e, un curseur 191 permet alors de sélectionner le numéro de compteur voulu. Par le bouton 185a, on peut choisir le type du compteur numérique, ou alphabétique, ou alphanumérique, ou hexadécimal, ou personnalisé. La figure 43D illustre le menu auquel on accède en cliquant sur le bouton 185e, un curseur 193 permet alors de sélectionner le numéro de compteur voulu. On peut choisir le pas compteur, par le bouton 185b, par exemple de 1 à 99. Il s'agit de la valeur d'incrément du compteur. Par exemple, si le pas du compteur est défini sur 10, le compteur augmentera de 10 à chaque incrémentation. Par le bouton 185c, on peut choisir la valeur du lot, par exemple dé 0 à 999999. Il s'agit du nombre d'articles dans un lot. Le compteur s'incrémente lorsque la valeur du:lot est atteinte. Par exemple, si la valeur du lot est définie sur 5, le compteur ne s'incrémentera de la valeur du pas compteur qu'au bout de 5 articles détectés. Les modifications du compteur apparaissent dans la ligne d'aperçu 181. Un bouton 285 permet d'insérer le compteur dans le job. Le nouveau champ Compteur apparaît dans le job, comme illustrée sur la figure 43E qui reproduit un l'écran de la figure 43A, mais avec champ compteur inséré à l'endroit voulu. On peut modifier les caractéristiques du champ « compteur », à partir d'un écran tel que celui de la figure 44A obtenue par la sélection, à partir de l'écran de la figure 433, du bouton 870. On peut alors modifier : -le type d'incrément, - et/ou la remise à zéro (RAZ) par l'entrée, - et/ou l'activation sortie, - et/ou l'impression des zéros de tête, - et/ou la réinitialisation/top objet, - et/ou la remise à zéro (RAZ) automatique. Il suffit, pour un utilisateur, de faire dérouler le menu déroulant à l'aide du curseur 197, et de sélectionner le champ correspondant. 25 Le « Type d'incrément » permet de choisir, à l'aide du curseur 197a, le mode d'évolution du compteur. Celui-ci peut être Inactif : auquel cas le-compteur est figé, b y positionné sur Entrée A ou Entrée B : le compteur s'incrémente suivant les informations des entrées INCCPTx ou INCCPTy de la carte Interface Industrielle, déjà décrite ci-dessus en liaison avec la figure IC; - positionné sur « Object », auquel cas le 10 compteur s'incrémente suivant les informations de l'entrée DTOP1, signal qui ne nécessite pas une connexion via l'interface industrielle ; il s'agit en fait du signal Top décrit plus haut et il est connecté sur la CPU, 15 - positionné sur « message », auquel cas le compteur s'incrémente lorsque l'imprimante imprime un job, - positionné sur « Chaîné », auquel cas le compteur s'incrémente suivant le débordement du 20 précédent ; dans le cas où il y a plusieurs compteurs insérés dans un job, il est possible de définir le mode de fonctionnement « chaîné » (par exemple: Compteur 1 et compteur 2 chaînés) dans le lequel l'un des compteurs (le compteur 2 dans l'exemple) commencera à 25 s'incrémenter seulement une fois que la valeur finale du compteur précédent (le compteur 1 dans l'exemple) aura été atteinte. La remise à zéro (RAZ) par entrée permet de choisir, à l'aide du curseur 197b, l'entrée de la carte 30 interface industrielle par laquelle le compteur peut être remis à sa valeur de départ.5 Un écran tel que celui de la figure 44C offre alors les choix suivants : - Sans . aucune entrée ne permet la remise à la valeur de départ, - Entrée A remise à la valeur de départ par l'entrée RAZCPTy. - Entrée B remise à la valeur de départ par RAZCPTy. - Entrées A ou B : remise à la valeur de départ par l'entrée RAZCPTy ou RAZCPTy Industrielle. La fonction « activer sortie » permet d'activer ou non la sortie ETAT-IMP de la carte interface industrielle qui change d'état lorsque le compteur arrive à sa valeur finale. La fonction «Impression zéros de tête affiche ou non les zéros au début de la valeur du compteur. C'est le cas lorsque, par exemple, on définit un compteur numérique de 3 digits avec une valeur initiale à 1 : si on imprime les zéros de tête on imprimera à la première valeur 001 sinon 1. Si cette option est désactivée, des changements seront visibles dans l'écran d'édition du compteur La fonction de Réinitialisation par « top objet » permet de remettre le compteur à sa valeur de départ à chaque nouvel objet à marquer détecté par la cellule 213 ou 213'. En effet, si on est en mode multitop (c'est-à-dire plusieurs impressions du job sur un même Top) la réinitialisation sur le prochain Top permet d'incrémententer le compteur sur les occurrences d'impression du Job sur le même objet. La fonction «RAZ auto » permet de remettre ou non le compteur à sa valeur de départ dès que le job n'est plus actif. Un job peut être considéré comme n'étant plus actif lorsqu'il n'est plus sélectionné comme le prochain Job à imprimer au Top suivant. On rend actif un job par exemple en appuyant sur le bouton 282 de la figure 22B. Les paramètres par défaut appliqués aux champs Compteurs de tous les jobs peuvent être modifiés 10 par sélection d'une succession d'icônes. On peut enregistrer un job en cliquant sur le bouton 87 de la figure 26A. On arrive alors sur l'écran de la figure 45A, qui va permettre à l'utilisateur de saisir les caractères qui vont 15 constituer le nom du Job. Le nom du job apparaît alors. Un bouton 285 permet de valider pour enregistrer les modifications dans le job. Pour créer un nouveau job à partir des modifications, on entre un nom différent avant de 20 valider. Un message (figure 45B) confirme la modification du job, ou la création d'un nouveau job. Comme on l'a expliqué ci-dessus, un « job » ou un message peut être modifié de manière. simple, 25 c'est-à-dire que seuls certains champs, par exemple un champ de texte et/ou de date et/ou de compteur peut être modifié. Une modification de type « avancé » permet de modifier tous les champs possibles, ainsi que de 30 supprimer des champs ou encore de modifier une police dans n'importe quel champ. Si l'on souhaite modifier un « job » en cours de production, on a accès à ces mêmes fonctions, de niveau simple ou de niveau avancé. La description, ci-dessus prend l'exemple d'un écran tactile, sur lequel un opérateur peut intervenir en positionnant l'extrémité d'un doigt, par exemple pour déplacer un ou plusieurs champs de caractères, et pour sélectionner un ou plusieurs icônes, comme expliqué ci-dessus. Cependant, comme illustrée en figure 47, l'invention est également applicable à un écran 2a non tactile, sur lequel un opérateur peut faire apparaître des informations à l'aide de moyens périphériques séparés physiquement de l'écran, mais reliés à celui- ci, par exemple un clavier 2c et une souris 2d. L'ensemble est géré par une unité centrale ou un ordinateur 2b. Un utilisateur peut donc travailler sur des écrans du type de ceux qui ont été décrits dans la présente description, mais en cliquant sur les icônes à l'aide d'un curseur, de manière bien connue. Ce mode de réalisation permet de travailler de manière distante par rapport au dispositif d'impression 1, la liaison entre celui-ci et les moyens 2a-2d étant assurées par câble ou réseau. Un tel dispositif peut mettre en oeuvre tout ou partie des fonctions qui ont été décrites ci-dessus. Là encore, la réception des instructions, notamment les informations à imprimer sur un objet, et l'envoi des commandes correspondantes de la tête d'impression 10, sont réalisés par des moyens programmables tels que les moyens 14 déjà décrits ci- dessus. Outre les fonctions qui ont été décrites ci-dessus un dispositif selon l'invention peut être mis en oeuvre pour assister un opérateur lors d'opérations de maintenance ou de nettoyage d'un jet d'une tête d'impression ou du circuit d'encre qui alimente la tête ou, plus généralement, pour résoudre une alarme ou un défaut. II permet en outre de présenter un historique des alarmes et des défauts ou un résumé de ce type d'évènements, dans l'ordre chronologique, sur un écran unique. L'écran permet ainsi à un opérateur de visualiser des indications, produites par les moyens programmés 14 (CPU), pour arrêter le jet et/ou de démarrer le jet et/ou nettoyer la tête d'impression et/ou vidanger le circuit d'encre et/ou rincer l'imprimante et/ou afficher des indications de remplacement d'une cartouche d'encre ou de solvant.20 REVENDICATIONS1. Dispositif de conception d'information en vue d'une impression de ces informations sous forme de caractères sur un objet, comportant - un écran (2) de visualisation, des moyens pour définir sur cet écran au moins un premier bloc (40) et un deuxième bloc (40A, 40B, 40C) d'écriture d'informations, - des moyens (14) pour définir, dans chacun des blocs, une taille des caractères à y insérer, et pour créer et éventuellement modifier, dans chaque bloc, une information sous forme de caractères, - des moyens (14) pour modifier la taille et/ou la nature des caractères d'au moins le premier bloc et pour modifier automatiquement la position d'au moins un deuxième bloc, en contact avec le premier bloc par sa droite ou par sa gauche, en fonction de la longueur de la chaîne de caractères dans le premier bloc et/ou en fonction de la taille des caractères de ce premier bloc. 2. Dispositif selon la revendication 1, l'écran étant un écran tactile. 3. Dispositif selon l'une des revendications 1 ou 2, le deuxième bloc étant translaté sur l'écran en fonction de la longueur de la chaîne de caractères dans le premier bloc et/ou en fonction de la taille de ses caractères. 4. Dispositif selon l'une des revendications 1 à 3, comportant en outre des moyens pour sélectioner un bloc dans une image. 5. Dispositif selon la revendication 4, comportant en outre des moyens pour modifier la position et/ou le contenu d'un bloc sélectionné et/ou pour supprimer un bloc sélectionné et/ou pour déplacer un curseur (35) d'une image dans laquelle un bloc n'est pas sélectionné. 6. Dispositif selon la revendication 4 ou 5, comportant en outre des moyens pour ajouter un bloc dans une image, là où un curseur (35) est sélectionné. 7. Dispositif selon l'une des revendication 1 à 6, comportant en outre des moyens pour verrouiller un bloc dans une image, ou pour déverrouiller un bloc dans une image. 20 8. Dispositif selon l'une des revendications 1 à 7, comportant en outre des moyens pour sélectionner une vitesse de défilement d'un objet sur lequel une impression est à réaliser et/ou un algorithme 25 spécifique et/ou un certain nombre de lignes repères sur l'écran. 9 Dispositif selon l'une des revendication 1 à 8, comportant en outre des moyens pour sélectionner 30 un sens de la tête d'impression et/ou une vitesse d'un objet à imprimer et/ou un algorithme et/ou une mesure15de la vitesse et/ou un type de déclenchement et/ou un mode de déclenchement et/ou une unité et/ou un filtrage et/ou une marge aller et/ou une marge retour. 10. Dispositif selon l'une des revendications 1 à 9, un bloc pouvant être de type texte ou date ou heure ou compteur. 11. Dispositif selon la revendication 10, comportant des moyens pour modifier, pour un bloc de type compteur, un numéro de compteur et/ou un type de compteur et/ou une valeur de départ du compteur et/ou une valeur finale du compteur et/ou un pas du compteur et/ou un nombre d'articles dans un lot, le compteur s'incrémentant lorsque la valeur du lot est atteinte. 12. Dispositif selon la revendication 10 ou 11, comportant des moyens pour modifier, pour un bloc de type de compteur, un mode incrémentation du compteur et/ou un mode de réinitialisation du compteur et/ou un mode de remise à zéro du compteur. 13. Dispositif selon l'une des revendications 10 à 12, comportant des moyens pour décaler, pour un bloc de type date, une valeur de décalage de la date et/ou pour modifier un format de date et/ou pour définir un premier jour de la semaine et/ou pour définir une heure à laquelle la date passe au jour suivant et/pour convertir une durée de décalage supérieur à 365 jours en années, en mois et en jours.14. Dispositif d'impression, comportant : -un dispositif de conception d'information selon l'une des revendications 1 à 13, - des moyens (10) d'impression, - des moyens de commande des moyens d'impression. 15. Système d'impression, comportant un dispositif d'impression selon la revendication 14 et au 10 moins un détecteur (213,213') de vitesse d'objets à imprimer (215a, 215b, 215c,215d). 16. Système d'impression selon la revendication 15, au moins un détecteur de vitesse 15 permettant de synchroniser la vitesse d'impression des moyens d'impression et la vitesse de défilement des objets par rapport aux moyens d'impression. 17. Système selon la revendication 15 ou 20 16, comportant en outre des moyens (277) pour déplacer les objets à imprimer par rapport aux moyens d'impression. 18. Système selon l'une des revendications 25 15 à 17, les moyens d'impression étant des moyens de type à jet d'encre ou des moyens laser.