BACKGROUND OF THE INVENTION
1. Field of the Invention
This invention generally relates to laser scanning systems for reading
bar code symbols or similar indicia and, more particularly, to a laser imaging
system for generating a laser beam scan pattern which extends in a two dimensional
pattern over the symbols to be read, and a digital processing system for storing,
manipulating, and analyzing the scanned image.
2. Description of the Related Art
Various optical readers and optical scanning systems have been developed
heretofore for reading bar code symbols appearing on a label or on the surface
of an article. The bar code symbol itself is a coded pattern of indicia comprised
of a series of bars of various widths spaced apart from one another to bound spaces
of various widths, the bars and spaces having different light-reflecting characteristics.
A number of different bar code standards or symbologies exist. These symbologies
include UPC/EAN, Code 128, Codabar, and Interleaved 2 of 5. The readers and scanning
systems electro-optically decode the symbol to multiple alphanumerical characters
that are intended to be descriptive of the article or some characteristic thereof.
Such characters are typically represented in digital form as an input to a data
processing system for applications in point-of-sale processing, inventory control,
and the like.
A kown scanning system resides, inter alia, in emitting a laser light
beam from a hand-held, portable laser scanning head supported by a user, and aiming
the head, and more particularly, the laser light beam, at a symbol to be read.
The scanner functions by repetitively scanning the laser beam in a line across
the symbol. A portion of the reflected laser light which is reflected off the symbol
is detected, and electronic circuitry or software decodes the electrical signal
into a digital representation of the data represented by the symbol scanned.
More specifically, a scanner includes a light source such as a gas
laser or semiconductor laser that generates a light beam. The use of semiconductor
devices as the light source in scanner systems is especially desirable because
of their small size, low cost and low power requirements. The light beam is optically
modified, typically by a lens, to form a beam spot of a certain size. It is preferred
that the beam spot size be approximately the same as the minimum width between
regions of different light reflectivity, i.e., the bars and spaces of the symbol.
The relative size of the bars and spaces is determined by the type of coding used,
as is the actual size of the bars and spaces. The number of characters per inch
represented by the bar code symbol is referred to as the density of the symbol.
The light beam is directed by the lens or similar optical components
along a light path toward a target that includes a bar code symbol on the surface.
A scanning component is also disposed in the light path. The scanning component
may either sweep the beam spot across the symbol and trace a scan line across
and past the symbol, or scan the field of view of the scanner or do both. A scanner
also includes a sensor or photodetector. The photodetector has a field of view
which extends across and slightly past the symbol and functions to detect light
reflected from the symbol. The analog electrical signal from the photodetector
is first typically converted into a pulse width modulated digital signal, with
the widths corresponding to the physical widths of the bars and spaces. Such a
signal is then decoded according to the specific symbology into a binary representation
of the data encoded in the symbol, and to the alphanumeric characters so represented.
Laser scanners are not the only type of optical instrument capable
of reading bar code symbols. Another type of optical reader is one which is operative
being placed by the user in direct contact with the symbol to be read. Such readers
typically incorporate detectors based upon charge coupled device (CCD) technology
in which the size of the detector is larger than or substantially the same as the
symbol to be read. Such scanners are lightweight and easy to use, but require
substantially direct contact or placement of the reader on the symbol to enable
the symbol be read. Such contact reading is a preferred mode of operation for some
applications or as a matter of personal preference by the user. Contact or near
contact reading may also be implemented in an appropriately designed laser scanner.
With respect to the scanning pattern generated by laser scanners,
it has previously been known to generate scan patterns of mutually parallel scan
lines extending along one or two directions, especially for fixed, stationary,
or table-top type scanners. Omni-directional scan patterns of intersecting scan
lines, and even curvilinear scan patterns, for superposition over the symbol to
be read, are known in the prior art. The purpose of such scanning patterns is to
insure that, no matter what the angular orientation of a symbol might be, within
predetermined limits, at least one of the scan lines or part of the pattern will
be scanned over the entire length of the respective symbol. A drawback of such
an approach is that such patterns are typically generated by highly complex and
expensive optical and mechanical systems.
EP-A-273 554 describes a handheld laser scanner that generates a
scan pattern of mutually parallel scan lines extending linearly across each symbol.
The scan lines are arranged over the height of the symbol. At least one of the
scan lines sweeps across each symbol along one sweep direction, whereas, at least
another of the scan lines sweeps across each symbol along an opposite sweep direction
countercurrent to said one sweep direction, thereby forming a bidirectional scan
in which a respective symbol can be read by a scan line no matter whether.the symbol
is oriented in the correct left-right direction, or is upside down.
In either hand-held or stationary scanners, with the scan being generated
by mechanically oscillating or moving a light source or a mirror, the direction
of each scan is fixed relative to the reader housing. If there is only one scan
line, and the bar code symbol is located at an angle to this linear scan of the
laser beam, then the user of a hand-held unit must twist the unit to align it
with the angle of the bar code. Or, the operator of a stationary unit must twist
the product to retry, hoping to align the symbol with one of the several scan lines.
When a hand-held reader unit is being used at a retail check-out counter, the
objects having bar codes to be read will be randomly oriented, and the items will
be of many different sizes and shapes. Properly positioning the hand-held reader
unit for reading bar codes thus becomes an awkward task. On the other hand, scanners
generating several scan paths at angles to one another still often require the
operator to try several passes of the product until a valid read is obtained. Multiple-scan
readers produce only a few fixed paths for scan lines, and if none of the paths
are correct the operator must make additional passes until a code-recognition signal
In order to provide more information in the bar code symbols, and
to allow the symbols to be smaller or more compactly shaped, new bar code standards
have been adopted. One of these new code standards, Code-49, uses a more complex
but efficient character set, and also introduces a "two-dimensional" feature so
more data is contained in the symbol; this is accomplished by stacking rows of
characters vertically instead of extending the bars horizontally. That is, there
may be two or more rows of bar and space patterns up to eight, instead of only
U.S. Patent No. 4,794,239 is describing such a bar code structure.
A one-dimensional single-line scan, as ordinarily the case for hand-held readers,
where the laser beam is swept back and forth across a narrow arc, has disadvantages
in reading these two dimensional bar codes; that is, the reader must be aimed at
each row, individually. Likewise, the multiple-scan-line readers produce a number
of scan lines at an angle to one another so these are not suitable for recognizing
Code-49 type of two-dimensional symbols.
With respect to the prior art further attention is drawn to US-Patent
4,124,797 which discloses an apparatus and method for reading randomly oriented
characters by focusing a laser onto indicia located on a written medium. Scanned
light reflected from the written medium having the indicia thereon is received
by a photomultiplier detector. A processor receiving the output of the photomultiplier
detector determines the observed orientation of the indicia generating a signal
which causes a beam rotating means to scan the indicia in a known sequence having
the desired orientation with respect to the indicia. Thereby characters that are
to be read and located adjacent to the indicia can be scanned at the same orientation
of the beam rotating means.
US-Patent 4,776,464 discloses an article handling system, particularly
for baggage routing by processing a video image of a target in order to transform
the video image to a desired orientation and configuration. Thereby the target
symbol can be detected and electronically read.
SUMMARY OF THE INVENTION
The invention relates to a method of reading a bar code symbol as
referred to in claim 1 and to an apparatus of reading bar code symbols as referred
to in claim 1, respectively.
This invention generates scan patterns of mutually parallel lines
over the bar codes to be read and processes these patterns in order to change the
angular orientation of the mutually parallel scan lines to align with the reading
direction of the bar code.
Preferred embodiments are disclosed in the dependent claims.
BRIEF DESCRIPTION OF THE DRAWING
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
- Fig. 1 is a perspective view of a hand-held laser scanner including a scan
pattern generator, and diagrammatically illustrates a multiple scan pattern;
- Fig. 2a is a diagrammatic illustration of a first scan pattern with the Dove
prism in a first position;
- Fig. 2b is a diagrammatic illustration of a second scan pattern with the Dove
prism in a second position;
- Fig. 2c is a diagrammatic illustration of a third scan pattern with the Dove
prism in a third position;
- Fig. 3 is a highly simplified block diagram of the image storage and processing
circuitry used in the laser scanner according to the present invention;
- Fig. 4a is a simplified diagrammatic illustration of operation showing a single
scan line passing through a two-dimensional bar code;
- Fig. 4b is a simplified diagrammatic illustration of the single scan passing
through the two dimensional bar code at a second stage of operation;
- Fig. 4c is a simplified diagrammatic illustration of a single scan passing
through a two-dimensional bar code at a third stage of operation;
- Fig. 4d is a diagrammatic illustration of the multiple scan pattern passing
through a two-dimensional code at an angle which enables the bar code to be read;
- Fig. 5 is an enlarged view of one row of a truncated bar code symbol to illustrate
its component parts;
- Fig. 6 is an enlarged view of a UPC bar code symbol with a scan line at an
oblique angle passing through the entire symbol; and
- Fig. 7 is a schematic representation of a bit-mapped image of a two-dimensional
bar code symbol in a memory array in the system of Figures 1 and 3.
Referring now to the drawings, reference numeral 10 in FIG. 1 generally
identifies an optical arrangement in a laser scanning system of the type generally
known for reading symbols, particularly bar code symbols.
The arrangement 10 includes a housing 12, shown in dashed lines,
and intended to represent a hand-held scanner. The arrangement 10 may also be implemented
in a desk-top workstation or stationary scanner. In the preferred embodiment, the
housing includes an exit port 14 through which an outgoing laser light beam is
directed to impinge on, and to be scanned across, symbols located exteriorly of
the housing. A manually actuated trigger 110 or similar means are provided to initiate
scanning so that each symbol may be scanned and read in its respective turn. A
laser source, e.g. a gas laser tube 16 or a semiconductor laser diode, is mounted
in the housing and, when energized, the source 16 generates a laser beam.
A multiple line scan pattern generator 120 is illustrated in FIG.
1 and is operative for generating multiple scan lines or traces shown as 150, 152,
etc. across a symbol to be read in a scan line pattern 144. The scan pattern generator
120 also functions for positioning at least some of the scan lines at different
working distances from the housing 12 in which the generator 120 is housed.
Laser source 16 directs a laser beam through optical lens 122 for
directing the beam onto rotary main mirror 124 which is mounted on a vertical shaft
126 which is rotated by a motor drive 128 about a vertical axis. Mirror 124 has
opposite major planar surfaces which are separated by a mirror thickness having
dimension T3. A light-reflecting coating is applied over one of the
The generator 120 also includes a pair of stationary first surface
side mirrors 136, 138 inclined at angles relative to the vertical axis of the shaft
126, and also including an angle with each other. Side mirrors 136, 138 have front
surfaces on which light-reflecting coatings are respectively applied. Inclined
side mirrors 136, 138 are so positioned relative to main mirror 124 that, during
rotation of mirror 124, laser light impinging on mirror 124 will, at certain times,
during each revolution of mirror 124, be directed toward one of the side mirrors
for reflection therefrom forwardly to the exterior target.
To produce scan lines vertically spaced from one another, the motor
128 and mirror 124 are rotated about a horizontal axis parallel to the scan line
150, using a stepper motor.
The multiple scan line pattern 144 depicted in FIG. 1 is generated
as follcws: Assume that mirror 124 is initially positioned with its coated surface
directly facing laser source 16. The laser beam emitted by source 16 is returned
along the same optical path for impingement on a symbol located at a first distance
from the housing 12. During rotation of mirror 124, scan line 150 is generated.
Eventually, the mirror 124 will direct the laser beam incident thereon to side
mirror 136 for reflection by coated surface 140 forwardly for impingement on a
symbol located at a second distance. Which is shorter that the first distance due
to the diversion of the beam to side mirror 136. During rotation of mirror 124
scan line 152 is generated. Scan line 152 is swept in the opposite direction to
that of scan line 150. A more detailed description of the operation of the optical
arrangement 10 is set forth in EP-A-273 554.
As best shown in Fig. 1, it will be noted that the scan pattern 144
comprises a plurality of scan lines in mutual parallelism, with scan lines 150,
and 156 swept from right to left, and scan lines 152, 154, 158 and 160 swept from
left to right. All the scan lines are spread apart over the height of the symbol.
This spread can be controlled by, and is a function of, the thickness of mirror
124, the angle 0 of incidence of the laser beam on mirror 124, and the index of
refraction n' of mirror 124, the latter being preferably constituted of glass.
Also, the beam spot is focused and alternately located at either of the two working
distances mentioned above, thereby obtaining a zooming function.
Also, quite apart from the angular orientation of the symbols to
be read, one symbol might be located close-in to the scanner, whereas another symbol
might be located far-out from the scanner and, in short, successive symbols may
be located at different working distances from the scanner, In the case of a scanner
which has been designed to read symbols within a certain range of working distances,
should it occur that a particular symbol falls outside this range, then the distance
between the scanner and the symbol must be adjusted, and usually within a short
time interval, for, otherwise, the symbol will not be read. In the case of a hand-held
scanner, the scanner is usually manually moved toward or away from the symbol to
adjust the distance between the scanner and the symbol.
In one preferred embodiment, before passing out the exit port 14,
the laser beam passes through another optical component such as a Dove prism 143.
The Dove prism 143 is a trapezoidal shaped prism that, when rotated along the axis
of the light beam passing through the prism, will rotate the image.
In Fig. 1, the Dove prism 143 is not drawn to the same scale as the
motor 128 or mirrors 124, 136, 138. In reality, the Dove prism 143 must be large
enough to intercept all the light from the mirrors 124, 136, or 138, i.e., more
of the order of the size of the window 14. The representation of the Dove prism
143 is diagrammatic only and is done solely to clearly represent the configuration
of optical elements. In order to rotate the Dove prism, stepper motor 145 is provided
in the housing 12. The motor 145 is provided with a drive gear 146 on the motor
shaft which engages a corresponding gear on the circumferential periphery of the
prism 143, as is shown in diagrammatic form in Figure 1. The motor 145 is used
to rotate the prism 143 by a specific angle so that, the scan line pattern 144
is correspondingly rotated to a predetermined angle with respect to the original
direction of scan.
In operation, the prism 143 is initially in its 0° position, and
the scan line pattern 144 is in whatever position the prism is in (but rotated
180°, which is of no consequence to the digital pattern recognition circuitry and
algorithm which will subsequently be described). This image in the field of view
of the photodetector 140 is transferred to various electronic components 142 implemented
on a printed circuit board 141 contained in the housing 12.
In a preferred embodiment the digital representation is applied to
a decoder (not shown) which translates the encoded representation into alphanumeric
characters represented by the symbol. The decoder may be located externally of
the housing 12, and thus is not shown in Figure 1 for simplicity. The decoder may
typically consist of a CPU 35 (as shown in Fig. 3), together with appropriate
software stored in a ROM 36. The CPU 35 and ROM 36 are connected to an I/O controller
Referring more specifically to Figure 3, in the preferred embodiment
the output from the photodetector 140 is directly applied to a DRAM-type memory
20 via the line 15' which is used to store the digital output from the photodetector
140 while it is analyzed by the decoder. The CPU 35 or equivalent electron circuitry
begins an analysis of the raster type scan of the field of view looking for recognizable
bar code characters. If no legitimate bar code patterns are recognized after one
complete raster scan pattern 144, a "miss" signal is generated by the decoder
and applied to a motor controller 39. The motor controller 39 drives the electric
stepper motor 145 to produce a preselected amount of rotation of the prism 143,
e.g. 15°, for a second try at recognizing a bar code. The photodetector array
140 captures the new image at the rotated position, the decoder makes another attempt
to decode. This continues until either code recognition is accomplished or the
prism 143 has been rotated 90°, in which case the failure to activate decode indicator
signals to the user to reposition the product or the scanner. In this manner, five
tries at 9° steps, for example, or nine tries at 5° steps, would probably be sufficient.
If the entire contents of memory 20 are first transferred to memory 36 for evaluation
by the CPU, instead of waiting until the CPU has completed a full evaluation of
the contents of memory 20 (by accessing the memory 20 itself) looking for recognizable
bar code patterns, the motor control 39 may be activated by the CPU 35 to cause
the prism to rotate as soon as the photodetector 140 has been read out to the memory
20, so another try is begun before failure of the first try has been determined.
Figure 2a through 2c illustrates the rotation of the scan line pattern
144 as the Dove prism 143 is rotated. Figure 2a illustrates the original position
of the scan line pattern 144 prior to the rotation, Figure 2b depicts the scan
line pattern 144 after rotation of the Dove prism through a first angle, and Figure
2c depicts the scan line pattern 144 after rotation through a second angle greater
than the first angle.
Turning next to Figure 3, there is shown a highly simplified block
diagram of the electronic subsystems of the bar code reader according to an embodiment
which does not fall under the scope of protection of the attached claims. In this
embodiment, the line 15' is not present in the circuit of Figure 3, and the Dove
prism 143, and motor controller 39 are not used to rotate the image. Instead, the
image captured by the photodetector 140 is rotated electronically, or analyzed
electronically, in the DRAM 20.
As illustrated in Figure 3, the photodetector 140 receives the reflected
light and is used to generate an electrical image of the field of view of the photodetector.
The output of the photodetector 140 is preferably a serial binary signal. However,
if a gray-scale type of resolution is needed, then an analog signal output from
the photodetector 140 may be used, which is digitized or applied to an analog to
digital converter 15 to produce a multi-bit binary representation of the light
reaching the photodetector 140 as the laser beam is scanned throughout the scan
pattern 144. A serial single-bit, or multi-bit parallel binary output of the A/D
converter, represents the light impinging upon the photodetector.
The field of view of the photodetector 140 over an entire scan pattern
may be represented as a large predetermined number of elements or pixels arranged
in rows and columns. As each line is scanned,the photodetector 140 produces a single-bit
serial binary output, or the A/D converter 15 converts the analog signal into
a multi-bit digital representation, one pixel at a time. Assuming single-bit serial
binary, the digital representation from the photodetector 140 is shifted into a
serial input 27 of the DRAM 20; however, if a multi-bit representation is used,
it is loaded into a shift register 24, one group of elements at a time, by clock
voltages applied to the register elements by clock lines 26. The shift register
24 is clocked onto the line 21 by clock line 26.
As an example of the type of scanning that may be performed with
the laser scanner the following parameters may be presented as typical. A total
of 50 to 100 lines or more, such as the lines 150, 152, etc., of Fig. 2a, may
be generated to form the scan pattern 144 with 5.08 cm (2") scan lines over a target
area of 1.27 cm or 2.54 cm (1/2" or 1"). Each horizontal line 150, 152, etc. corresponds
to one row in the array of the memory 20, so the size of the memory is correlated
with the drive mechanism for the mirror 124 producing the raster scan of the field
of view. The laser beam will operate at a 3.1 to 6.1 meter per second (10 to 20
fps = feet per second) sweep speed, with the laser spot moving at about 63.5 meter
per second (2500 ips = inch per second). The bar code density may be 48x10-6
to 64x10-6 cm2 (7.5 to 10 mil square) for reasonable resolution
characteristics. The bandwidth represented by such scanning is well within the
capability of various commercially available signal processors and decoders.
The field of view scanned by the laser scanner may be divided into
an array of for example, 256 x 256, 512 x 512, or 1024 x 1024, depending upon the
scan generating mechanism. Using 1024 x 1024, there would be 1024 rows of "pixels"
and 1024 "pixels" in each row (1024 columns). The density of the raster scan of
the field of view by the laser beam, and thus of the memory 20, is selected according
to the resolution required for the system, and may be more or less than these examples.
However, continuing with the example of 1024 x 1024, note that the memory 20 is
also a 1024 x 1024 array. For example, a 1-M bit DRAM of the type commercially
available may be provided having both serial and random-access I/O ports.
The clocks used to load the DRAM 20 via serial input 27, and the
addressing of the DRAM 20 to load data from its serial input register to its cell
array, must both be correlated with the mechanical scan generator; every time a
horizontal line such as 150 or 152 is finished, the data for this line should have
filled the internal register and be shifted to the cell array.
The DRAM 20 has an array of dynamic memory cells in rows and columns
having a one-for-one correspondence to the pixel array to be imaged, so there are
1024 rows and 1024 columns of cells. So, after 1024 clock pulses on the input 26,
the internal shift register at its serial input is full, and one clock on its
"transfer" input loads this 1024 bits of data onto the 1024 column lines of the
DRAM array; then, one of the 1024 row lines of the array is activated by a row
decoder to load this 1024 bits of data to one of the rows of memory cells of the
array, where they will remain stored until written over. The sequence then repeats
for the next subsequent scan of the reference plane by the laser scanner; another
1024 bits are shifted into the internal shift register of the DRAM, so, after 1024
x 1024 clocks on line 26, all 1M-bit of data from the photodetector 140 will have
been transferred to the DRAM 20. The detected light representing a sequence of
picture elements derivated from a scan of the field of view by the photoresponsive
device 140 are thus transformed into electrical charge packets which are transferred
in a bit-mapped manner into the memory 20, one-for-one, in corresponding locations.
The bit-mapped image in the memory 20 is accessed by a CPU device
35 of Figure 3. An external memory 36 may be employed for storing programs and
data. A system bus 37 includes an address bus 37a, a data bus 37b and a control
bus 37c: the bus is used for accessing the memory 36, and of course for accessing
the DRAM 20, as well as for accessing an I/O controller (or controllers) 38 for
communicating with a keyboard input, a display, or data output to a host computer,
or the like, or to send a control signal to the optical component.
The DRAM 20 has a data I/O port connected to the data bus 37b for
accessing the bit-mapped data by the CPU. The DRAM 20 can have a 4-bit wide data
I/O port, so four bits are accessed in parallel at one time, instead of 1-bit.
The DRAM 20 has a multiplexed address input connected to address bus 37a: a row
address is applied first, along with a row address strobe on the control bus 37c,
then a column address is applied along with a column address strobe.
These addresses are loaded into internal address buffers for the
row and column decoders in the video DRAM 20. Thus, an address is applied to the
row decoder from the CPU to make a 1-of-1024 selection for loading the serial data
input 27 to one of the 1024 rows of the DRAM cells. Or, an address is applied to
the row decoder to select a row for input to the DRAM column decoder, then a 6-bit
address applied to the column decoder from the CPU to select 4-or 256 columns for
output on the data bus 37b to the CPU 35. In this manner, the CPU accesses the
bit-mapped image data in the memory 20 to scan the image of the field of view,
to find the symbol. A test is done to determine whether a portion of a bar code
has been detected, based upon the symbology or definition of the bar code itself.
If an entire bar code has been detected, it will then be decoded.
The CPU 35 can access the DRAM 20 via data bus 37b and address bus
37b at the same time that the serial data is being clocked into the serial port
27 by clock 26, so the CPU can begin evaluating the image to find and orient the
symbol before the entire image has been loaded. The time needed to transfer the
bit-mapped image is about (1M)x(50ns) or 50-ms, assuming a 20MHz clock 26, but
during this time the CPU can make many thousands of accesses of the data in the
DRAM for evaluation. If higher speeds are required, some video DRAMs support much
higher serial clock rates, e.g., 40-MHZ. Also, a "by-4" serial input is available,
which would allow four serial bit streams to be clocked in simultaneously. In addition,
if a static RAM is used instead of a DRAM 20, clock speeds can be faster; a serial-to-parallel
converter using a high-speed 8-bit shift register can be used to input the data
from the CCD to a static RAM having an 8-bit parallel data I/O port.
Figure 4a - 4d shows an example of a bar code symbol of the type
to be read by the system of Figures 1 and 3. Although the system is suitable for
reading various types of bar codes, this symbol is a code-49 type, naving (in this
example) five rows 48 of characters represented by bar and space patterns. The
physical size of this symbol is variable; the lower limit is specified to be 1.9
x 10-2 cm (7.5 mil) for the "X" dimension, i.e., the width of a minimum-width
line in one of the bars in one of the rows 48; the upper limit depends upon the
method used to reproduce the symbols, the focal length and field of view of the
optical system to be used, and of course the size of the objects to which the
coded symbols are to be applied. Using minimum sized symbols, a net data density
of 36.7 (93.3) alphanumeric characters per cm (inch) or 60.7 (154.3) numeric digits
per (inch) can be achieved with this standard code. The Code-49 specification allows
up to eight rows 48 in one symbol. The view of Figure 4 is much larger than actual
size for many Code-49 type symbols printed for use in typical applications. Each
row will always begin with a start pattern 49 and end with a stop pattern 50. Between
the start and stop patterns, a number of words 51 are defined by the width and
spacings of black lines and gaps; each word encodes two characters from a defined
character set. The image bit-mapped into the memory 20 of course corresponds to
the black and white pattern of Figure 4 or 5 translated to binary ones and zeros.
The optics, size of field of view, number of bits (resolution) of the photo-responsive
device 140, etc., are all chosen so that the minimum line width in the patterns
of Figures 4 and 5, when translated to a bit-mapped image in the memory 20, produces
at least one bit or one cell of data in the DRAM 20. For the example of the use
of a 256x256 (64K-bit) memory 20, the pattern of Figure 5 must occupy at least
about 75-bits of the 256-bit width of a row of the memory array.
Referring to Figure 4a, a scan along a line 53 would intercept parts
of more than one row 48 and so would produce a reading which would indicate the
presence of a bar code, but will not correctly decode. This is in contrast to a
more-conventional UPC type of bar code symbol as seen in Figure 6, where a scan
line 54 at an angle to the central axis will still produce a valid reading since
the UPC symbol illustrated is not truncated but extends in the Y-direction. Addition
of the multiple rows 48 in the Code-49 type of symbol seen in Figure 4 thus makes
the scanning task more difficult. Nevertheless, even though not giving a valid
reading of an entire row 48, the scan line 53 would still result in a valid decode
of a part of a row. For example, the line 53 as it appears in Figure 4a or 4b makes
a complete trace of some words in a horizontal row, but not of all words. This
ability to intercept and interpret partial rows may be employed in the task of
"finding" the symbol within the image in the memory 20 by the algorithm executed
by the CPU 35.
Another complicating factor is that the image of the bar code symbol
in the memory 20 is not necessarily rectangular; this is in addition to the image
likely being at an angle to the major axis. The image is not necessarily rectangular
because the package or object on which the symbol resides in the field of view
may be twisted rather than being aligned with the plane of the field. This non-alignment
will result in a distorted shape as seen in Figure 7, where the image of symbol
bit-mapped into the cell array 55 of the memory 20 is at an angle to the rows
of cells and also larger at one end than at the other. Five scan lines 56 must
be generated, each at a slightly different angle. Note also that the image might
be reversed from left to right if the package having the bar code symbol on it
is upside down in the field of view, so the direction of scan can be left-to-right
or right-to-left, or otherwise the data can be transposed after loading into the
The data in memory 20 can of course be read in any pattern, as selected
by the program executed by the CPU 35. To scan the memory along one of the scan
lines 56 of Figure 7, the row address loaded to the row decoder via bus 37a would
be incremented after each read cycle, and the column address loaded to the column
decoder would be decremented after a selected number of read cycles, depending
upon the angle needed. The number of row address increments for every column address
decrement would be higher for the upper lines 56 than for the lower ones in Figure
7, since the angle needed to trace the row 48 is greater.
Before the scan lines 56 of Figure 7 at the proper angles could be
calculated, the symbol would have to be found in the memory array and the orientation
of the rows 48 determined. Various algorithms could be used for this purpose; one
would comprise reading the memory array in a raster scan, one row (or column)
at a time, in rectilinear fashion, to see if recognizable bar code patterns are
found. Such a raster scan of the image of Figure 7 would find a recognizable code
pattern when it reached a position indicated by line 57, corresponding roughly
to the 57' of Figure 5. There are various ways to detecting the existence of a
bar code in a serial electrical signal representing a sequence of samples produced
by a linear scan; for example, the number of transitions between black and white
(1's and 0's) can be counted, and this value, as a function of the length of scan
(or transitions per unit length) is a distinguishing factor. In this manner, the
bar code pattern would be distinct from other printing on the product label such
as text or numbers in the area intercepted by the scan line 57 of Figure 7. Another
way of distinguishing a bar code pattern from other images is the ratio of black
to white per unit length; bar code symbols fall into a range of such ratios different
from printed text or alphanumeric characters found on product labels. Still another
way of distinguishing is to compare two adjacent scans to see if the same sequence
of 1's and 0's is produced over a substantial part of the row. In addition, of
course, the patterns may be compared to valid code patterns stored in ROM in memory
36 by a table lookup. Using any one or combination of such methods, the symbol
is found within the memory array by reading data and interpreting strings of this
data read-out using instructions executed by the CPU 35 or equivalent logic circuitry.
Then, when any part of the symbol has been located, the next task is to find the
angular direction of rows. The first attempt is of course a rectilinear line, i.e.,
a continuation of the line 57 for the remainder of the row, without changing the
column address; this will produce no more recognizable bar-code patterns, so a
series of angular scans can be implemented, starting at the centerpoint of the
addresses which produced the recognized code pattern, for example at 5° increments,
producing a series of scan lines 57a, 57b, 57c, etc., until the top line 56 is
scanned and a complete line of code is recognized including start and stop codes
49 and 50. If no complete recognizable row is found, but instead a set of partial
row segments of increasing then decreasing number of recognizable characters,
then the row is curved (resulting from a symbol on a curved surface such as a can
or bottle) so the scan line will be switched to a different angle at the address
of the end of the scan giving the most recognizable characters, producing a series
of segments instead of a straight-line scan. In either event, after one row is
recognized, then scans are made parallel to the good row until a different set
of good characters is recognized, meaning a new row is being scanned. This continues
until a complete symbol has been recognized. Usually, the symbol will contain
within its characters information on the number of rows and the number of characters
in the symbol, as well as a checksum or CRC of the characters, so a complete symbol
can be positively identified by a suitable algorithm executed by the CPU 35. After
reading the bit patterns found in the memory array, the CPU 35 can execute table-lookups
to convert the bit patterns into characters. Many other algorithms for interpreting
the image in the memory 20 and decoding the bar code symbol represented by this
image using the instruction set of a commercially-available microprocessor 35 may
be selected by a skilled programmer.
The concept of the invention may be implemented in a hand-held reader
unit 10 as illustrated in Figure 1, as well as in a stationary unit. The hand-held
device of Figure 1 is generally of the style disclosed in U.S. Patent 4,760,248
and also similar to the configuration of a bar code reader commercially available
as model number LS 8100II from Symbol Technologies, Inc. Alternatively, or in
addition, features of U.S. Patent 4,387,297 or U.S. Patent 4,409,470 may be employed
in constructing the bar code reader 10 of Figure 1.
In all of the various embodiments, the elements of the scanner may
be assembled into a very compact package that allows the scanner to be fabricated
as a single printed circuit board or integral module. Such a module can interchangeably
be used as the laser scanning element for a variety of different types of data
acquisition systems. For example, the module may be alternately used in a hand-held
scanner, a table top scanner attached to a flexible arm or mounting extending over
the surface of the table or attached to the underside of the table top, or mounted
as a subcomponent or subassembly of a more sophisticated data acquisition system.
The module would advantageously comprise a laser/optics subassembly
mounted on a support, a scanning element such as a rotating or reciprocating mirror,
and a photodetector component. Control or data lines associated with such components
may be connected to an electrical connector mounted on the edge or external surface
of the module to enable the module to be electrically connected to a mating connector
associated with other elements of data acquisition system. Alternatively, a wireless
connection, using RF or IR communications, may be used.
An individual module may have specific scanning characteristics associated
with it, e.g. operability at a certain working distance, or operability with a
certain density of symbols. The scanning characteristics may also be defined through
the manual setting of control switches associated with the module. The user may
also adapt the data acquisition system to scan different types of articles or the
system may be adapted for different applications by simply interchanging modules.
The scanning module described above may also be implemented within
a self-contained data acquisition system including one or more such components
as keyboard, display, data storage, application software, and data bases. Such
a system may also include a communications interface to permit the data acquisition
system to communicate with other components of a local area network or with the
telephone exchange network, either through a modem or an ISDN interface, or by
low power radio broadcast from the portable terminal to a stationary receiver.