Abstract:
A method of reading a plurality of bar codes during a scanning motion across a bar code scanner which enhances scanner operation. The method includes the steps of obtaining data from a detector in the bar code scanner, determining position information associated with the data, distinguishing data associated with each bar code using the position information, and assembling the bar codes from the data.

Description:
BACKGROUND OF THE INVENTION 
   The present invention relates to optical scanners and more specifically to a method of reading a plurality of bar codes during a scanning motion. 
   The typical bar code scanner scans one item at a time. If two (or more) items are presented to the scanner simultaneously, the scanner will recognize only one of the bar codes. 
   Therefore, it would be desirable to provide a method of reading a plurality of bar codes during a scanning motion. 
   SUMMARY OF THE INVENTION 
   In accordance with the teachings of the present invention, a method of reading a plurality of bar codes during a scanning motion is provided. 
   The method includes the steps of obtaining data from a detector in the bar code scanner, determining position information associated with the data, distinguishing data associated with each bar code using the position information, and assembling the bar codes from the data. 
   It is accordingly an object of the present invention to provide a method of reading a plurality of bar codes during a scanning motion. 
   It is another object of the present invention to provide a method of reading bar codes on multiple items placed substantially simultaneous within a scan volume, as opposed to being conventionally placed one item at a time within the scan volume. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
     Additional benefits and advantages of the present invention will become apparent to those skilled in the art to which this invention relates from the subsequent description of the preferred embodiments and the appended claims, taken in conjunction with the accompanying drawings, in which: 
       FIG. 1  is a block diagram of a transaction system including an optical scanner; 
       FIGS. 2A and 2B  (collectively  FIG. 2 ) are flow diagrams illustrating a preferred method of reading more than one bar code. 
       FIG. 3  is a flow diagram illustrating a second method of reading more than one bar code. 
   

   DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
   Turning now to  FIG. 1 , an example optical scanner  10  includes laser  12 , spinner  14 , pattern mirrors  16 , collector  18 , detector  20 , memory  26 , and decoding and control circuitry  28 . 
   Laser  12  generates a laser beam for scanning bar codes  42   a  and  42   b  on items  40   a  and  40   b.    
   Spinner  14  sweeps the laser beam across pattern mirrors  16 . Spinner  14  also receives light reflected from items  40   a  and  40   b  and directs the collected light towards collector  18 . Spinner  14  may include a polygon spinner having mirrored facets of different angles. Motor  24  rotates spinner  14 . 
   Pattern mirrors  16  direct the laser beam to produce a scan volume  44  defined by the scanning light beams. The position and orientation of pattern mirrors  16  determine the directions of the scanning light beams. If items  40   a  and  40   b  are within scan volume  44 , scanner  10  may read them. 
   Collector  18  collects light reflected from items  40   a  and  40   b.    
   Detector  20  converts the collected light into electrical signals based upon the intensity of the collected light. 
   Memory  26  stores bar code data and bar code position and direction data. 
   Decoding and control circuitry  28  controls operation of scanner  10  and decodes bar code information from the electrical signals provided by detector  20 . Decoding and control circuitry  28  formats bar code data into a format usable by transaction terminal  34 . 
   Transaction terminal  34  uses the formatted bar code data to determine prices of scanned items  40   a  and  40   b  from transaction server  36 . 
   Scanner  10  may include one or more apertures  30  directing scanning light beams at items  40   a  and  40   b  from multiple directions. Aperture  30  preferably surrounds a window. 
   Referring now to  FIG. 2 , a preferred method of reading more than one bar code begins with Start  50 . 
   In step  52 , two items  40   a  and  40   b  are placed within scan volume  44 . Placement is substantially simultaneous, within scan volume  44 , as opposed to conventionally placing one item at a time within scan volume  44 . 
   In step  54 , decoding and control circuitry  28  decodes raw data provided by detector  20 . 
   In step  56 , decoding and control circuitry  28  determines data positions in scan volume  44  using the techniques identified in commonly assigned U.S. Pat. No. 6,220,513. This patent is hereby incorporated by reference. 
   These techniques allow decoding and control circuitry  28  to distinguish bar codes of multiple items, including identical bar codes on like items. If two bar codes are present, decoding and control circuitry  28  spatially tracks each bar code  42   a  and  42   b  through scan volume  44 . Decoding and control circuitry  28  assigns each piece of acquired bar code data a time and location. Upon accumulation of many data segments, decoding and control circuitry  28  computes a trajectory or direction from the corresponding time and location information. Decoding and control circuitry  28  also determines how many bar codes are present in scan volume  44 . 
   In step  58 , decoding and control circuitry  28  assigns object identifiers to each piece of bar code data identified in step  56 . In the case of two detected data objects, decoding and control circuitry  28  assigns two object identifiers. 
   Decoding and control circuitry  28  uses correlation routines to process the identified objects in parallel, assemble the bar codes and transmit the assembled bar codes to transaction terminal  34 . The correlation routines accept individual pieces of bar code data, e.g., a half bar code, or a partial bar code (something less than a half of a bar code), and use a set of rules to determine when enough data has been accumulated to analyze the accumulated data. When enough data has been accumulated, the correlation routines analyze the data, character-by-character, to construct the bar code. After the correlation routines construct the bar code, the correlation routines perform various tests to determine if the constructed bar code is a valid or invalid bar code. 
   The object identifiers minimize cross coupling of bar codes, where cross coupling results from combining half of one bar code with half of another bar code. Bar codes of types UPC-A, EAN-13, and EAN-8 are comprised of two halves, separated by a center band character. Proper linkage is achieved when the raw data contains characters from the left half of a bar code, the center band, and characters from the right half of the bar code, all of which must be contiguous. Looking for linkage in the raw data, and using it as an integrity test on constructed bar codes eliminates cross coupling of bar code halves. 
   In step  60 , decoding and control circuitry  28  correlates label data for bar code  42   a.    
   In step  62 , decoding and control circuitry  28  constructs bar code  42   a.    
   In step  64 , decoding and control circuitry  28  correlates label data for bar code  42   b.    
   In step  66 , decoding and control circuitry  28  constructs bar code  42   b.    
   In step  68 , decoding and control circuitry  28  formats each constructed bar code into a format that terminal  34  may use. Scanner  10  includes a large number of programming options to accomplish this task. 
   One important feature of the invention is what the scanner does if either or both of bar codes  42   a  and  42   b  is not read on the first attempt. If position and direction information indicates that both bar codes  42   a  and  42   b  are present, decoding and control circuitry  28  postpones generation of a good read indication. After failing to receive a good read indication, an operator rescans both items  40   a  and  40   b . Decoding and control circuitry  28  processes all bar codes that are present, and sends only those bar codes that are newly decoded to transaction terminal  34 . 
   In step  70 , decoding and control circuitry  28  determines whether a re-scan has occurred by comparing position and direction information stored in memory  26  with newly acquired position and direction information. If the stored position and direction information is similar to some or all of the newly acquired position and direction information, then a re-scan has occurred. A re-scan may involve movement of items  40   a  and  40   b  through scan volume  44  in an opposite direction to the initial scanning motion. Operation proceeds to step  72 . Otherwise, operation proceeds to step  74 . 
   In step  72 , decoding and control circuitry  28  sends only new the formatted label data to transaction terminal  34 . Operation proceeds to step  76 . 
   In step  74 , decoding and control circuitry  28  sends all formatted label data to transaction terminal  34 . Operation proceeds to step  76 . 
   In step  76 , decoding and control circuitry  28  determines the number of bar codes successfully read. 
   In step  78 , decoding and control circuitry  28  sounds a good read tone and activates a good read light once for each successfully read bar code. 
   In step  80 , decoding and control circuitry  28  stores bar code position information in memory  26  to prepare for a possible rescan. 
   In step  82 , the checker determines whether all bar codes have been read by comparing the number of scanned items to the number of good read indications. If a rescan is necessary, operation returns to step  52 . Otherwise, operation ends at step  84 . 
   Advantageously, the method may be easily expanded to three or more bar codes. 
   With reference to  FIG. 3 , a second embodiment uses a serial process by building one bar code and then attempting to build a second bar code, beginning with Start  90 . 
   In step  92 , two items  40   a  and  40   b  are placed within scan volume  44 . Placement is substantially simultaneous, within scan volume  44 , as opposed to conventionally placing one item at a time within scan volume  44 . 
   In step  94 , decoding and control circuitry  28  decodes raw data provided by detector  20 . 
   In step  96 , decoding and control circuitry  28  correlates data for bar code  42   a.    
   In step  98 , decoding and control circuitry  28  constructs bar code  42   a , being careful to check for linkage. 
   In step  100 , decoding and control circuitry  28  starts a time between items (TBI) timer. Operation branches to steps  104  and  108 . 
   In step  104 , decoding and control circuitry  28  determines whether new data from a re-scan of items  40   a  and  40   b  is present. If not, operation proceeds to step  112 . If so, operation proceeds to step  106 . 
   In step  106 , decoding and control circuitry  28  restarts the TBI timer. Operation branches to steps  108  and  112 . 
   In step  108 , decoding and control circuitry  28  continually monitors the TBI timer to see if the TBI time period has expired. The TBI timer is used as a lockout timer to prevent the scan of the same item, i.e., to prevent double-reads. This method compromises checker productivity by using a TBI time period long enough to give the checker as much time as possible to perform a re-scan of both items  40   a  and  40   b , should bar code  42   b  fail to scan. 
   The TBI timer is programmable and is usually set to 450 or 600 ms for normal use. For the two bar code operation described in this embodiment, the TBI timer is set to 1200 ms. A longer time period is necessary to give the checker time to bring both items back into scan volume  44 . 
   If the TBI time period expires before decoding and control circuitry  28  can complete re-scan and reset (steps  104  and  106 ), or if the TBI time period expires before decoding and control circuitry  28  can construct bar code label  42   b  (steps  112 – 116  below), operation proceeds to step  110 . 
   In step  110 , decoding and control circuitry  28  clears all data from memory  26  to prepare for scanning of other items. Operation ends at step  118 . 
   In step  112 , decoding and control circuitry  28  attempts to decode raw data associated with bar code  42   b . During this step, decoding and control circuitry  28  filters out data from bar code  42   a.    
   In step  114 , decoding and control circuitry  28  correlates data for bar code  40   b.    
   In step  116 , decoding and control circuitry  28  constructs bar code  42   b , being careful to check for linkage. 
   In step  118 , operation ends. 
   The method of  FIG. 3  is less desirable than the method of  FIG. 2 . Since bar code data from bar code  42   b  may be thrown out, the probability of bar code  42   b  being decoded on the first scan is less than one hundred percent. Also, the method of the second embodiment is not suited for simultaneously scanning like items. Using a parallel solution as illustrated in  FIG. 2  improves the chances of bar code  42   b  being decoded on the first scan and facilitates simultaneous scanning of like items. 
   Although the invention has been described with particular reference to certain preferred embodiments thereof, variations and modifications of the present invention can be effected within the spirit and scope of the following claims.