Brevet FR2572823A1 — publié le 19860509

"Dispositif de lecture pour code à barres" La présente invention concerne un dispositif de lecture pour un code à barres qui se trouve dans/sur un support, le tout selon le préambule de la revendica- tion 1. De tels codes à barres sont largement utilisés. Selon la nature du contenu du code, on en utilise de deux types. Le premier type de codes indique l'identité d'une catégorie d'articles, par exemple des articles qui sont vendus dans les grandes surfaces. Le deuxième type de codes indique l'identité d'un article, par exemple le numéro d'ordre dans l'ensemble des produits d'un même type. Un tel dispositif de lecture est décrit dans la demande de brevet européen 36951, correspondant au brevet des Etats-Unis d'Amérique n 4323772. Le code peut être imprimé sur un support, mais il peut aussi être incorporé dans un support par estampage, morsure chimique ou l'équivalent. Le dispositif connu utilise une camera d'analyse de ligne, par exemple du type Fairchild Model CCD1410. Les longueurs des intervalles sont comparées à deux seuils pour détecter des barres étroites, larges et de largeurs impossibles (donc invalides). Il s'est avéré que plusieurs barres inva- lides sont dans ce cas encore acceptées. De plus, le réglage du seuil est réalisé en premier lieu et ce n'est qu'ensuite qu'une analyse de détection peut être effectuée. L'invention a pour but de procurer un dispo- sitif de lecture qui soit particulièrement sûr, aux- quelles fins une grande quantité d'information brute est extraite du support, de sorte qu'une réduction de données rapide et sûre doit aussi avoir lieu, et qui satisfasse également aux exigences suivantes: - le déplacement du code à barres n'exerce aucune influence défavorable à l'égard du capteur immobile, - le capteur est peu onéreux et amplement disponible, - le dispositif de lecture est peu influencé par l'angle formé entre la direction d'analyse et la direction d'analyse nominale (perpendiculaire à la direction des barres), - le dispositif de lecture est peu influencé par une modification d'échelle du code à barres; celleci peut être provoquée par une distance variable entre le support et le capteur, - le dispositif de lecture est peu sensible aux petites mutilations du code à barres tel qu'appliqué sur le support. La vitesse de traitement est grande par le fait que toutes sortes d'informations sans importance sont déjà négligées dans un stade précoce du traitement des données: ainsi, la position du code ne doit pas toujours être connue d'avance. L'invention atteint ce but par le fait qu'elle possède la caractéristique reprise dans la partie caractéristique de la revendication 1. Trois domaines avec des largeurs de barres invalides sont en principe possibles: a. trop étroit, alors que la largeur peut malgré tout être supérieure à celle qui correspond à un pixel; l'état cité de la technique offre en soi des moyens pour rejeter des barres d'une largeur d'un pixel; l'invention permet de régler cette largeur minimum de manière souple; a. entre deux domaines de largeurs valides, ce qui, pour certains facteurs d'échelle linéaires, assure une protection supplémentaire; c. trop large, auquel cas la réalisation faisant appel a un adressage d'une mémoire de tables opère avec une plus grande souplesse que lorsqu'elle fait appel au réglage d'un seuil fixe. La mémoire de tables peut, selon l'application, être une mémoire morte, une mémoire morte programmable (PROM) ou une autre mémoire. Deux de ces trois domaines au moins sont toujours présents simultanément. Il est avantageux que des largeurs de barres soient continuellement détectées, que, pour chaque ligne, sous la commande d'une largeur de barre inva- lide, le compteur de barres soit ramené dans un état initial et que le dit retour à l'état initial soit désactivé dès qu'un état prédéterminé du compteur de barres est atteint. Le retour à l'état initial n'est de préférence pas effectué lorsqu'un nombre suffisant de barres valides est trouvé. Il est possible qu'initia- lement, on trouve une "barre" qui présente une largeur correcte, mais qui est produite par une souillure. Dans ce cas, lorsque l'on atteint le nombre de barres prédéterminé, on trouve une série de barres incorrecte. Ceci peut être détecté par le fait que le contenu d'information, par exemple pour des raisons de parité, est incorrect. Dans ce cas, un processeur peut négliger la première barre et prendre en compte une barre valide supplémentaire à la fin de la série, éventuellement jusqu'à ce qu'une série de barres correcte ait été trouvée. Le retour du compteur de barres a l'état initial est aussi négligé lorsqu'après la fin d'une série de barres, une barre invalide apparaît. La série de barres peut alors en effet déjà être une série correcte. Les deux cas sont le pendant l'un de l'autre et sont traités de la manière correcte par une seule et même mesure: retour à l'état initial uniquement lorsqu'une barre invalide apparaît au "milieu" d'une série de barres. Ceci accroit également la sécurité. I1 est dans ce cas avantageux que le dit nombre minimum ait une valeur fixe supérieure à un et que l'élément de sortie soit prévu pour présenter au moins deux codes semblables corrects quant à leur contenu, à titre d'information validée, sur la sortie de l'utilisateur. La concordance entre deux validations fournit une sécurité supplémentaire. D'autres formes d'exécution avantageuses sont citées dans les autres revendications. Courte description des figures: L'invention sera décrite plus en détail ci-après avec réfé- rence aux dessins annexés, dans lesquels: La figure 1 illustre un exemple d'un code à barres; La figure 2 est un schéma synoptique simple d'un dispositif de lecture; La figure 3 est un schéma synoptique plus détallié d'un dis- positif de lecture conforme à l'invention; La figure 4 est un schéma synoptique plus précis de l'élément de décision et du reformatbur de code; La figure 5 est un exemple d'un contenu de la mémoire de tables; La figure 6 est un organigramme du fonctionnement du refor- mateur de code. Le principe du fonctionnement: En vue d'un fonctionnement correct du dispositif, il suffit que les barres soient plus ou moins perpendiculaires à la direction d'analyse. Le support du code à barres peut être de diverses natures, par exemple une feuille portant du texte, un produit qui se trouve à un stade de fabrication, comme un ballon pour un tube de télévision ou une carte à circuits imprimés. Le code peut être appliqué sur le support di- rectement ou au moyen d'un élément adhésif. Pour assurer un traitement optimal du code, l'information captée est prétraitée avant que la valida- tion proprement dite ait lieu. Sous ce rapport, la figure 1 est un exem- ple d'un code à barres de deux-largeurs différentes, tant pour les in- tervalles clairs que pour les intervalles sombres. Dans certains cas, un code à barres peut être réalisé en d'autres couleurs que le noir et le blarc.Le cadre illustré sur cette figure comporte au début et à la fin du code une partie large sans transitions. La valeur de cette largeur est au moins égale au double de la plus grande valeur nominale de la largeur de barre. Il convient de noter que l'échelle du code ne sera pas connue à priori. Pour distinguer le code à barres du fond, on utilise les propriétés caractéristiques suivantes: - un code à barres comporte une série de barres noires et blanches qui tombent dans une des catégories admissibles (dans le cas présent soit large, soit étroite, mais un plus grand nombre de catégories est également possible); - le rapport entre les largeurs des diverses caté- gories est connu; dans le cas présent, ce rapport est compris entre 2 et 3; - on peut s'attendre à ce que des li2gnes d'analyse successives donneront des motifs correspondants; - au début et à la fin se trouve une bande blanche d'une largeur qui est supérieure au double de celle d'une barre "large"; - le nombre de chiffres/lettres de la communication ou du numéro utilisé est connu d'avance et permet de calculer le nombre de barres; - les largeurs des barres peuvent être situées dans un domaine de valeurs relativement grand, selon la densité d'impression utilisée et le grossissement optique utilisé. Dans le cas de l'utilisation d'une caméra de télévision comme capteur, le signal vidéo est appliqué dans le circuit de traitement par l'intermédiaire d'un amplificateur vidéo à un "filtre limiteur de synchroni- sation/séparateur" qui extrait les signaux de synchro- nisation et rend possible le traitement ligne par ligne plus poussé. De plus, pour le traitement ultérieur, le signal est converti en un signal bivalent. La largeur des barres est déterminée par le comptage d'impulsions d'horloge de 16 MHz entre des variations d'état succes- sives du signal vidéo binarisé. Au moyen d'une série de 8 ou de 16 tables pouvant être sélectionnées, les largeurs des intervalles ainsi mesurées sont réper- toriées en tant que barre "étroite", "large" ou "inad- missible". Le terme "inadmissible" peut en l'occurrence signifier dans ce cas "trop étroite", "trop large" ou "entre une barre étroite et une barre large". Lors- qu'une barre étroite ou large est détectée, une infor- mation associée (ici 1 bit) est stockée dans une mémoire prévue à cet effet. De plus, le nombre de barres valides est compté et est stocké en vue d'une utilisation ultérieure dans une mémoire indicatrice de barres. Seules sont conservées les lignes d'analyse pour lesquelles le nombre prévu de barres a été trouvé sans que ce nombre soit interrompu par une ou plusieurs barres "inadmissibles" (out of range). Lorsque le nombre de barres trouvé est trop petit, l'information correspondante est recouverte jusqu'à ce qu'une ligne d'analyse valide avec le nombre de barres correct soit trouvée. Selon la longueur des barres, le nombre de lignes valides à trouver pour la validation ultérieure est fixé à 4, 8 ou 16 (d'autres valeurs peuvent aussi être utilisées). Lorsque ce nombre préréglé est atteint, un signal d'interruption est produit et l'opération de validation est mise en route. Le bruit de fond est ainsi filtré avec succès et de plus, seul un petit nombre de lignes d'analyse subit le traitement ultérieur, ce qui est avantageux pour la vitesse de travail totale. Lorsqu'on utilise un analyseur de lignes en matière semi-conductrice, l'application peut être analogue à celle décrite ci-dessus. Un tel analyseur en matière semi-conductrice est, par exemple, produit avec 1000 éléments d'analyse qui interrogent chacun un pixel du support. Les 1000 éléments d'information sont alors évacués au moyen d'une organisation à décalage qui utilise un transfert à couplage de charges. Dans ce cas, pour chaque position du capteur par rapport au support, une seule ligne d'analyse est réalisée. En réalisant un déplacement relatif entre le capteur et le 2572823- support, on peut analyser plus de lignes. Ce dépla- cement doit alors avoir notamment une composante dans le sens longitudinal des barres. Le traitement ulté- rieur du signal peut être semblable à celui dans le cas d'une caméra de télévision, si l'on s'abstient de la dérivation des signaux de synchronisation de lignes et d'images. La synchronisation est prélevée ici direc- tement sur le premier élément d'analyse. Description d'une forme d'exécution préférée La Fig. 2 est un schéma synoptique simple du dispositif de lecture. L'élément 100 est le capteur qui fournit un signal d'analyse. L'élément 102 est un élément de décision qui fournit un signal bivalent avec des transitions entre les deux niveaux de signaux. L'élément 104 est un reformateur de code qui mesure la longueur des intervalles du signal bivalent et forme à partir de ceux-ci une série de bits; dans le cas du code de la Fig. 1, chaque bit peut indiquer si la barre est large ou étroite. L'élément 106 est un élément de sortie; il valide une séquence de code, par exemple la représentation d'un caractère doit satisfaire à certaines conventions indépendamment de l'identité. A cet effet, un code 2 de 5 est par exemple possible et on vérifie si un tel code est effectivement présent. De plus, à un niveau plus élevé, par exemple un CRC ou un autre moyen de type à parité peut être présent ou éventuellement même un moyen de correction d'erreur, grâce à l'adjonction d'une redondance suffisante. Le traitement dans l'élément 106 peut être assuré par des éléments spéciaux. Dans une autre réalisation, le traitement sous la commande d'un programme semblait être particulièrement avantageux dans des éléments qui, par ailleurs, sont d'un usage courant, par exemple dans un ordinateur hôte. Description plus détaillée de la forme d'exécution préférée: La Fig. 3 est un schéma synoptique simple d'une forme d'exécution préférée- d'un dispositif conforme à l'invention. Le capteur 20 analyse le code à barres suivant des lignes parallèles. Il est avantageux que le capteur soit une caméra de télévision parce qu'une telle caméra est peu onéreuse. Elle analyse en effet l'image selon un grand nombre de lignes et, comme décrit plus loin, on attache beaucoup d'importance à une réduction de données précoce dans le processus de traitement de données. Les lignes de télévision s'éten- dent dans une direction plus ou moins transversale aux barres. Le code illustré sur la Fig. 1 représente quatre caractères alphanumériques (C-AR-D). Huit lignes d'information valides doivent en être dérivées pour procéder sur celles-ci à la validatation ulté- rieure. L'angle entre la direction d'analyse et la direction d'analyse nominale doit, dans cet exemple, être inférieur à environ arctg 1/4. L'espacement des lignes dans le sens longitudinal des barres ne peut pas être trop grand. L'espacement dans le sens longitudinal des barres doit de préférence être au moins suffisant pour que 1/10 de cette longueur soit couverte. Ceci n'est cependant pas toujours nécessaire. Dans ce qui précède, le nombre de lignes d'analyse à valider davantage peut être choisi différent, par exemple entre 4 et 8 ou même de plus de 8. Il est aussi possible d'utiliser une caméra de disposition dite "array- camera" qui est réalisée selon la technique des semi- conducteurs. Dans la figure, l'élément 22 est un moniteur servant à inspecter le signal vidéo. L'élément 24 est un sélecteur permettant de sélectionner au choix ou en alternance différentes caméras sous la commande d'un signal de sélection sur la ligne 26. Par souci de simplicité, une seule caméra est illustrée. De plus, l'élément 25 fonctionne comme élément de décision pour fournir sur la ligne 28 un signal binaire et fina- lement, un signal de synchronisation composé connu dans le domaine de la technique de télévision est fourni sur la ligne 30. L'élément 32 est un séparateur de synchro- nisation et donne, sur la ligne 34, le signal de synchronisation de lignes, sur la ligne 36 le signal de synchronisation de trames et sur la ligne 38, un signal qui, dans certaines circonstances, indique qu'aucune caméra en fonctionnement n'est présente. L'élément 40 peut recevoir sur la ligne 39, un signal d'activation, par exemple à partir d'un ordinateur hôte, contient la logique de démarrage et fournit un signal de démarrage sur la ligne 42 pour faire démarrer l'élément 44. Avant l'examen d'une image (trame), un signal de démarrage est chaque fois nécessaire sur la ligne 39. Le signal NCAM sur la ligne 38 devient haut sous la commande de l'absence du signal de synchronisation composé. L'élément 44 fait partie de l'élément de décision et détecte les transitions de signaux sur la ligne 28. L'élément 46 est un compteur qui compte les longueurs des intervalles de signaux (haut et bas) sous synchronisation par l'horloge 48. L'élément 50 est la mémoire de tables; elle est adressée par les soldes de comptage provenant de l'élément 46. Lorsqu'une largeur de barre admissible est détectée, un signal d'autorisation d'écriture apparaît sur la ligne 52, un signal de donnée sur la ligne 54 et un signal d'incrémentation sur la ligne 56. L'élément 59 est un compteur de barres qui est augmenté chaque fois qu'une barre de largeur admissible est détectée. La position du compteur de barres forme une adresse pour la mémoire 60 qui retient les codes de barres sous forme d'une série d'éléments binaires. Lorsqu'une largeur de barre invalide ou inadmissible est reçue, la mémoire de tables 50 fournit, par l'intermédiaire du circuit-porte OU 57, un signal de retour à zéro au compteur de barres 58, de sorte que la série de bits formée jusqu'à ce moment là pour la ligne d'analyse en question est ultérieurement négligée et peut être recouverte. Ce mécanisme simple permet d'obtenir une réduction de données notable, de sorte que la validation plus poussée peut devenir beaucoup plus simple et aussi plus rapide. De plus, ce compteur comporte un dispositif non indiqué séparément qui compare le nombre de barres valides à une valeur normalisée provenant de l'extérieur. Lorsque le nombre de barres valides détectées successivement sur une ligne est suffisamment grand, le mécanisme de retour à l'état initial est désactivé, mais un signal "prêt" non indiqué séparément est produit, avec pour résultat que le code alors trouvé n'est plus modifié. La mémoire 60 a une capacité de 4k empla- cements à 1 bit et peut stocker l'information de 16 lignes d'analyse comprenant chacune au maximum 256 barres. Le compteur 58 comprend deux compteurs à quatre bits en cascade. En ce qui concerne la mémoire 60, les 8 bits d'adresse les moins signficatifs sont fournis par le compteur 58 et les quatre bits les plus significatifs, par le compteur 68, comme expliqué plus loin plus en détail. La mémoire de lignes 66 a une capacité de 16 emplacements à 8 bits. Cette mémoire n'exige pas de possibilité de retour à l'état initial séparée, car, sur chaque ligne d'analyse, on ne peut trouver tout au plus qu'un seul code valide. On peut ainsi choisir en mélange des codes à barres de nombres de caractères différents entre eux. Le code à barres de la mémoire 60 et le nombre de barres de la mémoire 66 peuvent être interrogés sélectivement par l'ordinateur hôte sur la ligne 70. Le signal de commande d'écriture pour la mémoire 66 est dérivé du séparateur de synchroni- sation 32. L'élément 68 est un compteur à quatre bits qui fournit l'adressage de la mémoire de lignes 66 ou les quatre bits d'adresse les plus significatifs pour la mémoire 60. Le retour à l'état initial est amorcé par la logique de démarrage de l'élément 40. Le signal d'incrémentation est dérivé de la synchronisation de lignes par l'élément 32, mais uniquement lorsqu'un nombre de barres valide a été compté par le compteur 58. La liaison d'autorisation en question n'est pas indiquée séparément. Ainsi, un nombre de lignes de 16 au maximum doit être traité pour la validation plus poussée, par exemple sous la commande d'un programme dans l'ordinateur hôte. A cet effet, le compteur de lignes 68 peut être rempli à partir d'une batterie de registres de lecture-écriture prévue à cet effet, et les mémoires 60, 66 peuvent être lues. La connexion au bus d'ordinateur 74 s'effectue au moyen d'un élément d'adaptation 76 bien connu. Il est de cette façon possible de prérégler le compteur 58. Les registres de lecture-écriture qui sont indiqués en bloc par la référence 72 servent à stocker un signal de sélection à trois bits sur la ligne 26, le signal NCAM, l'infor- mation pour la logique de démarrage 40, un signal de sélection de table de 3 bits pour la mémoire de tables 50, un signal de données (8 bits) pour le compteur 58, un signal de données (4 bits) pour le compteur 68, un signal de données de 8 bits provenant de la mémoire de lignes 66 et un signal de sortie de quatre bits prove- nant de la mémoire de barres 60. Les registres sont connectés au moyen de l'élément adaptateur de bus 76 qui est connecté au bus d'ordinateur 74. Le contenu de ces registres est ainsi - rendu communicable, dans un sens et/ou dans l'autre, pour cet ordinateur. La Fig. 4 illustre un schéma synoptique plus précis se rapportant à l'élément de décision et au reformateur de code. Deux entrées xl, x2 sont prévues pour des capteurs respectifs. D'une manière corres- pondante, des entrées peuvent être prévues pour un plus grand nombre de capteurs. Le signal de sélection pour le circuit multiplex est reçu du bus 140. L'élément 120 est un amplificateur vidéo. L'élément 122 est le séparateur de synchronisation (voir aussi l'élément 32 sur la Fig. 4). Cet élément donne le signal de synchro- nisation CS. L'élément 126 est un convertisseur analo- gique-numérique qui est connecté au -bus 140 par l'intermédiaire d'une ligne de 8 bits. Le niveau de référence est ainsi déterminé. L'élément 124 est un circuit comparateur comportant deux entrées analogiques pour former le signal noir/blanc proprement dit. Divers algorithmes sont décrits pour former un niveau de comparaison variable. Un circuit sommateur 130 est connecté aux sorties des éléments 122, 124. Ce signal, de même que le signal reçu de l'entrée sélectionnée, doit par exemple être utilisé pour une visualisation sur le moniteur 22 de la Fig. 3. L'élément 132 est un inverseur. Les éléments 134, 136 sont deux circuits- portes ET. Ces éléments reçoivent un signal d'horloge CK; leurs signaux de sortie sont regroupés au moyen du circuit-porte OU 138 en vue d'être appliqués au comp- teur 46 de la Fig. 3. La Fig. 5 indique le contenu de la mémoire 50 sur la Fig. lb. Elle comporte 256 adresses, chacune d'au moins deux bits. On utilise dans le cas présent un élément du type 82S131 qui est une mémoire morte programmable (PROM). Les parties d'adresse les plus significatives sont indiquées à gauche; les parties les moins significatives sont indiquées à la partie supé- rieure. La mémoire comporte huit tables dans cette forme d'exécution, chaque table couvrant deux lignes; les cinq bits d'adresse les moins significatifs donnent, dans ce cas, la position du compteur 46 sur la Fig. 3. Une donnée "02" signifie "invalide", une donnée "00" signifie la détection d'une barre étroite, une donnée "01" signifie la détection d'une barre large. Pour la première table, une barre étroite peut aboutir à un solde de comptage de 1-3, une barre large à un solde de comptage de 4-B (=11). Pour la dernière table, une barre étroite peut aboutir à un solde de comptage de 4-D (=13), une barre large à un solde de comptage de HEXll (=17)-HEX1E (=30). Pour d'autres codes, d'autres choix peuvent être envisagés; pour le code ici consi- déré, d'autres choix peuvent aussi être envisagés. En effet, les dernières tables comportent trois domaines dans lesquels aucune largeur valide n'apparaît, pour la dernière à une près, il s'agit des soldes 0-2; OB-OC; 1F (tous HEX). Dans cet exemple de réalisation, il y a pour toutes les largeurs de barres nominales au moins un facteur 30/17. Il s'avère qu'un facteur de tolérance d'au moins l1 est ainsi le plus souvent suffisant. Dans certains cas, on peut aussi choisir une autre limite inférieure. Lors de l'adressage de la table, une adresse de 8 bits est donc toujours fournie. Les 3 bits les plus significatifs sont, comme mentionné plus haut, fournis par des registres 72 sur la Fig. 3. De ce fait, deux lignes de la table sont toujours adressées en même temps. La présentation des trois bits les plus signifi- catifs est habituellement toujours la même, par exemple- lorsqu'on examine une série de produits présentant les mêmes dimensions du champ de code. Au cas o un produit nouveau ou un produit différent est rencontré, on ne trouve pas de lignes ou on ne trouve que trop peu de lignes pour une validation valable. Dans ce cas, une resélection de la table correcte s'effectue par essais éliminatoires (by trial and error). Lorsqu'aucune table ne donne un signal correct, une alarme est produite sur un dispositif qui n'est pas décrit en détail, par exemple un dispositif acoustique. Il est aussi possible d'adresser simultanément plusieurs tables, par exemple par le fait que le bit d'adresse le plus significatif à deux près est à négliger (don't care). Le circuit suivant (à savoir les éléments 58, 60, 66, 68) doit alors être présent une fois pour chaque table adressée. Dans certains cas, ceci donne une améliora- tion, par exemple lorsque des codes à barres de diffé- rentes dimensions (nombre de barres et/ou facteur de grossissement) se présentent en mélange. Description de l'organigramme La Fig. 6 illustre un organigramme du fonc- tionnement du reformateur de code. Le processus démarre au bloc 200, par exemple au moyen d'une initialisation des registres et de la présentation des signaux de retour à l'état initial mentionnés plus haut. Le bloc 202 forme une boucle d'attente jusqu'à ce qu'une partie "blanche" d'une ligne d'analyse soit détectée. Dans le bloc 204, la longeur de l'intervalle blanc est comptée jusqu'à ce que la fin de la partie blanche soit détectée dans le bloc 206. Lorsque cet intervalle a au moins la largeur "de dépassement" (bloc d'essai 208), la détection des barres peut débuter. Si cela n'est pas le cas, le système recommence. La largeur de dépas- sement est détectée d'une manière correspondante à celle décrite à propos de la mémoire de tables. La largeur de dépassement est, par exemple, égale au double de la largeur de la barre nominale la plus large. Dans une forme d'exécution simple, la détection de la large marge blanche peut même être entièrement négligée: seules des barres de largeur admissible, indépendamment du caractère noir/blanc sont détectées aussi longtemps que sont trouvés des intervalles dont la largeur ne s'accorde pas avec la table, le compteur 58 est continuellement ramené à l'état initial. Dans le bloc 210, la largeur de la barre actuelle est comptée jusqu'à ce que la fin de la barre soit détectée dans le bloc 212. Dans le bloc 214, la mémoire de tables est adressée. Lorsqu'il s'agit d'une barre valide (essai dans le bloc 216), l'information de cette barre est stockée dans le mémoire de barres (bloc 218) et la barre suivante est comptée. Lorsque la barre est invalide, un essai est effectué dans le bloc 220 pour vérifier si un nombre de barres -suffisant a été détecté. Dans la négative, l'adresse du compteur de barres est ramenée a son- état initial (bloc 222) et le tout recommence. Lorsqu'un nombre de barres suffisant est compté, une ligne de code à priori correcte est trouvée (bloc 224) et un nouvel essai est effectué pour vérifier si un nombre de lignes suffisant a été détecté (bloc d'essai 226). Dans la négative, le système recherche une ligne suivante avec code. Lorsque l'essai dans le bloc 226 donne O.K., la validation a lieu (bloc 228). Légendes de la Fig. 6: : start 202:white? 204:count white 206: end white? 208:excess? 210: count next bar 212:end? 214:address table 216:valid? 218: store bar date 0/1 220: bar count full? 222: reset address 58 224:code line stored 226: line number complete? 228: validate. R E V E N D I C A T I ON S 1.- Dispositif de lecture pour un code à barres qui se trouve dans/sur un support, ce dispositif de lecture comprenant: - un capteur pour analyser le code à barres ligne par ligne, - un élément de décision qui est connecté au capteur pour former un signal bivalent à partir du signal du capteur, - un reformateur de code qui est connecté à l'élément de décision pour, sur base des longueurs des inter- valles successifs du signal bivalent, former une séquence de code faite de largeurs de barres valides, - un compteur de barres qui est connecté à une sortie du reformateur de code pour compter le nombre de barres valides, et - un élément de sortie qui est connecté au reformateur de code pour valider une séquence de code et pré- senter un code validé sur une sortie d'utilisateur, caractérisé en ce que le reformateur de code comporte un compteur d'adresses pour une mémoire de tables qui compte les longueurs des intervalles, et la mémoire de tables identifie une largeur de barre valide ou indique une largeur de barre invalide à l'endroit ainsi adressé, la table ainsi adressée pour chaque largeur de barre nominale possède un domaine de validité d'au moins deux positions de compteur d'adresses successives et le domaine d'adresse de la mémoire de tables com- porte au.moins deux séquences différentes de positions decompteurinvalidesscoessives ininterrompues, qui sont séparées l'une de l'autre par au moins une série de positions de compteur valides, et la mémoire de tables comporte une série d'au moins deux tables à échelle croissante, avec, par table, pour chaque largeur de 18 2572823 barre nominale différente, un domaine de tolérance compris entre une largeur de barre actuelle maximale admissible et une largeur de barre actuelle minimale admissible d'au moins un facteur de 1. 2.- Dispositif de lecture suivant la revendi- cation 1, caractérisé en ce que des largeurs de barres sont continuellement détectées, le compteur de barres est ramené dans un état initial, pour chaque ligne, sous la commande d'une largeur de barre invalide, et le dit retour est désactivé dès qu'un état prédéterminé du compteur de barres est atteint. 3.- Dispositif de lecture suivant la revendi- cation 1 ou 2, caractérisé en ce que le capteur est une caméra de télévision destinée à analyser les dites au moins quatre lignes pseudosimultanément et la vali- dation est activée sous la commande d'un nombre minimal prédéterminé supérieur a un de lignes d'analyse valides. 4.- Dispositif de lecture suivant la revendi- 2 cation 3, caractérisé en ce que l'élément de sortie est prévu pour présenter au moins deux codes semblables, corrects quant à leur contenu, en tant qu'information validée sur la sortie de l'utilisateur. 5.- Dispositif de lecture suivant l'une quelconque des revendications 1 à 4 incluse, carac- térisé en ce que l'élément de décision possède un entrée multiplexée pour pouvoir y connecter de manière sélective au moins deux capteurs. 6.- Dispositif de lecture suivant l'une quelconque des revendications 1 à 5 incluse, carac- 3O térisé en ce que les dites tables peuvent être sélec- tionnées séparément. 7.- Dispositif de lecture suivant la revendi- cation 6, dans lequel le capteur est une caméra de télévision, caractérisé en ce qu'un sélecteur pour la mémoire de tables est prévu pour, en cas d'absence d'un code validé sur la sortie d'utilisateur, pendant une nouvelle analyse du code, sélectionner une autre table mais, en cas de sortie d'un code validé, conserver la position du sélecteur. 8.- Dispositif de lecture suivant la revendi- cation 6 ou 7, caractérise en ce que, pour une position de sélecteur, un ensemble partiel des tables, compre- nant au moins deux tables;L.fférentes, peut être sélectionné globalement.