Scanner to combine partial fragments of a complete code
Abstract
A SCANNER OR TRACKER (100) CAN READ A MACHINE-READABLE CODE (86) ON AN OBJECT. A SCANNER HAS A TRACKING DEVICE, A DATA DEVICE AND A RECORDING DEVICE. THE TRACKING DEVICE CAN REPEAT THE CODE REPETITIVELY AND PROVIDE A TRACKING SIGNAL CORRESPONDING TO AT LEAST FRAGMENTS OF THE CODE (86). THE DATA DEVICE COUPLES WITH THE TRACKING DEVICE AND RESPONSES TO ITS TRACKING SIGNAL FOR REPETITIVE STORAGE. THE REGISTRATION DEVICE IS COUPLED WITH THE DATA DEVICE TO REBUILD THE CODE OF AT LEAST TWO OF THE CODE FRAGMENTS THROUGH THE SUCCESSIVE DISPLACEMENT OF THE FRAGMENTS UNTIL THEY MARRY (103).

Term
Term ended
Projected expiry passed 23 September 2011, 15 years ago.
- Priority
- Filed
- Published
- Projected expiry
- Today
23 claims: 5 independent, 18 dependent
- 1ES 2 174 824 T3 REIVINDICACIONES 1. Un escóaner para leer cóodigo legible mediante una móaquina en un objeto, que comprende medios (10-38) de exploracioón para explorar repetidamente el cóodigo y proporcionar senñales de exploracioón que son representaciones de las exploraciones a travóes del cóodigo, incluyendo cada senñal de exploracióon al menos un fragmento de cóodigo, siendo transformada cada senñal de exploracioón en una cadena de recuentos que comprende una serie de recuentos, correspondiendo cada recuento a la anchura de un elemento del cóodigo, medios (42-84) de tratamiento de datos para recibir y almacenar las senñales de exploracioón e identificar subintervalos dentro de fragmentos de cóodigo repetidos, comprendiendo dichos medios (42-84) de tratamiento de datos medios (42) de reconstruccioón del cóodigo para reconstruir dicho cóodigo a partir de los fragmentos de coódigo, identificando subintervalos coincidentes grabados en los fragmentos de las senñales comparadas y para combinar estos fragmentos identificados de subintervalos coincidentes grabados para formar un fragmento de cóodigo extendido, caracterizado porque:dicha identificacióon de subintervalos coincidentes, grabados, en los fragmentos de las senñales comparadas, y la combinacióon de estos fragmentos identificados de subintervalos coincidentes grabados para obtener un fragmento de coódigo extendido, es realizada mediante tratamiento de dichas senñales de exploracioón en forma de dichas cadenas de recuentos.
- 2El escaóner de la reivindicacióon 1, en el que dichos medios (42-84) de tratamiento de datos comprenden, ademóas, medios (119) para determinar cuando dicha cadena de recuentos combinados representa un cóodigo completo.
- 3El escaóner de la reivindicacióon 2, en el que dichos medios de tratamiento de datos comprenden medios (111-114) para detectar coódigos de inicio y de parada y dichos medios de determinacióon (119) responden a la deteccióon de dichos coódigos para determinar cuando dicha cadena de recuentos combinados representa un cóodigo completo.
- 4El escóaner de la reivindicacióon 2, que comprende, ademaós:un contador de anchura de impulsos que genera recuentos pertenecientes a la anchura de dichos elementos de coódigo;y un contador de posicioón absoluta que genera recuentos que pertenecen a la situacioón de dichos elementos de coódigo.
- 5El escóaner de la reivindicacióon 1, en el que dichos medios (42-84) de tratamiento de datos comprenden, ademóas, medios para calcular la anchura y a situacioón de dichos elementos de cóodigo a partir de dichos recuentos almacenados.
- 6El escaóner de la reivindicacióon 1, en el que dichos medios (42-84) de tratamiento de datos tratan una pluralidad de cadenas de recuentos simultaóneamente.
- 7El escóaner de la reivindicacióon 1, en el que dichos medios (42-84) de tratamiento de datos comprenden, ademóas, medios (114) para descartar dichos recuentos comparados pertenecientes a una senñal de exploracióon, cuando dichos recuentos comparados no coinciden.
- 8El escóaner de la reivindicacióon 1, que comprende, ademaós, medios para generar una serie de recuentos absolutamente crecientes, cada uno de los cuales corresponde a una transicioón entre elementos de cóodigo.
- 9Un escóaner de acuerdo con una cualquiera de las reivindicaciones precedentes, en el que los medios (42-84) de tratamiento de datos comprenden, ademóas, medios para sumar los valores de recuentos de pares de elementos de cóodigo adyacentes, y dicha identificacioón de subintervalos coincidentes grabados se realiza sobre los valores de recuentos de pares sumados.
- 10Un escóaner de acuerdo con una cualquiera de las reivindicaciones precedentes, en el que dichos medios de reconstruccioón de coódigos promedian cadenas de recuentos coincidentes para crear una cadena maós larga que represente maós del coódigo legible por la maóquina.
- 11Un escóaner de acuerdo con la reivindicacióon 10, que comprende, ademaós, medios descodificadores (121) destinados a descodificar dicha cadena móas larga para identificar, por lo menos, parte de dicho cóodigo legible por la maóquina, antes de comparar y combinar otras cadenas de recuentos. ES 2 174 824 T3
- 12Un escíaner de acuerdo con una cualquiera de las reivindicaciones precedentes, en el que dichos medios (42-84) de tratamiento de datos estían destinados a comparar cadenas adicionales de exploraciones subsiguientes (si las hay) con una cadena completamente reconstruida, para confirmar que la cadena reconstruida estía completa.
- 13Un míetodo de leer cíodigo legible por una maíquina en un objeto, que comprende explorar repetidamente el coídigo y proporcionar senñales de exploraciíon que sean representaciones de las exploraciones atravíes del cíodigo, incluyendo cada senñal de exploracioín al menos un fragmento de cíodigo, transformar cada senñal de exploracioín en una cadena de recuentos que comprenda una serie de recuentos, correspondiendo cada recuento a la anchura de un elemento de coídigo, recibir y almacenar las senñales de exploracioín e identificar subintervalos dentro de fragmentos de coídigo respectivos, reconstruir dicho coídigo a partir de los fragmentos de cíodigo por identificacioín de subintervalos coincidentes grabados en los fragmentos de las senñales comparadas, y combinando estos fragmentos identificados de subintervalos coincidentes grabados para obtener un fragmento de coídigo extendido, caracterizado porque:dicha identificacioín de subintervalos coincidentes grabados en los fragmentos de las senñales comparadas y la combinaciíon de estos fragmentos identificados de subintervalos coincidentes grabados para obtener un fragmento de cíodigo extendido, es realizada por tratamiento de dichas senñales de exploracioín en forma de dichas cadenas de recuentos.
- 14El míetodo de la reivindicaciíon 13, que comprende, ademaís, determinar (119) cuíando dicho grupo de senñales de exploraciíon extendidas representa un cíodigo completo.
- 15El míetodo de la reivindicaciíon 14, que comprende, ademías:generar recuentos pertenecientes a la situaciíon de dichos elementos de cíodigo.
- 16El míetodo de la reivindicaciíon 13, que comprende, ademaís, generar una serie de recuentos absolutamente crecientes, cada uno de los cuales corresponda a una transicioín entre elementos de coídigo.
- 17El míetodo de la reivindicaciíon 13, que comprende, ademaís, calcular la anchura y la situacioín de dichos elementos de cíodigo a partir de dichos recuentos almacenados.
- 18El míetodo de la reivindicaciíon 13, que comprende, ademías, tratar una pluralidad de cadenas de recuentos simultíaneamente.
- 19El míetodo de la reivindicaciíon 13, que comprende, ademaís, descartar (123) dichos recuentos comparados cuando no coinciden partes de dichos recuentos comparados.
- 20Un míetodo de acuerdo con una cualquiera de las reivindicaciones 13 a 19, en el que se suman valores de recuentos de pares de elementos de cíodigo adyacentes, y dichos valores sumados se utilizan en el paso de comparaciíon.
- 21Un míetodo de acuerdo con una cualquiera de las reivindicaciones 13 a 20, en el que dicho paso de combinar senñales comprende promediar cadenas de recuentos coincidentes para crear una cadena maís larga que represente maís de dicho coídigo legible por la maíquina.
- 22Un míetodo de acuerdo con la reivindicaciíon 21, en el que dicha cadena maís larga es descodificada para identificar al menos parte de dicho cíodigo legible por la maíquina, antes de que se comparen y se combinen maís cadenas de recuentos. ES 2 174 824 T3
- 23Un móetodo de acuerdo con una cualquiera de las reivindicaciones 13 a 22, que comprende, ademaós, los pasos, a continuacioón de la reconstruccióon de una cadena completa, de comparar cadenas adicionales procedentes de exploraciones subsiguientes, con dicha cadena completa para confirmar que la cadena reconstruida estaó completa. NOTA INFORMATIVA:Conforme a la reserva del art. 167.2 del Convenio de Patentes Europeas (CPE) y a la Disposición Transitoria del RD 2424/1986, de 10 de octubre, relativo a la aplicación del Convenio de Patente Europea, las patentes europeas que designen a España y solicitadas antes del 7-10-1992, no producirán ningún efecto en España en la medida en que confieran proteccián a productos químicos y farmacáuticos como tales. Esta informacioán no prejuzga que la patente estáeonoincluáda en la mencionada reserva.
Independent claims23
158 paragraphs in 7 sections, as filed
ES 2 174 824 T3
DESCRIPTION
Scanner to combine fragments of a complete code.
The present invention relates to devices for scanning codes and, in particular, to apparatus and methods for restoring a code from different code fragments.
There are already well known equipment for reading a barcode printed on a container. Bar codes embedded in merchandise can be scanned at the point of sale to identify items and correlate them with a price. Such equipment is commonly used in supermarket checkout counters.
A basic principle that is usually applied in bar code scanning is the detection of reflected light contrasts. An illumination source such as a low power helium-neoon laser can generate a beam that is displaced through the barcode. The dark areas (bars) absorb light from the laoser, while the light areas (spaces) reflect the light that is subsequently detected by the scanner.
Optics are used to "move" a laser beam. Without this optic, the laser ray would appear as a point. When using the optic, the appearance of the beam is that of a laser light line. These are defined as moving beam scanning. As the moving beam "travels" through the transporter (or area to be scanned for a code, commonly referred to as the "scan zone") any transitions between light and dark are detected and converted into a digital signal. known as code. A valid barcode consists of a defined number of transitions between light and dark with correct relationships between the wide and narrow intervals.
Existing codes consist of a series of parallel bars separated by spaces. Bars and spaces are printed full width or half width. Bars and spaces can mean a bit pattern in which bars or wide spaces determine a "one" while bars or narrow spaces determine a "zero" (or vice versa).
A basic objective in known barcode scanning is to design a trace dense and varied enough to ensure that at least one scan recovered a complete barcode. The higher the scanning density, the faster this must occur and, therefore, the greater the demand imposed on the circuitry that handles the scanned data.
Known equipment (eg, US Patent 3,728,677) employs a mirror wheel with a polygonal periphery. The rotation of the mirror wheel causes a laoser beam to sweep through two azimuthally separated mirrors, deflecting the beam downward to trace an "X" pattern.
Other known equipment has used prisms, mirrors, vidicoon tubes, or other apparatus to deflect the scanning direction of an optical code scanning system. (See, for example, US Patent Nos. 3,663,800; 3,774,014; 3,800,282; 3,902,047; and 4,064,390).
It is also known (US-A-3 906 203) to scan a bar code and measure the width of its intervals by recording the time required to traverse each interval. The width of successive intervals is multiplied by three, five, and eight. By saving the multiplied widths of successive scans and comparing them, the team can determine if the last interval is roughly the same size as the previous one or is much smaller or larger than the previous one. This team, however, makes a relatively rough comparison and accepted as valid exploration times that are excessively short or long.
EP-A-0 310 921 describes a barcode reader that can combine incomplete fragments of a barcode. The corresponding head and tail parts of the fragments are identified by calculating the displacement between them in the reading direction. This displacement is calculated with reference to the movement of the ends of the scan fragments depending on the angle formed between the reading direction and the barcode direction. Recombination can be improved by ignoring the first and last elements of the code in each scan and comparing the data from the overlapping sections.
US-A-4,409,469 also describes a barcode reader that combines scan fragments using a geomometric relationship based on the angle formed between the direction
ES 2 174 824 T3 scanning and barcode.
There is a need for a bar code scanner that does not require the support of extraordinarily high speed circuitry but nevertheless offers a high probability of obtaining a complete code when the object is passed through the scanner.
EP-A-0 359 010 describes a scanner on which the pre-characterizing part of claim 1 is based. This scanner will be described below and is illustrated in Figures 1 to 7.
The present invention provides a scanner for reading machine-readable code on an object, comprising scanning means for repeatedly scanning the code and providing scanning signals that are representations of passes through the code, each scanning signal including, at least one piece of code, each scan signal being transformed into a chain of counts comprising a series of counts, each of these corresponding to the width of a code element, data processing means for receiving and storing the scanning signals and identifying sub-intervals within respective code fragments, said data processing means comprising means for reconstruction of code to reconstruct said code from the code fragments, identifying coincident sub-intervals, registered, in the fragments of the compared signals and combine these identified fragments of registered coincident sub-intervals to obtain an extended code fragment, characterized in that:
Said identification of registered coincident sub-intervals of the fragments of the compared signals and the combination of these identified fragments of registered coincident sub-intervals to obtain an extended cocode fragment, is carried out by treating said exploration signals in the form of said chains. of counts.
The invention also provides a corresponding method of scanning a machine-readable code on an object.
Using a method and apparatus of the type described, an improved scanner is provided. The scanner can start working when an object passes through a box. The optic scanner measures the distance between light-to-dark and dark-to-light transitions. These distances between transitions are given numerical values based on a timing process. A "digital filter" compares the numerical values of successive interval widths.
All segments of “n” transitions (a value that can be set by software) or more that pass this relationship test, are saved as a design for a subsequent rebuilding process. Designs with less than five transitions are rejected. If no design has a code that is long enough to be considered valid, the apparatus attempts to reconstruct code fragments to obtain a complete bar code design. The fragments are compared to each other in consecutive order. The fragments are superimposed, with each subsequent segment shifting until the segment designs match or match. When a complete barcode design has been reconstructed from two or more fragments, a microprocessor can decode the reconstructed barcode and verify that its validity test is correct.
The code can be ooptically scanned using a staggered "X" trace design. These staggered scans can focus on the vortexes of a triangle. Using three “X” designs, a design of a certain complexity is used, which offers a high probability of obtaining a complete barcode. But, if only one fragment of a barcode is to be obtained, the probability is nonetheless so high that with subsequent fragments the entire barcode could be reconstructed.
The invention was further described, by way of example, with reference to the accompanying drawings, in which:
Figure 1 is a schematic diagram, in perspective, of a scanning means that may be used in one embodiment of the present invention;
Figure 2A is a flat diagram of the scans produced by the apparatus of Figure 1; Figure 2B is an elevation view of a scanner using the scanning means of Figure
1;
ES 2 174 824 T3 Figure 3 is a schematic block diagram of the data processing means and data reconstruction means as described in document EP-A-0 359 010;
Figures 4A and 4B are timing diagrams illustrating signals associated with the apparatus of Figure 3;
Figure 5 is a flat diagram depicting successive scans through a bar code;
Figure 6 is a state diagram associated with the design detection circuitry of Figure 3;
Figure 7A is a flow chart showing, generally, the sequence of operations of the control signal status means of Figure 3;
Figure 7B is a flow chart schematically illustrating the sequence of operations of the microprocessor of Figure 3;
Figure 8A is a block diagram schematically illustrating the prior art code scanning system depicted in Figures 1 to 7;
Figure 8B is a block diagram schematically illustrating an embodiment of the code scanning system in accordance with the present invention; and Figures 9A and 9B are block diagrams of data processing parts of the system of the embodiment shown in Figure 8B.
The prior art code scanning system is described in accordance with Figures 1 to 7 to facilitate understanding of the invention, which is a modification described with reference to Figures 8 and 9.
Referring to Figure 1, there is illustrated a scanning means employing a source 10 in the form of a laser beam that produces, through lenses 12 and 14, a coherent, narrowly focused beam of light. Lens 12 may be axially displaced by a galvanometer 98 that is part of a dynamic focusing system, described in greater detail below. However, simply put, the larger objects scanned by this system appear closer to the scanner, while the smaller ones appear further away. By dynamically focusing with lens 12, the scanner can clearly examine relatively fine bar codes. For example, for a code resolution of 0.0254 mm, the size of the object is measured by quantifying it in 7 cm zones. For each transition between zones, lens 12 is axially adjusted by 0.00254 cm. Of course, the specific dimensions applicable in other embodiments will depend on the specific optic employed.
The beam is reflected by mirrors 16 and 18 and passes through the aperture 20 of the beam splitting mirror 22. The beam is thus directed towards the periphery of the diverting means, shown in this case as a rotating wheel 24 provided with mirrors. Wheel 24 has twelve peripheral, specular facets, each of which acts as a rotating mirror. Wheel 24 is driven by a motor (not shown) that determines the scanning speed of the laser beam.
After being reflected off wheel 24 (and depending on the angle of the reflected ray), the ray is then reflected from one of the faces of a pair of non-coplanar mirrors, illustrated herein as a first and second contiguous mirrors 26. These Mirrors 26 take the form of a mirror bent at an obtuse angle whose vertex faces the wheel 24. Consequently, a beam deflected by wheel 24 may strike the peak of mirrors 26 and be reflected to the right or left to intercept mirror 28 or mirror 30, respectively. Depending on the path followed by the laser beam, one or the other of the branches of the "X" design 32 is produced. As illustrated by the return rays 34, the light can return along the original path of the exiting laser beam and be reflected back onto mirror 30 (or mirror 28). After that, the returning laser light is reflected by the mirrors 26, 24, and the reflecting face of the beam splitting mirror 22, before reaching a collecting lens 36. The light thus collected is focused by the lens 34 onto the sensor. 38 to measure whether you are scanning a dark or light range.
The foregoing describes the path for a scan of the middle of an “X” pattern. The same principles apply to operation for the other half of the design. Working,
ES 2 174 824 T3 mirrors are used to divide the single scan line into two parts. As the mirror wheel 24 rotates at high speed, the beam treatment mirrors 26, 28 and 30 cause two lines of the "X" pattern to alternate rapidly. For example, five facets of the mirror wheel, at low speed, would appear as “/ / '. If the projection was done at high speed, the “X” pattern would be visible.
The scan head of Fig. 1 will be supplemented with additional mirror systems to produce three "X" designs and each will have separate electronic processing equipment, of the type described below. Consequently, it is only necessary that a design in "X" be processed by a circuit. In this preferred embodiment, mirrors 20, 26, 28, and 30 are repeated twice, such that there are three mirror arrays located at positions 90 degrees apart. Using three lasers, three separate "X" shaped scans can be generated.
Figs. 2A and 2B illustrate three scans "X" I, "X" II and "X" III generated by three optical systems, each of them as represented in Fig. 1. In a preferred embodiment, the line of a design in The "X" shape has a length ending in A and B, for the useful length (80% efficiency) and the effective length of the line, respectively. These two lengths are for objects 71 cm from the scanner. The term C represents the total length of the physical line for an object located 106 cm from the scanner in Figure 1. The separation L1 in the direction of travel, between scan “X” I and scan “X” II, in the preferred embodiment is 7 cm. The effective length L2 of the scan line A in the direction of travel is preferably 16.92 cm. The length L3 in the direction of travel is about 40 cm. In this embodiment, the spacing W1 between "X" patterns, in a direction perpendicular to that of displacement, is 11.85 cm. Preferably, the usable width W2 along a conveyor would be 40 cm.
The carriage signal is derived from photocells 40, 41 at the beginning and at the end of the carriage. In this embodiment, carriage photocells 40, 41 cover an optical path that, when interrupted by an object moving in the direction of travel, generates a signal indicating the need to begin a scan. The spacing between the photocell 40 and the end points B of the "X" II and "X" III designs (gaps M1 and M2) are set to ensure complete scanning of the coded object. It would be appreciated, however, that all of these dimensions may change depending on the size of the code and the relative uncertainty about the placement or distance of the object or code from the object to be scanned.
A typical scanning system would employ a mirror wheel with the mirrors from two adjacent sides being used to produce the other two "X" designs in Fig. 2. Using two "X" scanners, one conveyor can be covered with six "X" designs. X ”, and a scan zone is created to ensure that bar codes located on products moving on the conveyor would be intercepted by one or more of the scan lines.
As shown in Fig. 2B, the scanner may be contained in a housing S and supported by a brace BR mounted on the platform P above the work surface W. When there is a large gap between the platform P and the surface working width W, the laser is required to be focused with a large depth of field. Consequently, the height of an object is determined by the Z zone detector. Relatively small objects will not intercept any of the rays associated with Z1-Z7 photocells. The next class of large objects of mine will intercept the beam associated with photocell Z1. Successively larger objects would intercept the rays of the other photocells, my large objects intercepting the rays of all the photocells. The zone detector Z generates in response a digital signal indicative of the number of zones intercepted. The spacing between zones depends on the fineness of the barcodes to be examined. For example, a 2 of 5 interleaved bar code with a minimum bar width of 0.0254 cm would require the photocells to be positioned 7.6 cm apart. If the code had a minimum bar size of 0.051 cm, the photocells would be positioned 12 cm apart.
Referring to Fig. 3, a data reconstruction means is shown as a microprocessor board 42 which, in this embodiment, employs a microprocessor chip such as a type 80286 manufactured by Intel. The microprocessor board 42 is illustrated coupled to three data processing means: data processing means 44 and 46, the third data processing means being shown in elaborate form. The third data processing means constitute the remainder of the system, excluding blocks 42, 44 and 46. The microprocessor board 42 has its own internal memory. In addition, each of the data processing means includes common memory means illustrated, in this case as a double-door, random access memory 48. The memory 48 has a gate that constitutes the general data transmission line DA and the general transmission line
ES 2 174 824 T3 of addresses AD, both lines being coupled between the microprocessor board 42 and the common memory 48. The other port comprises the general data transmission line DATA and the general address transmission line ADT. The dual gate memory can have 1 Kb high speed RAM (SRAM) (type IDT7130).
It will be noted that the DATA and ADR lines allow automatic updating of code data and string qualifying data in RAM 48 without intervention from the microprocessor board 42. This frees up the microprocessor board 42 and allows a very high speed update of the code data, without being limited by the speed of the board 42.
A counter 50 is shown connected to the clock input CLK, to count it. Counter 50 has a capacity and speed that are determined by the desired scan speed and resolution. As further described below, the counter 50 is enabled by the CART * CSCAN terminal during a scan, after an object is detected by the carriage photo cells (items 40, 41 of Fig. 2A). The count is determined just before clearing the counter content by the transition signal at the DEC2 terminal. The accumulated count in counter 50 is loaded into first register 52A, an eight-bit data lock circuit, by the transition signal at terminal DEC1 in sync with the clock input at terminal CLK3. Register 52A is cascaded with registers 52A and 52B that are interconnected to shift data from register 52A downstream, ie, to registers 52B and 52C.
The data loaded into the recorder 52A is compared to an upper limit and a lower limit through limit devices 54A and 54B, respectively, in order to signal an out-of-range condition. The second and third registers 52B and 52C each have their outputs connected to separate inputs of multiplexers 56 and 58. The output of the multiplexer 56 is applied to the data input of a quantization means that is shown in this case as a programmable, read-only memory 60, organized to act as query means. Memory 60 is actually made up of six sections. Each section responds to common data input to generate a signal that signifies a tolerance limit. The limits are three pairs, each centered around a nominal value, with a predetermined tolerance for that nominal value. The three nominal values are the input value multiplied by one, by half, or by two. As explained in greater detail below, these tolerances with respect to nominal values allow the comparison of successive locked values to determine if successive scan intervals are equal to, greater than or less than the code interval from which they originate.
The three pairs of data limits of the query means 60 are applied to separate inputs of a comparator means 62. The comparator means 62 has six digital comparators that compare the output of the first register 52A with each of the six limit values of the memory 60. Accordingly, the recent output from the first register 52A may be (or found not to be) within limits set by memory 60 based on previous values (stored in either the second register 52B or the third register 52C). Covered values are indicated by the six output lines of comparators 62.
The outputs of the comparators 62 are applied to a pattern detector machine 64. In a preferred embodiment, the detector machine 64 includes a configurable array of XILINX logic, type XC2064. This array is a 68 pin programmable CMOS gate array. Such a grouping allows the practical incorporation of a substantial amount of logic into an integrated package. This high-speed circuit is capable of detecting bar widths as small as four hundred nanoseconds.
As described in greater detail below, the design detection means 64 is constituted by a nine-state machine whose state is determined, in part, by the inputs of the comparators 62. The other terminals of the design detection means 64, CODE, WRXN, CNT2, XTNDEC, SCAN, CLK and DEC, correspond to the state of the optical scan (light or dark), the end of a scan, a clock event, an extended pulse synchronized with a code transition, the start of a scan, the clock pulse, and a non-extended code transition signal, respectively. Pattern detection machine 64 provides a pair of outputs to monitor the status of multiplexers 56 and 58. The control signal from multiplexer 56 is connected, also to an input of memory 60.
An important feature of the design detection means 64 is the recording means 66. In operation, the logical grouping of the design detection means 64 can
ES 2 174 824 T3 set certain bits. As explained below, successive bits detected in a scanned barcode are stored by design means in register means 66 before being transmitted to dual gate memory 48.
The pattern detection means 64 generates output on five control lines 68 to a control signal state machine 70 having similar logical grouping as the pattern detection means 64. Machine 70 employs three programmable logic arrays (PALS) to enable the various other devices illustrated herein. The control is carried out by the control lines 72. The three PLDs of the machine 70 include one device type PAL16R6 and two devices type PAL16L8. The device type PAL16R6 is a grouping with registered outputs that are used to generate twenty-three different synchronous states with the system clocks. These states are encoded by five bits that are the outputs for the combination logic. In this case, two PAL16L6-type devices are used to incorporate combinatorial logic based strictly on the state of the machine 70 into practice.
The outputs are a function of the current state only. Thus, this design can be considered a Moore machine; that is, the outputs depend on the previous input history held in this state, but are not directly affected by input values. For this reason, a fully synchronous control circuit is used to ensure independence from timing problems.
Control lines 72 include four inputs to double gate RAM 48. Enable signals are also provided by lines 72 to counting means 74 including a counter and latch circuit, so that the total number of failed scans, read from the BAD SCANS terminal, can be recorded on the data line. DATA.
A label position sensing means is represented herein as a label position counter 76, a latched counter enabled by the control lines 72. An input is provided from the status machine 70 the control signal along line 72 which digitally signifies the position where the valid scanned code ends. The count stored in counter 76 can be recorded on the DATA bus.
A scan number counter 78 is incremented at the beginning of each scan and is enabled by line 72 from the control signal status machine 70. Counter 78 is locked so that its count can be recorded on the DATA bus.
A scan number counter 78 is incremented at the beginning of each scan and is enabled by line 72 from control signal status machine 70. The counter 79 is locked so that its count can be recorded on the data transmission line DATA.
The length of the string stored in the recording means 66 is loaded by the control signal status machine 70 into the string length counter 80. The counter 80 also provides the ability to count the consecutive number of transitions in which the ratio of interval widths is one. The counter 80 also has a data output to the data transmission line DATA.
A narrow width means is illustrated, in this specification, as the latch circuit 81, which stores the data outputs from the multiplexer 58. As will be explained in the following, the stored value is a value corresponding to the width of a narrow range measured by counter 50. The output of the narrow-width media 81 is coupled to the DATA line.
An access means is shown herein as a string data counter 82 and a low string qualifying counter 84. The outputs of the counters 82 and 84 are connected to the access line ADR to indicate a location in the double-door RAM 48 where data is to be stored. The string data counter 82 is used to point to a location for storing the code bits of the register means 66. Counter 84 is used to point to a location in RAM 48 to store the counts for counters 74, 76, 78, and 80.
In this specification a focusing means is shown as latch circuitry 85 coupled to the Z zone detector (Fig. 2B) and a galvanometric focusing device 98 (Fig. 1). When interrogated by the microprocessor 42, the means 85 transmits a signal corresponding to the highest zone number intercepted by the object carrying the bar code. When a focus number is transmitted by microprocessor 42, a latch circuit (not shown) is established in the means
ES 2 174 824 T3
85. This setting is converted by a digital-to-analog converter (not shown) into an analog signal that activates the galvanometer in the focusing means 98 (Fig. 1). Consequently, focusing of the laser is achieved under the control of the processor. To facilitate an understanding of the principles associated with the aforementioned apparatus, its operation will now be described briefly. With the laser 10 (Fig. 1) illuminating the mirror wheel 24, the "X" pattern 32 is traced. Light and dark bars reflected from a code falling within the "X" pattern 32 are reflected back to the photodetector 38. As shown in Fig. 5, successive scans from one branch of the "X" pattern 32 they can loop through bar code 86 to generate a code signal.
Referring to Fig. 4A, the previously mentioned CLK clock signal is shown as several high frequency square pulses. The response of the photodetector 38 in the scanner of Fig. 1 is indicated as the CODE output in Fig. 4A. A type D flip-flop (not shown) is triggered by the CLK clock input to hold the data indicated by the CODE signal. A synchronous code signal is indicated as a SYNCODE signal in FIG. 4A. The SYNCODE signal is combined with the CLK clock signal to generate a single DEC1 pulse that begins at the leading edge of the SYNCODE signal and ends one clock pulse period later. A next pulse on the DEC1 signal is similarly generated after the falling edge of the SYNCODE signal. The transition signal DEC2 is a pulse delayed by one clock pulse period relative to signal DEC1. The relationship between the CODE signal and the DEC1 and DEC2 transition signals is represented on a larger time scale in Fig. 4B.
Referring to FIG. 3, a code transition causes a DEC1 terminal to lock the current count of counter 50 to register 52A. One clock pulse period later, the pulse at terminal DEC2 clears the contents of counter 50. Thus, at each node transition, a new count is saved and then cleared so that a subsequent interval can be measured. It will be noted that any values stored in registers 52A and 52B are first transferred to registers 52B and 52C, respectively. Thus, between successive transitions, the counter 50 counts the width of the interval detected by the scanner of Fig. 1. After each transition, the counts ripple through the registers 52A, B, and C. Thus, the recorders 52A, B and C can be considered as snapshots of the last three interval widths, determined by the scanner of Fig. 1.
Once the 52B logger has been loaded, you can have a comparison run. Initially, the register 52B is connected through a multiplexer 56 with the memory 60 to generate six outputs: the input multiplied by 1/2 -20%, 1/2 +20%, 1 -20%, 1 + 20%, 2 -20%, 2 +20% (0.4, 0.6, 0.6, 1.2, 1.6 and 2.4). These values are used to determine if the previous count of counter 52B is approximately half, equal to, or twice the count currently locked in register 52A. Thus, memory 60 is used to establish a 20% range or tolerance around each value.
The bottom line (Counts) of Fig. 4B, and Table 1, illustrate how the counter values latched on the 52A, B, and C registers are staggered through the registers so that bars can be compared with bars and spaces. with spaces. Using scan 2B of Table 1 as an example, register 52B will contain a count of 19. The outputs of memory 60 will then be 8, 12, 16, 24, 32 and 48. The value of the register 52A is compared with the value of the register 52B, in this case a first bar (1B) is compared with a first space (1S). The count value of eighteen from the register 52A therefore falls between a pair of values from memory 60, namely 16 and 24. In response, the states of the comparators 62 will indicate this delimitation to the detection means 64. of design. It will be observed that a bar is compared to a single space in the initial phase, when there are insufficient data available to compare similar intervals. Comparison of similar ranges is more desirable because, in practical embodiments of printed bar codes, the width of the bars will tend to be equal, as will the width of the gaps. But the bars and spaces will not necessarily have the same width.
ES 2 174 824 T3
TABLE 1
<td rowspan="2">Exploration Type</td><td rowspan="2">Size</td><td colspan="3">Hitch Circuits</td><td rowspan="2">Design Code Registrar</td><td rowspan="2">Compare</td><td rowspan="2">Data</td>
<td>TO</td><td>B</td><td>C</td>
<td>1 B</td><td> 19</td><td></td><td></td><td></td><td>MSB LSB</td><td></td><td></td>
<td>1S</td><td> 18</td><td> 19</td><td></td><td></td><td> 0</td><td></td><td></td>
<td>2B</td><td> 22</td><td> 18</td><td> 19</td><td></td><td> 00</td><td>1B -1S</td><td></td>
<td>2S</td><td> 18</td><td> 22</td><td> 18</td><td> 19</td><td> 000</td><td>1B - 2B</td><td></td>
<td>3B</td><td> 21</td><td> 18</td><td> 22</td><td> 18</td><td> 0000</td><td>1S - 2S</td><td></td>
<td>3S</td><td> 17</td><td> 21</td><td> 18</td><td> 22</td><td> 00000</td><td>2B - 3B</td><td></td>
<td>4B</td><td> 42</td><td> 17</td><td> 21</td><td> 18</td><td> 000000</td><td>2S - 3S</td><td></td>
<td>4S</td><td> 19</td><td> 42</td><td> 17</td><td> 21</td><td> 0000001</td><td>3B - 4B</td><td></td>
<td>5B</td><td> 21</td><td> 19</td><td> 42</td><td> 17</td><td> 00000010</td><td>3S - 4S</td><td> 02</td>
<td>5S</td><td> 40</td><td> 21</td><td> 19</td><td> 42</td><td> 00000100</td><td>4B - 5B</td><td></td>
<td>6B</td><td> 41</td><td> 40</td><td> 21</td><td> 19</td><td> 00001001</td><td>4S - 5S</td><td></td>
<td>6S</td><td> 18</td><td> 41</td><td> 40</td><td> 21</td><td> 00010011</td><td>5B - 6B</td><td></td>
<td>7B</td><td> 22</td><td> 18</td><td> 41</td><td> 40</td><td> 00100110</td><td>5S - 6S</td><td></td>
<td>7S</td><td> 38</td><td> 22</td><td> 18</td><td> 41</td><td> 01001100</td><td>6B - 7B</td><td></td>
<td>8B</td><td> 42</td><td> 38</td><td> 22</td><td> 18</td><td> 10011001</td><td>6S - 7S</td><td></td>
<td></td><td></td><td> 42</td><td> 38</td><td> 22</td><td> 00110011</td><td>7B - 8B</td><td> 22</td>
<td></td><td></td><td></td><td> 42</td><td> 38</td><td></td><td></td><td></td>
<td></td><td></td><td></td><td></td><td> 42</td><td></td><td></td><td></td>
The pattern detection means 64 determines which binary values should be loaded into the code pattern register 66 in response to the six outputs of the comparator 62. Regardless of the width of the first interval, a zero is initially recorded in the register 66, designating the first bar as a zero. The first interval would subsequently be defined as a one by the design means 64 if the next space had half the value.
After the next bar is received, the data is shifted in registers 52A, B, and C, in response to the transition signal at terminal DEC1. After that, the value of the register 52C can be compared with the value of the register 52A. This process allows you to compare bars to bars and spaces to spaces.
After each comparison, the design detection means 64 determines, from the previous state, what is to be loaded into the register 66 (a zero or a one). A zero represents a narrow bar or space and a one indicates a wide bar or space. When eight bits of information have been shifted in the register 66 (one byte being created), the information is recorded in the dual gate RAM 48 by the control signal status means 70. In the example in Table 1, the first recorded octet is 02 (hexadecimal). The second octet is 33 (hexadecimal).
Fig. 6 illustrates the design detection algorithm of the design detection means 64. The machine is a synchronous state machine. A bar or space is compared to an adjacent or alternating bar or space. If the ratio is equal, half or double (within tolerances), then a valid design is found. A design is not valid if none of the previous comparisons is true (nothing is stored in the case of invalid designs). If the number of consecutive valid relations exceeds five (up to eight), the numerical representation of these designs is saved in memory, that is, a binary string of ones and zeros.
Due to the nature of the algorithm, the design detection means 64 is very fault tolerant. A variable margin of error, set by the memory 60, is incorporated with the digital comparator circuit 62, to allow a more flexible comparison of the width of the bars and the spaces. Due to this comparison, it is possible that a bar varies with respect to another bar by a high percentage and continues
ES 2 174 824 T3 being recognized as part of a valid design. In most cases, a bar is only compared to a bar and a space to another space. This is important because most barcode label prints are broken, causing the width of the bar to vary considerably with the width of the space.
As shown in Fig. 6, the design detection means 84 (Fig. 3) has a total of nine unique states, labeled AI. The design detection means 64 operates on an asymmetric clock identified as terminal XTNDEC (Fig. 3), a pulse generated at each transition between intervals and extended for five clock cycles. The operation of the design detection means 64 can be divided into two halves in that only half of the machine is active at all times, either the left or the right half. Fig. 6 clearly shows that the two halves are symmetrical. the left half consists of states C, E, G, and I, while the right half contains states B, F, D, and H. The right half of the pattern detection means 64 is used if the first scanned bar is determined to be narrow. Otherwise, the left half is active.
The function of each state is described as follows:
State A: Power on state. It also occurs if the comparison is the same in this state or if any undefined comparison occurs.
State F: The comparison is double in state A, in state B or it is the same in state H. Likewise, the comparison is double AND INTERVAL is low (that is, no chain of more than four transitions is found and no store data) in state D or state C.
State D: The comparison is double in state F or it is the same in this state.
State H: The comparison is the same in state F or it is half in state D.
State B: the comparison is half in state H or it is the same in this state.
State G: The comparison is half in state A, in state C or it is the same in state I. Likewise, the comparison is half AND INTERVAL is low (that is, no chain of more than four transitions is found and no data is stored) in state E or state B.
State E: The comparison is half in state G or it is the same in this state.
State I: The comparison is the same in state G or it is half in state E.
State C: The comparison is double in state G or it is the same in this state.
ZOUT: The ZOUT signal is the output signal of the control signal status machine. A "one" was shifted in the shift register for a wide interval and a "zero" was shifted for a narrow interval. (A "one" means a wide interval).
In addition to the functions described above, the LCA of the design detection means 64 also contains various timing signals for loading counters and storing data.
TABLE 2
<td>Exploration</td><td colspan="4">Data</td><td>Length Dadena</td><td>Value Close</td><td>Position Hashtag</td><td>Exploration Bad</td>
<td> 1</td><td>(Without</td><td colspan="2">Data)</td><td></td><td></td><td></td><td></td><td></td>
<td> 2</td><td> 02</td><td> 04</td><td></td><td></td><td> 09</td><td> 99</td><td> 50</td><td> 0</td>
<td> 3</td><td> 02</td><td> 33</td><td></td><td></td><td> 15</td><td> 99</td><td> 50</td><td> 0</td>
<td> 4</td><td> 02</td><td> 66</td><td>TO 5</td><td></td><td> 22</td><td> 20</td><td> 50</td><td> 0</td>
<td> 5</td><td> 13</td><td> 34</td><td>A7</td><td>9C</td><td> 26</td><td> 99</td><td> 50</td><td> 0</td>
<td> 6</td><td>9A</td><td> 53</td><td> 81</td><td> 06</td><td> 26</td><td> 20</td><td> 50</td><td> 0</td>
<td> 7</td><td> 94</td><td>E0</td><td>0C</td><td></td><td> 21</td><td> 99</td><td> 45</td><td> 0</td>
<td> 8</td><td> 70</td><td>0C</td><td></td><td></td><td> 14</td><td> 99</td><td> 40</td><td> 0</td>
<td> 9</td><td>0C</td><td></td><td></td><td></td><td> 07</td><td> 99</td><td> 35</td><td> 0</td>
The control signal status machine 70 (FIG. 3) records bytes of latched data from
ES 2 174 824 T3 of various registers in the double-door RAM 48. This memory is accessed simultaneously by the microprocessor board 42, allowing high speed operation. While the machine 70 stores the current data from the present scan on the ADR, DATA gate, the saved data from the previous scan is read by the microprocessor board 42 on the other DA, AD gate.
Referring to Table 2, at each scan, one or more bytes of data indicating bar widths and gaps may be obtained. After the scanned width data has been recorded in the DATA line, the data from the latching circuits and counters connected to the DATA line sequentially record the string length, small width value, label position, and the number of erroneous examinations, indicated. For example, the third scan produces two bytes of data indicating the bar code layout and narrow and wide gaps. The length of the string, however, is only fifteen bits, indicating that the last octet has only seven valid data bits. For this scan, the small width value stored by counter 81 is 99, which is appropriately compared to the small width value from the previous scan, scan number two. Similarly, the label position of the counter 76 is 50, which is appropriately compared to the previous value of the label position.
The data bytes indicating the slot widths are stored between the position XF00 and XF1F of the double gate RAM 48. The maximum number of bytes that can be saved is thirty-two (that is, 256 transitions). The next block of memory is the string qualifier data block. This block includes the value of small width, string length, label position and number of erroneous scans. String qualifier data is stored between memory locations XF20 and XFC1.
The outputs of counters 74-81 are "triple state", so only one uses the DATA line at a time. Referring to the flow graph of Fig. 7A, it shows the sequence of operations of the control signal state machine 70. When initialized, the machine 70 begins at step S1 (Fig. 7A). Loop I begins with a branching decision. If a transition occurs (DEC signal) and the scan has not been passed, branches S1 and S2 transfer control to steps S3 and S4 so that memory 48 is loaded with an octet of values that indicate a pattern of bits of bars and spaces. The string data counter 82 is incremented, pointing to the appropriate address.
On the next transition, the entire scan is completed, then loop II is executed. In loop II, machine 70 successively stores bytes of slot design data and then increments the address pointer. Steps S5 and S6 are essentially the same as Steps S3 and S4 previously described. In the following steps S7 and S8, the string length of counter 80 is written to memory 48, on the DATA line. String qualifying octet counter 84 is incremented. Next, in steps S9 and S10, the content of the narrow value latch 81 is loaded into memory 48 on the DATA line. The string qualifying octet counter 84 is incremented to indicate the next position. In steps S11 and S12, the value of the label position counter 76 is loaded by the data line DATA into the memory 48 and the counter 84 is incremented. In steps S13 and S14, the content of the erroneous scan counter 74 is loaded into the memory 48 by the DATA line and the counter 84 is incremented again.
If the scan is complete, loop III is executed so that the number of scans stored in counter 78 is loaded into memory 48 by DATA line at the address indicated by counter 84 which is then incremented.
The actual control signals for the registers and the memory interface are incorporated into the machine 70. The function of various timing events is described as follows:
WINDOW: Indicates that the current string is saved. This occurs if the minimum string length of five has been exceeded. This signal is returned at the end of the chain.
SAVSD (L5): Indicates that an octet of string data has been saved. This occurs when the eight-bit shift register is full or when the chain has finished.
SAVALL (L3): Indicates that all data was saved (that is, string data, string length, narrow value, tag position, and number of failed scans). This signal is active if the chain has ended.
SLEQCR (L1): Determines if chain length counter 80 was loaded with an A1 ”or with the
ES 2 174 824 T3 number of consecutive equal WIDTH / NARROWS. An A1 ”is chosen if the chain has finished or if no chain is being saved. Choose later if the comparison for a width is double or if the comparison for a narrow is half AND the current chain is not being saved.
LDSLC / (L2): Synchronous loading of the string length counter (SLC). It happens if the current chain was being saved or if the comparison is JUNK (GARBAGE).
LDEQ / (L4): Synchronously loads an A1 ”in the consecutive equals counter (CEC). Occurs if the comparison is not the same.
JUNK: It happens if the comparison is not half, equal or double. It also occurs if the bar / space width exceeds the preset limits.
SELREG2 (Mux_sel): Selects the 52B recorder or 52C recorder for an adjacent or alternate comparison, respectively. Choose the adjacent comparison if in state A the comparison is JUNK. Choose the other if the comparison is not JUNK.
Since the machine 70 was arranged as just described, each state goes to the next state or does not change. Likewise, the next state is always a new state and never a previous state. This ensures that, within a repetition, no state can be active more than once.
Referring to FIG. 7B, the operation associated with the microprocessor board 42 of FIG. 3 is illustrated when scan data is available. The flow chart of Fig. 7B is executed starting at S20, reading the scanned data bytes. Next, in step S21, the string qualifying data is read: the scan count number, the string length, the small width value, the label position and the wrong scan number. Next, in step S22, the microprocessor determines whether the last scan is equivalent to the previous scans in terms of the label position value and the small width value. If it is not, control returns to step S20; otherwise, control is handed over to step S23. In step S23, the microprocessor shifts the most recent bit pattern with respect to previous bit patterns to see if there is a comparison sub-interval. If it exists, control moves to step S24; otherwise, control returns to step S20. Steps S24 and S25 are executed to store the reconstructed string. If the reconstructed string is long enough, the microcomputer indicates that a complete and valid code has been assembled. This valid code, once assembled, can be used in the usual way.
It will be appreciated that various modifications and alterations can be made to the apparatus just described. For example, although three "X" designs have been illustrated, a different number may be used. Also, scan geometries other than an "X" pattern may be used. For example, a lone uonic can be used if the code traverses it with a shallow enough angle. A calculation can be used if the code is restricted to a circle. Two or more blotting lines can be used if the code passes through at least one of them at a shallow enough angle. Any of these scan designs can be cross-linked to increase the area it covers. The arrangement and use of the mirrors can be altered depending on the desired scanning mode of the laoser beam.
Although the comparison between data strings was conditioned by those with corresponding tag positions and narrow values, different comparisons may be used or no comparison at all. The tolerance imposed on the relationships between current and prior range widths can be varied depending on the expected precision of the printed codes. Although printed, ooptically readable labels have been described, it will be understood that other media such as magnetic media may be employed instead. The illustrated digital circuits can be made up of larger or smaller scale integrated circuits and can be made up of clusters, as shown, or they can employ another independent digital signal processor or microprocessor. Also, the speed and dimension of the scan can be altered, depending on the particular application.
However, with the present invention, the sequence in which various steps are performed is altered. For example, Fig. 8A schematically summarizes the above-described system in conjunction with Figs. 1a7of the drawings. Thus, a scanner 100 was provided to optically scan the machine-readable code, providing electrical signals for further processing. Such processing includes generation of specific counts, at 101, followed by compression (ie, conversion) of data to digital form, at 102. The compressed data is then shifted and compared, at 103, to recreate the coding code.
ES 2 174 824 T3 bars scanned (from discrete portions that have been read). The rebuilt bar code is then decoded, at 104, providing the desired output. Thus, by digital comparison, a complete bar code can be reconstructed from two or more discrete fragments, as previously described.
Fig. 8B illustrates an alternative sequence of steps to scan a barcode. Once again, a scanner 100 is provided to ioptically scan the machine-readable code. This is followed, again, by the generation of specific counts, at 101 '. However, unlike the system of Fig. 8A, the system of Fig. 8B then works to scroll and compare the scanned data, at 105, based on the counts that have been generated, to reconstruct the bar code. The reconstructed bar code is then decoded (digitally compressed and decoded), at 104 ', providing the desired output. In this way, a complete bar code can be reconstructed numerically from two or more fragments. More details regarding this alternative technique for reading machine-readable code are provided below.
The scan (at 100) of the machine-readable code is accomplished in a manner that substantially corresponds to that previously described in relation to the system schematically illustrated in Fig. 8A, or by using some other suitable scan design, of so that "slices" of the bar code are read by the scanner as the code passes through the scanner. Generally, no slice will contain a complete barcode, and a plurality of slices would have to be processed to reconstruct the entire barcode. For this purpose, the scanner provides three output signals. A CART signal is provided to indicate that an object has entered the scan area. A SCAN signal is provided at the beginning of the scan layout, which is interrupted at the end of the scan layout. A CODE signal indicates areas in black and white on each scan.
These signals are then applied to the pulse counting portions 101 'of the system. During each scan, pulse width counts (PWC) are generated to represent the widths of the black and white sections identified by the CODE signal. Each fragment (slice) of the bar code would therefore generate a plurality of bars (blacks) and spaces (blanks), producing a succession of counts (for each bar and space) incremented at the system clock frequency. It is to be noted that these pulse width counts are generated in real time, in the preferred manner, although other practical runs are possible (provided appropriate buffers are available between the scan operation and subsequent processing operations described in go ahead).
In addition to generating pulse width counts, an additional counter is started at the beginning of each scan (ie, reset to "0") to create an absolute position counter. During the scan, this counter is also increased at the system clock frequency, reaching a maximum value at the end of each scan. Thus, the absolute position counter functions to indicate the location of the pulse width counts collected during each scan. For this purpose, at each transition from black to white, the contents of the absolute position counter are hooked to identify the transition position count (i.e. the situation), while at each transition from white to black, ( in memory) the pulse width count of the previous bar, the pulse width count of the previous space and the transition position count for the pair, for further processing. Pulse width count and transition position count transfers to memory are done in real time, using a DNA (direct memory access) process.
An alternative approach to this would be to make use of a single high-speed counter that starts at zero at the start of a scan and counts down to a maximum value at the end of the scan. The content of the counter would then be saved for each transition of the CODE signal, with the simple subtraction of one value from the next serving to provide an accurate indication of the pulse-bar width counts, pulse-gap width counts, and position counts. transition (for subsequent treatment).
After each scan, all scan data is processed to determine if one or more series of pulse width counts (strings) are part of a possible valid barcode. Any string that exceeds a certain minimum length that satisfies this criterion is stored in memory. This process is repeated at the end of each exploration as long as the object to be explored is in the exploration area. Between the end of this process and the end of the next scan, steps are taken to re-create the bar code in memory using the pulse width counts and transition position counts that have been generated.
ES 2 174 824 T3
Referring now to Figs. 9A and 9B, the first step in this process is to check each string, in qq0, to find one that contains a valid beginning (start) part or an ending (stop) part of the barcode, at 111. It is important to note that since it can be recognized whether the design has a forward or backward orientation, or wherever within the string, a white area (called a “quiet zone”) is not required around the bar code. When a valid start or stop design is found, the corresponding chain is used to form the first chain of a "group", at 112. It should be noted that several groups can be started and that a single chain can lead to the creation of more than one group. Furthermore, it should be noted that since the strings of each scan are processed in the order in which they are transferred to memory, several groups can be processed in parallel.
As a group is formed, at 112, a valid middle part of the first chain is identified. The transition position count for this valid middle part is then saved and a margin (plus / minus) is created. Following this, the next scan is investigated, at 113, looking for a string that matches (trial 114), at least in part, if not entirely, with the previous string in the group. To avoid a failed match, only the part of the next string that falls within the transition position count range of the previous string is used. It is possible that no string from the subsequent scan will fit within the selected range, in which case a string from the next scan will be scanned. If after a few scans, a matching string cannot be found (test 115), the group is discarded, at 116 and another is analyzed.
The comparison process described above is summarized as follows. The strings for each scan are represented as a series of pulse width counts (ie, bar, space, bar, space, etc.). The second string is shifted to every possible position within the calculated range, specified for the first string. A comparison is then made between the pulse width counts for both strings at each possible position. To improve the accuracy of this comparison, preferably the adjacent bars and spaces are added so that a bar and an adjacent space create a bar / space pair, while the same space and the next adjacent bar create a space / bar pair ( and so on) that are then used for comparison purposes. Alternatively, a bar can be compared to a bar and a space to a space. In either case, since the data is relatively offset and comparisons are made, the pulse width counts of both strings will eventually match (i.e., the pulse width counts will fall within an acceptable tolerance), identifying a recorded middle portion. of adjacent strings (fragments) of a scanned barcode.
It should be noted that it is not necessary to compare the entire string, but only something in the middle that contains at least a predefined minimum number of bar / space pairs. This allows data, not bar code, at either end of the strings, eliminating the need for a quiet zone around the tag.
Once a match is found, the second string is appended to the first (the group), at 117. To do this, the matching pulse width counts are preferably averaged to create a longer string containing more of the bar code of what any single chain will constitute. Then, this string is preferably decoded to identify at least part of the bar code and confirm that the scrolling and comparison procedure was carried out correctly. This process is then repeated for successive scans (loop 118), each time creating a longer chain containing more of the bar code being scanned.
Eventually, a string will be added to a group containing the end (stop) part of the barcode, assuming that the beginning (start) part led to the creation of the group, or the beginning (start) part of the barcode , assuming that the final part (stop) led to the creation of the group. When this is detected, at 119, a single chain of pulse width counts will have been formed containing a complete bar code. The final string is then decoded, at 121, to complete the reconstructed barcode. As further evidence, at 122, subsequent scan strings (if any) are preferably compared to the full string, to ensure that there is no overshoot, and that the assembled group is, in fact, a full barcode and it is not part of a larger bar code, which has not yet been completely rebuilt. If overshooting occurs, the group is reopened so that a longer bar code can be decoded. Otherwise, the group is discarded, at 123. If no overshoot occurs, the group is considered complete and a valid barcode has been decoded.
This same procedure is repeated, at 124, for each group that has been formed. Each group iden14
ES 2 174 824 T3 is completed or discarded, as previously described. This allows the decoding of multiple barcodes and, for another section of the layout generated by the scanner (eg an "X") to decode the same label again.
The operations listed above contribute to several operating advantages. For example, as previously stated, no quiet zone is required on either side of the label. Instead, pulse width counts representing non-bar code data at the ends of the string are simply ignored during the scrolling and matching process. This also has the advantage that even severely damaged bar codes can still be recreated. What's more, damaged chains can be saved if the section that falls within the counting range of the transition position is nevertheless valid. Otherwise the string is ignored and the next string is parsed. It is not necessary to use all of the partial strings to re-create a particular barcode.
Another advantage is that multiple tags can be decoded on a single object, whether they are of the same type of code and / or of the same length, or not. The absolute deposition counter generates highly accurate transition position counts for each bar / space pair, ensuring valid string comparisons and allowing the decoding of separate bar codes, as close as 0.635 cm.
Another advantage is that, except for the initial scan procedure and transition equipment necessary for the count and memory transfer procedures, the above-described system can be fully incorporated into software.
Contents7
11 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11
38 members in 11 offices
Priority claims5
| Document | Office | Kind | Date |
|---|---|---|---|
| 19900586545 | United States of America | – | |
| 58654590 | United States of America | A | |
| 58654590 | United States of America | A | |
| 91919087 | – | – | – |
| US19900586545 | – | – | – |
Members38
| Document | Office | Kind | |
|---|---|---|---|
| EP0359010A1 | European Patent Office (EPO) | A1 | |
| JPH02170290A | Japan | A | |
| US5028772A | United States of America | A | |
| CA2069446A1 | Canada | A1 | |
| WO9205516A1 | World Intellectual Property Organization (WIPO) | A1 | |
| AU8843491A | Australia | A | |
| US5124538A | United States of America | A | |
| EP0511337A1 | European Patent Office (EPO) | A1 | |
| EP0511337A4 | European Patent Office (EPO) | A4 | |
| JPH05503185A | Japan | A | |
| US5124538B1 | United States of America | B1 | |
| CA1334867C | Canada | C | |
| JPH07239898A | Japan | A | |
| US5466921A | United States of America | A | |
| US5548107A | United States of America | A | |
| JP2682533B2 | Japan | B2 | |
| EP0359010B1 | European Patent Office (EPO) | B1 | |
| AT162647T | Austria | T | |
| ATE162647T1 | Austria | T1 | |
| DE68928553D1 | Germany | D1 | |
| ES2110946T3 | Spain | T3 | |
| DE68928553T2 | Germany | T2 | |
| JP2750083B2 | Japan | B2 | |
| GR3026122T3 | Greece | T3 | |
| HK1002637A1 | Hong Kong, China | A1 | |
| JP2828776B2 | Japan | B2 | |
| CA2069446C | Canada | C | |
| US6206289B1 | United States of America | B1 | |
| US2001045462A1 | United States of America | A1 | |
| EP0511337B1 | European Patent Office (EPO) | B1 | |
| AT216105T | Austria | T | |
| ATE216105T1 | Austria | T1 | |
| DE69132985D1 | Germany | D1 | |
| DE69132985T2 | Germany | T2 | |
| ES2174824T3This record | Spain | T3 | |
| US6669091B2 | United States of America | B2 | |
| US2004182931A1 | United States of America | A1 | |
| US7000838B2 | United States of America | B2 |
1 legal event, as the office reported them to INPADOC
Events
| Event | Code | |
|---|---|---|
| Definitive protectionFG2A | FG2A |
Numbers
- Publication
- 2174824
- Publication, DOCDB
- 2174824
- Publication, EPODOC
- ES2174824T
- Application
- 91919087
- Application, DOCDB
- 91919087
- Application, EPODOC
- ES19910919087T
Titles2
- Spanish
- ESCANER PARA COMBINAR FRAGMENTOS DE UN CODIGO COMPLETO.
- English
- SCANNER TO COMBINE FRAGMENTS OF A COMPLETE CODE.
Classification
- CPC, 4
- G06K7/10871
- G06K7/0166
- G06K7/14
- G06K7/1491
- IPC, 3
- G06K7 10
- G06K7 016
- G06K7 14