The present invention relates to hand held optical reading devices, and is directed more particularly to a hand held optical reading device configured to be programmed with use of a local host processor.
One-dimensional optical bar code readers are well known in the art. Examples of such readers include readers of the SCANTEAM® 3000 Series manufactured by Welch Allyn, Inc. Such readers include processing circuits that are able to read one-dimensional (1D) linear bar code symbologies, such as the UPC/EAN code, Code 39, etc., that are widely used in supermarkets. Such 1D linear symbologies are characterized by data that is encoded along a single axis, in the widths of bars and spaces, so that such symbols can be read from a single scan along that axis, provided that the symbol is imaged with a sufficiently high resolution along that axis.
In order to allow the encoding of larger amounts of data in a single bar code symbol, a number of 1D stacked bar code symbologies have been developed, including Code 49, as described in U.S. Pat. No. 4,794,239 (Allais), and PDF417, as described in U.S. Pat. No. 5,340,786 (Pavlidis, et al). Stacked symbols partition the encoded data into multiple rows, each including a respective 1D bar code pattern, all or most all of which must be scanned and decoded, then linked together to form a complete message. Scanning still requires relatively high resolution in one dimension only, but multiple linear scans are needed to read the whole symbol.
A third class of bar code symbologies, known as two-dimensional (2D) matrix symbologies, have been developed which offer orientation-free scanning and greater data densities and capacities than their 1D counterparts. Two-dimensional matrix codes encode data as dark or light data elements within a regular polygonal matrix, accompanied by graphical finder, orientation and reference structures. When scanning 2D matrix codes, the horizontal and vertical relationships of the data elements are recorded with about equal resolution.
In order to avoid having to use different types of optical readers to read these different types of bar code symbols, it is desirable to have an optical reader that is able to read symbols of any of these types, including their various subtypes, interchangeably and automatically. More particularly, it is desirable to have an optical reader that is able to read all three of the above-mentioned types of bar code symbols, without human intervention, i.e., automatically. This in turn, requires that the reader have the ability to automatically discriminate between and decode bar code symbols, based only on information read from the symbol itself. Readers that have this ability are referred to as “autodiscriminating” or having an “autodiscrimination” capability.
If an autodiscriminating reader is able to read only 1D bar code symbols (including their various subtypes), it may be said to have a 1D autodiscrimination capability. Similarly, if it is able to read only 2D bar code symbols, it may be said to have a 2D autodiscrimination capability. If it is able to read both 1D and 2D bar code symbols interchangeably, it may be said to have a 1D/2D autodiscrimination capability. Often, however, a reader is said to have a 1D/2D autodiscrimination capability even if it is unable to discriminate between and decode 1D stacked bar code symbols.
Optical readers that are capable of 1D autodiscrimination are well known in the art. An early example of such a reader is the Welch Allyn SCANTEAM® 3000, manufactured by Welch Allyn, Inc.
Optical readers, particularly hand held optical readers that are capable of 1D/2D autodiscrimination are less well known in the art, since 2D matrix symbologies are relatively recent developments. One example of a hand held reader of this type which is based on the use of an asynchronously moving 1D image sensor, is described in commonly assigned U.S. patent application No. 08/504,643, now U.S. Pat. No. 5,773,806, which application is hereby expressly incorporated herein by reference. Another example of a hand held reader of this type which is based on the use of a stationary 2D image sensor, is described in commonly assigned U.S. patent application Ser. No. 08/914,883 now U.S. Pat. No. 5,942,741, which is also hereby expressly incorporated herein by reference.
Optical readers, whether of the stationary or movable type, usually operate at a fixed scanning rate. This means that the readers are designed to complete some fixed number of scans during a given amount of time. This scanning rate generally has a value that is between 30 and 200 scans/sec for 1D readers. In such readers, the results of successive scans are decoded in the order of their occurrence.
Prior art optical readers operate relatively satisfactorily under conditions in which the data throughput rate, or rate at which data is scanned and decoded, is relatively low. If, for example, the scanning rate is relatively low and/or the data content of the bar code or other symbol is relatively small, i.e., the scanner is operating under a relatively light decoding load, the decoding phase of the reading process can be completed between successive scans. Under these conditions scan data can be accurately decoded without difficulty.
Readers of the above-described type have the disadvantage that, if they are operated under relatively heavy decoding loads, i.e., are required to rapidly scan symbols that have a relatively high data content, the tracking relationship or synchronism between the scanning and decoding phases of the reading process will break down. This is because under heavy decoding loads the decoding phase of a read operation takes longer than the scanning phase thereof, causing the decoding operation to lag behind the scanning operation. While this time lag can be dealt with for brief periods by storing the results of successive scans in a scan memory and decoding the results of those scans in the order of their occurrence when the decoder becomes available, it cannot be dealt with in this way for long. This is because, however large the scan memory, it will eventually overflow and result in a loss of scan data.
One set of solutions to the problem of maintaining the desired tracking relationship between the scanning and decoding phases of the reading process is described in previously mentioned U.S. patent application Ser. No. 08/914,883 now U.S. Pat. No. 5,942,741. Another set of solutions to the problem of maintaining the desired tracking relationship between the scanning and decoding phases of the reading process is described in U.S. Pat. No. 5,463,214, which issued on the parent application of the last mentioned copending patent application.
Generally speaking, the latter of these two sets of solutions to the above-discussed tracking problem involves the suspension of scanning for brief periods in order to assure that the scanning process does not pull too far ahead of the decoding process. The former of these two sets of solutions to the above-discussed tracking problem, on the other hand, involves the skipping over of one or more sets of scan data, in favor of more current scan data, if and to the extent necessary for tracking purposes, in combination with the use of two or more scan data memories to minimize the quantity of scan data that is skipped.
In the past, no consideration has been given to accomplishing scan-decode tracking in conjunction with 1D/2D autodiscrimination, i.e., as cooperating parts of a single coordinated process. This is in spite of the fact that the 1D/2D autodiscrimination is known to involve heavy decoding loads of the type that give rise to tracking problems. Thus, a need has existed for an optical reader that combines a powerful tracking capability with a powerful 1D/2D autodiscrimination capability.
As new and/or improved 1D and 2D bar code symbologies, and as additional 1D and 2D decoding programs come into widespread use, previously built optical readers may or may not be able to operate therewith. To the extent that they cannot operate therewith, such previously built optical readers will become increasingly obsolete and unusable.
In the past, the problem of updating optical readers to accommodate new bar code symbologies and/or new decoding programs has been dealt with by manually reprogramming the same. One approach to accomplishing this reprogramming is to reprogram a reader locally, i.e., on-site, by, for example, replacing a ROM chip. Another approach to accomplishing this reprogramming is to return it to the manufacturer or his service representative for off-site reprogramming. Because of the expense of the former and the time delays of the latter, neither of these approaches may be practical or economical.
The above-described problem is compounded by the fact that, if an optical reader is not equipped to operate as a tracking reader, it may not be possible to reprogram it to use an autodiscrimination program that is designed to be executed in conjunction with tracking. This is because the autodiscrimination program may include steps that require the tracking feature to prevent data from overflowing the scan memory and being lost. Alternatively, the scan rate may be decreased, although this reduction will adversely affect performance when low data content symbols are read. Thus, a need has existed for an optical reader that can be reprogrammed economically in a way that allows it to realize the full benefit of the 1D/2D autodiscrimination and tracking features, among others.
There is provided an optical reader system that can include an optical reader and a host processor which may be in communication via a communication link. In one embodiment a communication link between an optical reader and a host processor can be a wireless communication link. The optical reader in one embodiment can receive from the host processor a trigger instruction. In another embodiment the optical reader can receive from the host processor a single frame instruction. The optical reader in another embodiment can receive from the host processor an image upload instruction.
Other objects and advantages will be apparent from the following description and drawings, in which:
Referring to
Referring first to
Optical reader 10 of
More particularly, processor 42 is preferably a general purpose, off-the-shelf VLSI integrated circuit microprocessor which has overall control of the circuitry of
The actual division of labor between processors 42 and 44 will naturally depend on the type of off-the-shelf microprocessors that are available, the type of image sensor which is used, the rate at which image data is output by imaging assembly 30, etc. There is nothing in principle, however, that requires that any particular division of labor be made between processors 42 and 44, or even that such a division be made at all. This is because special purpose processor 44 may be eliminated entirely if general purpose processor 42 is fast enough and powerful enough to perform all of the functions contemplated. It will, therefore, be understood that neither the number of processors used, nor the division of labor therebetween, is of any fundamental significance.
With processor architectures of the type shown in
Referring to
One specific practical example of an optical reader of the type shown in
Referring to
One specific practical example of an optical reader of the type shown in
Significantly, the above-mentioned structural correspondences between
The reader structures shown in
Examples of types of housings which may be employed to house elements of the reader apparatus shown in
There is provided an optical scanning and decoding apparatus and method, suitable for use with bar code readers, bar code scanning engines, and portable data terminals (PDTs), which combines improved scanning-decoding and autodiscrimination features in the context of an apparatus and method which also provides improved menuing and reprogramming features.
In accordance with the menuing feature, there is provided an improved apparatus and method which enables a user to determine the current operating mode of an optical reading apparatus, and to rapidly and conveniently change that operating mode to optimize it for operation under then current conditions. The menuing feature, for example, enables the user, via a machine readable table of pre-recorded menu symbols, to command the reader to communicate with a host processor using one of a number of protocols, to command the reader to format the decoded output according to host processor requirements, or to command the reader to report to the host processor any of a plurality of types of information about the current operating state of the reader, such as the version of software then being used, the code options that are then being used, and even a complete listing of the reader's parameter table. If a suitable printer is available, the complete status of a first reader may be output as a machine readable menu symbol that other, similarly equipped readers may read and use to reconfigure themselves for operation in the same manner as the first reader.
In accordance with the reprogramming feature, there is provided an improved apparatus and method by which an optical reader may be reprogrammed from a source external to the reading apparatus, with or without the participation of a user. This external source may be either on-site, i.e., located at the same local facility as the reader, or off-site, i.e., located at a remote facility that is coupled to the local facility only via a transmission line or computer network. When actuated, the reprogramming feature enables a reader to reprogram itself, either in whole or in part, and thereby become able to operate with operating software of the latest type. Depending on the application, the reprogramming of the reader may be initiated either by a host processor external to the reader, as by a command issued via the reader's communication port, or by a user initiated command issued as a part of the above-mentioned menuing process.
In accordance with another aspect of the reprogramming feature, a local host processor may be configured to carry out reprogramming of an optical reader or another type of portable data terminal. In a reprogramming subroutine a local host processor can be made, at the selection of a user, to replace an entire main program and parameter table of a reader, or else one of either a main program or a parameter table of an operating program individually.
In accordance with another subprogram of a local host processor, the local host processor can be made to edit a parameter table. When this subprogram is selected the user may either edit the parameter table that is stored in a memory device of the reader or else edit a parameter table stored in a memory device in communication with the local host processor. After editing, the user may write the edited parameter table to the reader's memory device, write the edited parameter to a bulk storage device for later use, or print or display the edited parameter table.
In accordance with another aspect, an optical reader may be made to receive a component control instruction from a host processor which is transmitted in response to a user input command to remotely control an optical reader. In accordance with this aspect, the optical reader is made to execute a component control instruction substantially on-receipt thereof. In one embodiment, execution by an optical reader of a component control instruction has the same effect as a reader trigger being manually pulled.
In accordance with the present invention, there is also provided an optical scanning and decoding apparatus and method which includes improved scanning-decoding and autodiscrimination features, either or both of which may be used in conjunction with, and/or under the control of, the above-described menuing and reprogramming features. In other words, the autodiscrimination feature is made available to the user on a menu selectable or reprogrammable basis to speed up and/or update the decoding phase of the scanning and decoding process. Together, these features enable the reading apparatus of the invention to read and decode a wide range of optically encoded data symbols at an improved data throughput rate.
When a reader is one in which the scan engine cannot be readily started and stopped, or in which such starts and stops impose unacceptable delays or produce user perceptible flicker, the present invention preferably operates in one of the tracking relationships described in previously mentioned application Ser. No. 08/914,883 now U.S. Pat. No. 5,942,741. One of these tracking relationships is a Skip Scan tracking relationship in which the results of one or more scans may be skipped over entirely in favor of more recently produced scan results. Another is a Decode On Demand tracking relationship in which decoding is suspended briefly as necessary to allow a scan then in progress to be completed. The latter relationship is ordinarily not preferred, but is still useful when the reader is such that its scan memory is able to store only two complete blocks of scan data.
When the reader is one in which the scan engine can readily be stopped, the present invention may operate in the tracking relationship described in previously mentioned U.S. Pat. No. 5,463,214. With this, “Scan On Demand” tracking relationship, scanning is suspended briefly as necessary to prevent scanning and decoding from becoming uncorrelated with one another.
In the preferred embodiment, the reader includes an algorithm that is able to accommodate any of the above-described scanning-decoding relationships, among others. Which of them is actually used will vary from reader to reader depending upon the size and type of memory and the type of scan engine used thereby, and may be changed from time to time.
The present invention also contemplates and provides for at least one scanning-decoding relationship which does not fall within the meaning of the above-defined tracking relationships. One of these non-tracking relationships is a “One Shot” relationship or mode in which a single scan is followed by a single decoding attempt and then a stoppage. Such scanning-decoding events may be initiated by respective single actuations of a manual trigger. Because of its inherently discontinuous nature, the use of the One Shot mode implies the non-use of any of the above-mentioned tracking modes.
Two other such scanning-decoding relationships are referred to herein as the “Repeat Until Done” relationship or mode and the “Repeat Until Stopped” relationship or mode. With the Repeat Until Done relationship, scanning and decoding operations follow one after another until a successful decode occurs, and are then discontinued. With the Repeat Until Stopped relationship, scanning and decoding operations follow one after another and continue, even after sets of decoded data are stored or output, until instructed to stop by the release of the trigger or by the readers' program. Because of their repetitive nature, the use of Repeat Until Done and Repeat Until Stopped modes are usable both in conjunction with the above-described tracking modes and independently of those tracking modes. As a result, the Repeat Until Done and Repeat Until Stopped modes may be implemented as user selectable non-tracking relationships or as tracking relationships.
In embodiments that use the auto discrimination feature of the invention, there is provided a method and apparatus by which a plurality of different symbols of a multiplicity of different types may be scanned and decoded in a manner that is optimized for a particular application, on either a menu selectable or a reprogrammable basis. When all of the symbols to be autodiscriminated are known to be 1D symbols, for example, the data throughput rate may be increased by structuring the autodiscrimination feature of the invention so that no attempt is made to decode 2D symbols, or vice versa. When, on the other hand, the symbols to be autodiscriminated are known to all be of (or all not to be of) a few types, whether 1D or 2D, the data throughput rate may be increased by structuring the autodiscrimination feature so that all but a few (or only a few) 1D and/or 2D symbologies are disabled, i.e., so that no attempt is made to decode them. Other possible autodiscrimination options include not decoding or not outputting data for symbols that encode messages that are too long or too short to be of interest in a particular application. In accordance with the invention, any of these options may be chosen and changed as necessary to achieve the highest possible data throughput rate.
Because of the large number of different combinations of distinct operational states that are made possible thereby, the apparatus and method of the invention will be seen to have a protean quality that not only makes it usable in a large number of different applications, but also enables it to continue to remain so usable as new functions, new bar code symbologies and new and updated decoding programs are developed in the future.
Main Program
The overall operation of the reader of
Referring to
The parameter table, which is preferably stored in EROM 46, specifies the values of the parameters that define the mode in which the reader will operate. Examples of these parameters include the size and the frame rate of the image sensor, the codes that will be enabled during autodiscrimination, the I/O communication protocols, beeper pitch or volume, among others. The default values of these parameters are those which will be used if the user or an externally generated reprogramming command does not specify other values, and correspond to a combination of parameters which are suitable for use under most operating conditions. The different parameters that may be used with the invention and the effect that they have on the operation of the reader will be discussed in detail later.
After the reader has been initialized, the processor proceeds to blocks 625 and 627, which call for it to capture and attempt to decode an image of the target symbol. This involves the performance of a number of related steps, the particulars of which are determined by the parameters of the parameter table. Included among these steps are a scanning subroutine which specifies the address space or spaces in which scan data will be stored and whether scanning is to be continuous (e.g., at a full video rate, such as 30 frames per second), or discontinuous (e.g., with pauses related to the current state of the trigger). The operation of the decoding routine, which is executed in a user or factory selectable relationship to the scanning routine, is governed by parameters which control the codes which are enabled for processing as a part of the autodiscrimination process, whether decoding is to be continuous or discontinuous, etc. As will be explained more fully later, permitted combinations of scanning and decoding parameters together define the scanning-decoding relationships or modes which the reader will use.
After exiting block 627, the processor is directed to block 630 which, if the decoding attempt was not successful, is directed back to block 625 unless the trigger has been released (block 635) or unless reprogramming request has been received (block 640), or unless a stop or no-repeat request is called for by the current operating mode of the reader (block 642). The loop defined by blocks 625–642 will be the path repeatedly followed by the processor when autodiscrimination sequences are performed unsuccessfully, and no menuing or programming changes are called for, and no stop request is in effect. If this loop is interrupted by the user's release of the trigger, or by a successful decode, or by a reprogram request, or by a stop request, the reader will be directed by block 635 to stop and wait in a low power state until further processing is called for.
In the above-described loop, block 642 serves the function of stopping the repetitive scanning and decoding of the target symbol in those scanning-decoding modes or under those conditions in which a repetition of scanning and/or decoding is not called for. In the One Shot mode, for example, scanning and decoding are discontinued after one decoding attempt, whether or not that attempt is successful, without regard to the state of the trigger. Similarly, in the Repeat Until Stopped mode, scanning and decoding may be discontinued either by command, via block 642, or by the release of the trigger via block 635. Thus, block 642 comprises at least a part of the means by which the reader gives effect to the scanning-decoding parameters of the parameter table.
If block 630 indicates that the last decoding attempt was successful, the processor is directed to a block 645 which calls for a determination of whether the result of the decoding indicates that the decoded symbol was or was not a menu symbol. This determination may be made on the basis of results of the decoding, because all menu symbols are encoded with data that identifies them as such during decoding. If the decoded symbol is not a menu symbol, it is known that the symbol contained data that is to be output by the reader. In the latter event, the processor is directed to block 646, which causes it to output the data and, proceed to block 647.
Block 647, like block 642, comprises part of the means by which the reader gives effect to the scanning-decoding modes called for by the parameter table. In particular, if decoding is successful (block 630) and has been output (block 646), block 647 discontinues scanning and decoding if the Repeat Until Done mode is in effect. If any other mode is in effect, scanning and decoding will continue unless blocks 635, 640 or 642 call for a different result.
If the decoded symbol is a menu symbol, block 645 directs the processor to perform the menuing routine called for by block 660 before returning to block 635. As will be explained more fully later in connection with
While reprogramming request block 640 has been described as being located between blocks 635 and 625, it actually preferably represents an externally generated interrupt request that may occur at any time that the reader is operating. Such a request may, for example, be initiated by a local host processor via one of I/O devices 37, 37′ or 37″. It may also be initiated by a remotely located processor, via one of the latter I/O devices, through a suitable transmission line or computer network, as shown in
Menuing
The menuing feature will now be described with reference to
Turning first to
Menu word 650 begins with a first one-byte product identification (ID) code field 650-1 that identifies the type and/or model number of the reader. If the decoded product ID code indicates that it is compatible with the menuing program, execution of the menuing program continues normally. If it is not, the processor is caused to exit the menuing routine without making any menu specified changes.
The next field 650-2 of menu word 650 specifies the op code thereof in terms of a number from 0 to 7. This field specifies the operation to be performed by the menu word. The meanings of these different op codes are listed in
Specifically, the vector processing operations comprise selectable menu routines. Vectors to these routines can be stored in a vector table. The contents of data field 650-3, “offset,” is an index to the vector table relative to the base address thereof. If the offset field includes 10 bits, and only five of these bits are used as an index, then 32 different vector values will be possible. In this case the remaining 5 bits may be used for data.
The vector processing operations are preferably made selectable to a user by including respective menu bar code symbols in tables in the User's Manual of the reader. The user may then select the desired vector routine by imaging the appropriate symbol. The manner in which such a table is used will be described later in connection with
Among the vector processing operations which may be selected under op code 0 are the following. Operation A1 calls for the reader to output, i.e., display or print, via the local host processor, or via an on-reader LCD display, the identity of the version of the software currently being used by the reader. Operation A2 calls for the reader to output the current contents of the parameter table. Operation A3 calls for the reader to output the code options that are enabled, e.g., the types of symbols that the reader is to attempt to decode during the autodiscrimination process and whether or not a “multiple symbols option” has been enabled. Other options may also be defined as desired.
Operation A4 is a particularly powerful and desirable vector processing operation which causes the printer of the local host processor to print a menu bar code symbol that contains all of the information necessary to instruct another reader how it must be programmed if it is to operate in the same manner as the current reader. This, in turn, enables the user to quickly set up the same (or another) reader to operate in a manner that would otherwise require the user to manually select an entire sequence of parameter table values. If it is used to set up other readers, the process of using such a menuing bar code symbol may be thought of as a “cloning” procedure, since it allows a multiplicity of readers to be identically configured.
The type of bar code symbol in which the parameter table is printed must naturally be in a bar code symbology in which the reader is able to both encode (or write) data and decode (or read) data. Because the parameter table has a data content which may be too high to be encoded in many 1D symbologies, the menu symbol encoding the parameter table is preferably encoded in a 2D bar code symbol. One 2D symbology which is particularly suitable for use in encoding a menu bar code symbol of the subject type is that developed by Welch Allyn, Inc. and referred to as the “Aztec” symbology. The manner in which data is encoded in accordance with the Aztec symbology is described in detail in copending, commonly assigned U.S. Pat. No. 5,591,956, which is hereby expressly incorporated herein by reference.
In addition to op code 0, menu word 650 also makes available op codes 1–7, as shown in
Referring to
The parameter table is used to specify the operating options that are made subject to the control of the user. Representative groups of such options are shown as headings A–E of
The inclusion of user selectable code options as part of the menuing process has a significant effect on the overall data throughput rate of the reader, i.e., on the time necessary to decode a symbol whose symbology is not known in advance. If, for example, it is known that none of the symbols to be read during a series of readings comprise 1D symbols of any type, or any subset of 1D symbols such as Codabar, Code 39 or Code 128, code options allow a user to direct that any attempt to decode an unknown symbology according to these symbologies is to be skipped, thereby shortening the total time necessary for the processor to decode the unknown symbol according to the symbology which it does use. This skipping also reduces the chances of a misread. If, on the other hand, it is known that all of the symbols to be read during a series of reading operations are of one type, such as Interleaved 2 of 5, all 2D decoding programs and all the decoding programs for 1D symbologies other than interleaved 2 of 5 may be disabled, thereby limiting all decoding attempts to a single 1D symbology. Thus, the menuing process allows the autodiscrimination process to be optimized so as to achieve the highest possible data throughput rate.
A second important group of options provided by the menuing process are those that are labeled as “Scanning-Decoding” Options under heading C of
Also included among the scanning-decoding modes are the tracking modes listed under headings C4–C6 of
The availability of the SOD, SS and DOD tracking modes among the scanning-decoding options that may be selected during the factory programming of the reader is beneficial since it allows the data throughput rate of the reader to be optimized in view of the amount of memory that is available within the reader. At the same time, because operation in all of these modes may be disabled during operation in the One Shot, Repeat Until Done, or Repeat Until Stopped modes, the reader is able to operate in accordance with the non-tracking variants of these modes when such operation is preferred. One condition under which such operation may be preferred is one in which scanning while decoding is slow as a result of the time sharing of a bus. Thus, the reader combines flexibility of use with time-optimized use of the scanning and memory resources of the reader.
As will be explained more fully later, the RUD and RUS modes may be used either with or without one of the above-described tracking modes. This is because repetition is a necessary but not a sufficient precondition to the use of the tracking modes. Accordingly, if the RUD or RUS mode is not used in conjunction with a tracking mode it will comprise a non-tracking mode. If the RUD or RUS mode is used in conjunction with a tracking mode it will comprise a tracking mode.
Other groups of options that are provided by the menuing feature include those that are set aside under headings A, D and E of
Similarly, heading D is associated with parameter table addresses that correspond to various miscellaneous operating options that may be selected by the user. Included among these options are D1 which enables/disables the beeper and allows the volume thereof to be adjusted, D2 which enables/disables the use of an aiming LED, and D3 which enables/disables the provision of aural feedback to the user, among others. An example of a reader which provides aural feedback is described in U.S. Pat. No. 5,420,409.
Heading E is associated with parameter table addresses that correspond to various transmission options that may be selected by the user. Included among these options are E1 and E2, which enable/disable the outputting of check characters or checksum data with decoded data, and E3 which enable data edit options such as adding a carriage return and/or a line feed and/or other ASCII characters to the decoding data. Options E1 and E2 are useful, for example, in the localization and identification of hardware or software failures during the servicing of the reader. Option E3 is useful in placing decoded data in a form suitable for use with an application program.
Heading F is associated with parameter table addresses that correspond to various message editing commands for editing the form of characters in a decoded message. These commands may be, for example, search and replace commands (option F1), commands to insert characters (option F2), commands to delete characters from a decoded message (option F3), or other commands.
Heading G, meanwhile, is associated with parameter table addresses that correspond to commands for adding prefixes or suffixes, of a selectable character length, to a decoded message. Prefixes and suffixes are added to messages so that the host processor can identify the source of, or other characteristics of received messages. Option G1 allows addition of a prefix to a decoded message while option G2 allows addition of a suffix to a decoded message.
In view of the foregoing, it will be seen that the menuing process provides a wide range of user selectable functions and modes that allow the reader to be tailored to a user's specific application and/or preferences. Among these, the code options and the scanning-decoding options in particular, allow a user to reconfigure the operation of the reader in ways that have not heretofore been possible and thereby substantially increase the flexibility and overall data throughput rate of readers.
The manner in which the reader can be updated to accomplish the above-described results will now be described with reference to the flow chart of
If the menu message contains an op code, and the op code is other than 0, the processor is directed, via block 820, to a block 825. The latter block causes it to make the parameter table changes called for by the op code and the associated offset and data fields, sets a “flash” flag to indicate that changes have been made and then proceeds to block 850. This has the effect of implementing the user selected changes in the menuing options discussed previously in connection with
If the menu message contains an op code of 0, the processor is directed, via block 820, to a block 830. The latter block causes the processor to perform the vector processing operation indicated by the remainder of the message. This operation will comprise one of the operations discussed previously in connection with items A1 through A4 of
In view of the foregoing, it will be seen that, when the processor arrives at block 850 it will have taken all required numerical data, performed all required parameter table modifications, or performed all required vector processing operations. As will now be explained, the remainder of the flow chart of
If, on arriving at block 850, the processor finds that the “flash” flag has not been set, it knows that the contents of the parameter table have not been changed and, consequently, that no updated copy thereof needs to be stored in EROM 46. Under this condition, the processor is directed to simply return to the main program of
In accordance with block 855, the processor is instructed to copy from EROM 46 to RAM 45, the program instructions (flash routine) necessary to copy the parameter table from RAM to EROM. The copying of the flash routine to RAM is necessary because the EROM cannot be written to when the apparatus is reading or operating from the EROM. Once the flash routine has been copied to RAM 45, the processor is directed to jump to RAM to begin executing that routine. As it does so it is directed, via block 860, to erase the old (unchanged) parameter table from EROM 46. Per block 865, it then copies new (changed) parameter table from RAM 45 to EROM 46. Once this has been done, the processor is directed back to the main program of
Referring to
Referring to
The fact that the above-discussed examples of menu selections make use of menu symbols that use the Aztec 2D symbology is not essential to the practice. Other 2D or 1D menu symbol symbologies could also have been used, if desired, as will be seen from the following discussion of
Referring to
Referring to
Because fuller information concerning the menu options contemplated, and their uses is contained in the User's Manual for the above-identified readers, these menu options will not be discussed further herein.
Reprogramming
In accordance with another feature of the apparatus and method, the reader may be reprogrammed to operate in accordance with an entirely new application program. This means that the reader may not only be provided with a new or updated decoding program, or a new parameter table, it may also be provided with one or both of a new menuing routine and a new main program. As a result, a reader may be effectively reconfigured as a new reader, with new capabilities and features, as often as necessary to keep it up to date with the latest developments in optical reader technology. Advantageously, this reprogramming may be accomplished either locally as, for example, by a local host processor equipped with a diskette or CD-ROM drive, or remotely by a distant processor that is coupled to the reader via a suitable telephone or other transmission line or via a computer network or bulletin board.
The reprogramming feature will now be described with reference to the system block diagram of
If the new reader program is available locally as, for example, on a diskette or CD-ROM, it may be loaded into reader 10 or 10′ using a suitable drive unit 920, under the control of a keyboard 925 and the reprogramming routine shown in
The manner in which the reader may be made to perform any of a variety of different externally specified functions, including reprogramming itself, will now be described with reference to the flow charts of
Turning first to
Once the BBOOTT command has been received and acted on, the processor enters a loading loop including blocks 1007 through 1020. This loading loop causes the processor to load a program into RAM, one line at a time, in conformity with any suitable communication protocol, until the last line of code is detected via block 1020. When the latter has occurred, the processor is directed to block 1025, which causes it to jump to the newly received program and to begin executing the same before returning to the main program.
Referring to
On executing the reprogramming flow chart of
If the processor has not exited the reprogramming routine of
If, however, any line of data has not been successfully stored, block 1075 will direct the processor to a block 1080 which causes it to output an error message and exit the program. If the latter occurs, the reprogramming routine as a whole must be repeated. If the latter does not occur, the above-described process will continue line-after-line, block-after-block, until the entire file has been successfully transferred.
In view of the foregoing, it will be seen that the effect of the reprogramming routine of
With the use of the above-described reprogramming feature, the reader of the invention may be kept current with the latest available programs that are suitable for use therewith. A user at local processor 900 may, for example, communicate with remote processor 950, via keyboard 925, and determine if new programmable features are available. If they are, he may obtain them from the remote process and download them locally, or request that the remote processor download them directly to the reader. Alternatively, the remote processor may initiate the reprogramming of the reader independently as, for example, pursuant to a service contract or updating service. It will be understood that all such embodiments are within the contemplation.
Local Host and Reader System Operations
As has been described hereinabove, reprogramming of a reader may be accomplished with use of a local host processor. This section describes additional features of a system comprising a local host processor 900 and a reader 10, and more particularly describes features and additional system operations that are realized by various interaction between host processor 900 and reader 10, and in certain applications by a host processor 900 that is not in communication with a reader 10.
A flow diagram illustrating the primary program for operating a local host processor for use in controlling a reader is shown in
A flow diagram illustrating a subprogram for reprogramming of a reader 10 by control of a local host processor is shown in
At block 1110 host processor 900 displays a main reprogramming screen on display monitor 930. The main reprogramming screen prompts a user to designate a source for an operating program. The source designated is typically a bulk storage device such as a hard or floppy disk drive but also may be, for example, a RAM or ROM storage device. When the source is selected, host processor 900 displays on display monitor 930 indicators of the operating programs, or files, that are available in the storage device source selected (block 1114) and a user selects one of the operating programs. Some available operating programs comprise entire main programs and entire parameter tables for loading into reader, whereas other available operating programs include only parameter tables which may be customized parameter tables created by a user during execution of a parameter table editing subprogram.
When a user selects a source for an operating program, and selects a desired operating program, downloading of the operating program proceeds. At block 1116 host processor determines whether a reader is connected to the host processor communications link, normally by serially transmitting a device detection command to a reader, which has been previously programmed to transmit an acknowledge response message on the reception of a detection command.
If a reader is connected to host processor 900 then host processor at block 1118 sends an identification command to reader 10 which is previously programmed to transmit an identification response on the reception of an identification command. After receiving the identification response and comparing the response to the selected operating program at block 1120 processor at block 1122 determines whether the reader is of a type which is compatible with the selected operating program. An operating program is compatible with a reader in communication with host processor if the operating program is specifically adapted for that reader's unique hardware configuration. Bar code readers of various types have different hardware components including different memory devices, image sensors, input/output devices, and other components. The selected operating program must be in a form enabling it to communicate with the particular hardware components of the presently connected reader.
If the selected operating program is compatible with the present reader, the host processor at block 1126 determines if the operating program is a parameter-only type operating program or an operating program that comprises a main program and a parameter table. This determination can be made, for example, by reading the contents of a DOC type file which is made to be read by processor 900 when an operating program is read, and which is made to include an identifier as to whether the operating program is of a type which includes a main program and parameter table; by reading the contents of a predetermined address of the operating program which is made to include an identifier as to the type of operating program; or by reading predetermined addresses of an operating program designated for storing a main program and basing the determination on whether instructions are present in the designate addresses.
A memory map for a typical operating program is shown in
When host processor 900 determines at step 1126 that the selected operating program includes a main program then program control proceeds to step 1130 wherein processor transmits the contents of the selected operating program into EROM 46 of reader 10. If host processor 900 determines at block 1126 that the selected operating program is a parameter only type operating program then host processor 900 first queries EROM 46 to determine the begin and end address locations of the parameter table of the operating program currently stored in EROM. To this end host processor 900 at block 1130 polls the contents of a vector pointer table 1134 in predetermined address locations of EROM. Described previously herein vector pointer table 1134 comprises the beginning and end addresses of the parameter table. After vector pointer table is polled, host processor 900 stores the address location of the present parameter table, modifies the parameter table address of the selected parameter-only operating table in accordance with the parameter table addresses of the existing parameter table (block 1136) and writes the contents of the parameter table address locations of the modified parameter-only type operating program into EROM 46 (block 1140).
If processor 900 determines at block 1126 that the selected operating program is of the type having a main program and a parameter table, then processor 900 at block 1144 prompts the user whether the user would like to save the contents of a parameter table of the operating program currently stored in EROM 46 of reader 10; that is, utilize the parameters of the current operating program in the operation of a reader that is programmed to have a new main program. If the user responds affirmatively, then processor 900 reads the contents of the existing parameter table (block 1150) after first polling the vector pointer table and then writes, at block 1152, the contents of the existing parameter table in a predetermined holding address location of a storage device associated with processor 900 or reader 10.
The selected operating table is then written into EROM 46 at block 1140, line by line, until loading is complete. If the user had requested at block 1144 to save the contents of the original parameter table (a determination made at block 1153), then processor 900 writes the contents of the parameter table stored in a holding address location to the appropriate parameter address locations of EROM at block 1154, after determining the address locations of the parameter table at block 1156. Referring again to the primary host processor program shown in
As discussed previously with reference to
A flow diagram for a parameter table editing subprogram is shown with reference to
In the embodiment shown, the parameter table editing subprogram is configured by default to edit the existing parameter table stored in EROM of the connected reader if a reader is present. It will be recognized, however, that the editing subprogram can also be configured to query the user as to whether the user wishes to edit the parameter table currently stored in reader EROM 46, or another candidate parameter table typically stored in a bulk storage device associated with processor 900.
If a reader is not in communication with processor 900, continuing with reference to the flow diagram shown, then processor at block 1168 prompts the user to select a reader for which the user wishes to edit a parameter table and once a type of reader is selected, a default parameter table associated with that reader type is written in to a temporary storage device of processor 900 typically provided by a RAM device.
At the termination of block 1168 or block 1166 if a reader is connected, a parameter configuration screen is displayed to a user, at block 1169, an exemplary embodiment of which is shown in
Until an output option is selected, the user typically edits various parameters the user wishes to change as shown in blocks 1170 and 1172. Selection of one parameter type option, e.g. code or symbology option parameter 1174 causes a secondary editing screen to appear allowing editing of parameters of the selected parameter type. When editing pertaining to one or several parameter types is complete then program reverts back to parameter configuration screen at block 1169, allowing user to select an output option.
If a user selects the write output option (block 1176), the edited parameter table is written to, or downloaded to reader EROM in the fashion described previously with reference to block 1140 of
Another output option available to a user is to compare two or more parameter tables. If this option is selected (block 1184) then the user is requested at block 1186 to select parameter tables from memory locations (which may be memory location associated with processor 900 or with reader 10). When parameter tables have been selected, processor 900 at block 1186 compares the selected parameter tables. In general, the comparison is carried out by a compare function applied after an offset between the files is accounted for. Processor 900 then outputs the results of the comparison at block 1188, typically by displaying the comparison results on screen 930, or printing the comparison results using printer 940.
One specialized output option allows the user to create programming menu symbols whose general features have described with reference to
When a menu symbol output option is selected at block 1189, processor 900 determines at block 1202, by reading a reader identifier, whether the reader designated for receipt of the edited parameter table includes a one-dimensional (1D) or two-dimensional (2D) image sensor.
If the reader includes a one-dimensional image sensor, then processor 900 creates a series of linear bar codes which may be used for reprogramming several readers. Specifically, if the designated reader includes a one dimensional image sensor then processor 900 at block 1204 creates a first linear menu symbol adapted to generate an instruction causing the reader reading the symbol to change parameter table values of the reader's EROM to default values. Then, at block 1206 processor 900 creates a distinct linear programming menu symbol for each parameter of the parameter table that is changed during the editing process from a default value. An important feature is described with reference to block 1208. When the series of menu symbols is created, the created symbols may be printed on paper by printer 940 according to a conventional protocol, or else displayed on display device 930, typically a CRT monitor. The term created symbols herein refers to binary encoded data stored in a memory space which result in an actual symbol being output when the data is written to a display device or printer. An unlimited number of bar code readers may be reprogrammed by reading the menu symbols that are displayed on the display device 930. Displaying the created menu symbols on a display device allows rapid output of created symbols and eliminates the need to supply a paper substrate each time a menu symbol is output.
If the reader designated for reprogramming includes a 2D image sensor, then processor 900 at block 1210 need only create one 2D menu symbol in order to cause reprogramming of the designated reader in accordance with the changes made to a parameter table even in the case where multiple changes to the parameter table are made. This is so because an increased number of instructions may be encoded in a symbol of a 2D symbology type.
Another subprogram which may be selected from a subprogram option screen displayed at block 1102 is a subprogram for simulating the result of applying editing commands to a decoded message. As discussed previously, editing commands may be applied to decoded messages by entry of the commands to a parameter table in parameter table addresses corresponding to heading H of
An exemplary flow diagram for an editing command simulation subprogram is shown in
When the commands are entered, processor 900 applies the commands entered at block 1218 to the unedited test message at blocks 1220, 1222, and 1224 if all are applicable. When editing is complete processor 900 outputs the result of applying the editing commands, at block 1226, typically by displaying the edited message on display screen 930.
At block 1228 processor queries the user as to whether the user wishes to save the editing commands which resulted in the edited message being displayed or otherwise output at block 1226. If the user elects to save the editing commands, then processor 900 at block 1230 writes the commands to a predetermined command save memory location associated with processor 900. When the parameter table editing subprogram described with reference to
In addition to being adapted to download new or modified operating programs to reader 10 remotely, processor 900 can also be adapted to remotely transmit component control instructions to reader 10 which are executed by reader processor 40 substantially on receipt by reader 10 to control one or more components of reader 10 in a manner that can be perceived by a reader operator. For example, processor 900 and reader 10 can be arranged so that processor 900, on receipt of a command from a user, transmits a component control instruction to reader 10 which is executed by reader processor 40 to have the same effect as trigger 52 being manually pulled, or alternatively, being released. Instructions transmitted by processor 900 having the same effect as manually pulling and manually releasing trigger may be termed, respectively, “remote trigger activation” and “remote trigger release” instructions. Processor 900 and reader 10 can also be complimentarily arranged so that, on receipt of a user activated command to remotely control reader 10, processor 900 transmits to reader 10 an instruction which is executed by reader 10 substantially on receipt of the instruction to turn on LEDs 22 or to “flash” LEDs according to a predetermined pattern, or to activate an acoustic output device such as speaker 38 to issue a “beep” or a series of beeps. Component control instructions for on-receipt execution which operate to control LEDs 22 or speaker 38 are useful. For example, to signal an alarm condition, to indicate that a task is completed, or to attract the attention of a reader operator for any purpose. The invention relates to an optical reading system comprising an optical reader and a host processor. In one aspect of the invention, the host processor may be configured to transmit a component control instruction in response to a user input command input by a user of the host processor to remotely control the reader. The optical reader subsequently receives the transmitted component control instruction and executes the component control instruction substantially on receipt thereof. In one embodiment, execution of the component control instruction by the optical reader has the same effect as the reader trigger being manually pulled by a reader operator.
Processor 900 and reader 10 can also be complimentarily arranged so that, on receipt of a user activated command, processor 900 transmits to reader 10 a component control instruction which is executed by reader 10 substantially on receipt thereof to transmit data which is stored in memory 45 or in another memory device associated with reader 10 such as a long-term nonvolatile memory device. For example, a component control instruction received from processor 900 may be executed by reader 10 to upload from reader 10 to processor 900 image data that is stored in a specific memory location of reader memory 45 such as a reader memory location that stores the most recently captured image data captured by reader. Processor 900 may subsequently display such uploaded image data on display 930. Other component control instructions which may be transmitted from processor 900 to reader 10 for substantially on-receipt execution by reader processor 40 are instructions which, for example, cause predetermined indicia to be displayed by reader display 56, or which cause processor 40 to capture, by appropriate control over image sensor 32, a single frame of image data corresponding to the scene presently in the field of view of reader 10 in memory 45 or in another memory device.
It will be understood that certain component control instructions require that reader processor 40 execute a series of instruction steps, or repetitive instruction steps to cooperatively control more than one reader component. For example, a component control instruction commanding an optical reader to capture an image normally requires that processor 40 execute a series of instruction steps involving control of such components as LEDs 22, components of the imaging assembly, and memory 45.
A modified reader operating program that adapts a reader to receive component control instructions from a remote local host processor for substantially on-receipt execution by reader 10 is shown in
Scanning-Decoding/Autodiscrimination
The scanning-decoding and autodiscrimination features, and their relationships to the above-described menuing and reprogramming features, will now be described with reference to FIGS. 6 and 12–18. More particularly, the combined operation of these features will be discussed in connection with
Turning first to the main program of
In those embodiments or modes in which the multiple symbols option is enabled, the processor assumes that more than one symbol is present in the image data. Under this condition, if decoding is successful, the processor continues to loop back to block 627 to make additional decoding attempts, unless stopped by one of blocks 635 or 642. In this case, however, the “yes” output of block 643 is selected, preventing additional images from being captured.
When the processor begins executing its scanning-decoding program, it first determines from the parameter table which scanning-decoding option or combination of options is to be used. It will then be directed to an autodiscrimination routine that is configured to execute that routine in accordance with the selected scanning-decoding option or options.
At start up, the parameter table may be set up so that operation in the One Shot scanning-decoding mode is established as a default condition. Alternatively, the parameter table may be set up so that the RUD or RUS scanning-decoding mode is established as a default condition. Since the One Shot mode is inherently a non-tracking mode, its selection as a default mode implies that none of the tracking modes is selected. Since the RUD and RUS modes can be used either with or without one of the three tracking modes, its selection as a default parameter may or may not be associated with one of the three tracking modes, depending upon how the reader is programmed at the time of manufacture.
Tracking Options
The differences between the three tracking modes are best understood with reference to FIGS. 12–14. The latter figures (with changes in figure and indicia number) are incorporated from prior U.S. patent application Ser. No. 08/914,883 now U.S. Pat. No. 5,942,741, together with their associated descriptions as follows:
Scanning of indicia can take place under either of two generalized conditions, depending upon the decoding load presented by the indicia. Under light decoding loads, shown in
Under heavy decoding loads, however, prior art methods do not allow sufficient time for decoding. Thus, as shown in
In the embodiment disclosed in prior application Ser. No. 08/205,539, now issued as U.S. Pat. No. 5,463,214, this problem is solved by modifying the reader in a way that allows the scanning process to be suspended and restarted as required to prevent the decoding process from falling so far behind the scanning process that data overflows the memory and is lost. This embodiment is referred to herein as the “Scan on Demand” or SOD tracking mode. This solution to the problem may be understood with reference to
Referring to
More particularly,
Referring to
More particularly,
Referring to
More particularly,
The mode illustrated in
The modes illustrated in
The fact that some embodiments use 1D image sensors while others use 2D image sensors should not be taken to mean that embodiments which use 1D image sensors can only read 1D symbols or that embodiments which use 2D image sensors can only read 2D symbols. This is because techniques exist for using either type of image sensor to read both 1D and 2D symbols. It will therefore be understood that the present reader is not restricted to use with any one type of image sensor or to any one type of bar code or other optically encoded symbol.
Referring to
Locations SS and SE of memory M2 are updated in the course of a series of scans so that they always identify or otherwise point to the address of the beginning and ending of the most recently produced complete block of scan data. As a result, when the decoding circuitry is ready to decode the most recently produced complete block of scan data, it need only refer to locations SS and SE to obtain information as to where to begin and end decoding. Before decoding begins, the contents of locations SS and SE are written into locations DS (Decode Start) and DE (Decode End) so that locations SS and SE can continue to be updated while decoding proceeds on the basis of the contents of locations DS and DE. In the preferred embodiment, the decoding circuitry is programmed to mark these beginning addresses as “invalid” (for example, by changing its sign) after it is acquired. Since the decoding processor is programmed to decode only “valid” data, this assures that it can decode a single block of scan data only once.
Referring to
Similarly, location CD may be used as a pointer which identifies the memory space where the current decode is being undertaken. Finally, location ND may be used as a pointer which identifies where the next available image is for decoding purposes.
Under ordinary circumstances, three scan data memory spaces will be sufficient to keep the decoding activity of the reader fully occupied and current. This is because the tracking method allows the skipping over of old blocks of scan data as necessary for the decoder to remain occupied and current. If the decoding load becomes extremely heavy, however, it is possible that more old blocks of scan data are skipped over than is advisable. In such instances, it may be desirable to increase the number of memory spaces from 3 to N, where N may be 4 or even more, and to use more than one decoding circuit. If such an increased number of memories and decoders are used, blocks of scan data may be distributed among the memories according to a simple sequential rule and kept track of by increasing the number of bits in the pointers of memory space MP. In addition, the decoding circuits may be assigned to the then most current complete block of scan data as they become free. It will be understood that all such numbers of memory spaces and decoding circuits and the associated tracking procedure are within the contemplation of the present invention.
Referring to
In view of the foregoing, it will be seen that the scanning and decoding processes may have a selectable one of any of a plurality of different relationships with one another, some of these relationships being tracking relationships and some being non-tracking relationships. The menuing feature allows a user to select that operating mode, whether or not tracking, which gives the best overall data throughput rate in view of the user's then current objectives.
(b) Autodiscrimination/Code Options
The manner in which the code options called for by the parameter table are implemented in conjunction with the autodiscrimination feature, will now be described with reference to the flow charts of
In order to gain an understanding as a whole, it should be borne in mind that the above-described relationships between the decoding and menuing processes exist as a subset of an even more complex set of relationships that include the tracking and multiple symbols features. When, for example, a portion of the flow chart of
In principle, at least, each one of the possible combinations of the above-described options may be represented in a complete and separate flow chart and described as such. Because adopting the latter approach would obscure rather than clarify, however, the present application will describe these combinations simultaneously in terms of a representative flow chart, with different options being described potential variants of that representative flow chart.
Turning first to the flow chart of
If the reader includes a 2D image sensor, this image data will have been scanned as a 2D image while the reader is held substantially stationary with respect to its target. If the reader includes a 1D image sensor this image data will have been scanned as a series of 1D images while the reader is being moved asynchronously across the target in the manner described in commonly assigned U.S. patent application Ser. No. 08/504,643, now U.S. Pat. No. 5,773,806, which is expressly incorporated herein by reference.
On encountering block 1605, the processor is directed to calculate the “activities” of selected image data elements. The “activity” of a point P as used herein comprises a measure of the rate of change of the image data over a small two-dimensional portion of the region surrounding point P. This activity is preferably calculated along any two arbitrarily selected directions which are mutually perpendicular to one another, as shown by the lines parallel to directions X and Y of
In the preferred embodiment, an activity profile of the image data is constructed on the basis of only a selected, relatively small number of image data elements that are distributed across the field of view that corresponds to the stored image data. Using a relatively small number of data elements is desirable to increase the speed at which the symbol may be imaged. These selected points may be selected as the points which lie at the intersections of an X-Y sampling grid such as that shown in
When the processor has determined the activities of the selected image data points, it is directed to block 1610, which causes it to look for candidate bar code symbols by identifying regions of high activity. This is conveniently done by determining which sets of image data points have activities that exceed a predetermined activity threshold value. A simplified, one-dimensional representation of this step is illustrated in
In embodiments which are adapted to find and decode all of the symbols that occur in fields of view that include a plurality of bar code symbols, (i.e., embodiments in which the multiple symbols option is enabled), the result of the step called for by block 1610 is the identification of a plurality of candidate symbol regions (CSRs), any one or more of which may be a bar code symbol. Whether or not they are bar code symbols is determined on the basis of whether they are decodable. As will be explained more fully later, if the multiple symbols option is not enabled, the processor may be instructed to select one of the CSRs according to a suitable selection rule, such as the largest CSR first, the CSR nearest the center of the field of view first, the CSR with the highest total activity first, etc., and then attempt to decode only that symbol and stop, whether or not a symbol has been decoded. Alternatively, as a further option, the processor may be instructed to attempt to decode each CSR in turn until one of them is successfully decoded, and then stop. If the multiple symbols option is enabled, the processor will process all of the CSRs, in turn, according to a suitable priority rule, and continue to do so until all of the CSRs have been either decoded or have been determined to be undecodable.
Once all CSRs have been located, the processor is directed to block 1615, which calls for it to select the then largest (or most centrally located) as yet unexamined CSR for further processing, and then proceed to block 1620. The latter block then causes the processor to find the centroid or center of gravity of that CSR, before proceeding to block 1625. An example of such a centroid is labeled C in
On encountering block 1625, the processor is directed to examine the selected CSR by defining various exploratory scan lines therethrough, determining the activity profile of the CSR along those scan lines, and selecting the scan line having the highest total activity. In the case of a 1D bar code symbol, this will be the direction most nearly perpendicular to the direction of the bars, i.e., the optimum reading direction for a 1D symbol.
On exiting block 1625, the processor encounters blocks 1630 and 1635. The first of these sets a scan line counter to zero; the second defines an initial, working scan line through the centroid in the previously determined direction of highest activity. The result of this operation is the definition, in the image data space representation of the CSR, of a working scan line such as SC=0 in
Once the initial scan line has been defined, the processor is directed by block 1640 to calculate, by interpolation from the image data of the CSR, the values of sampling points that lie along this scan line. This means that, for each sampling point on the initial scan line, the processor will calculate what brightness the sampling point would have if its brightness were calculated on the basis of the weighted brightness contributions of the four nearest measured image data points of the CSR. These contributions are illustrated by the dotted lines which join the sample point SP of
Once the above-described scan line data have been calculated, the processor is directed to block 1645, which calls for it to binarize the scan line data, i.e., convert it to a two-state representation of the data which can be processed as a candidate for 1D decoding. One such representation is commonly known as a timercount representation. One particularly advantageous procedure for accomplishing this binarization process is disclosed in U.S. Pat. No. 5,286,960, which is hereby incorporated herein by reference.
On exiting block 1645, the processor will be in possession of a potentially decodable two-state 1D representation of the CSR. It then attempts to decode this representation, as called for by block 1650. This attempted decoding will comprise the trial application to the representation of one 1D decoding program after another until the latter is either decoded or determined to be undecodable. Because decoding procedures of the latter type are known to those skilled in the art, they will not be discussed in detail herein.
As the 1D autodiscrimination process is completed, the processor is directed to decision block 1655 which causes it to continue along one of two different paths, depending on whether or not decoding was successful. If it was not successful, the processor will be caused to loop back to block 1635, via blocks 1660 and 1665, where it will be caused to generate a new working scan line that is parallel to initial scan line SC=0, but that passes above or below centroid C. This looping back step may be repeated many times, depending on the “spacing” of the new scan lines, until the entire CSR has been examined for decodable 1D data. If the entire CSR has been scanned and there has been no successful decode, the processor is directed to exit the just-described loop via block 1670. As used herein, the term “parallel” is used in its broad sense to refer to scan lines or paths which are similarly distorted (e.g., curvilinear) as a result of foreshortening effects or as a result of being imaged from a non-planar surface. Since compensating for such distorting effects is known, as indicated, for example, by U.S. Pat. No. 5,396,054, it will not be discussed in detail herein.
Block 1670 serves to direct the processor back to block 1615 to repeat the above-described selection, scanning and binarizing steps for the next unexamined CSR, if one is present. If another CSR is not present, or if the processor's program calls for an attempt to decode only one CSR, block 1670 causes the processor to exit the flow chart of
If the processing of the first CSR has resulted in a successful decode, block 1655 directs the processor to block 1675, which causes it to determine whether the decoded data indicates that the CSR contains a 1D stacked symbol, such as a PDF417 symbol. One example of such a symbol is shown in
If, on encountering block 1675, the decoded data indicates that the CSR contains a 1D stacked symbol, the above-described processing is modified by providing for the repetition of the scanning-digitizing process, beginning with block 1635. This is accomplished by blocks 1684, 1686 and 1688 in a manner that will be apparent to those skilled in the art. Significantly, by beginning the repeating of the process at block 1635, all additional scan lines defined via the latter path will be parallel to the first decodable scan line, as required by a 1D stacked symbol, at least in the broad sense discussed earlier.
In view of the foregoing, it will be seen that, depending on the number of CSRs that have been found in the stored image data, and on the enablement of the multiple symbols option, the flow chart of the embodiment shown in
As will be explained more fully in connection with
Referring to
The flow chart of
Once the image data has been binarized, the processor continues on to block 1810, which causes it to identify and locate all of the 2D finder patterns that appear in the field of view of the image data. This is preferably accomplished by examining all of the candidate 2D finder patterns (CFPs) that are present and identifying them by type, i.e., identifying whether they are bull's-eye type finder patterns, waistband type finder patterns or peripheral type finder patterns. An example of a bull's-eye type finder pattern is shown in the central portion of the 2D bar code symbol of
Particularly advantageous for purposes, however, is bull's-eye type finder finding algorithm of the type that may be used both with 2D symbologies, such as MaxiCode, that have bull's-eye finder patterns that include concentric rings and with 2D symbologies, such as Aztec, that have bull's-eye finder patterns that include concentric polygons. A finder finding algorithm of the latter type is described in commonly assigned U.S. patent application Ser. No. 08/504,643, now U.S. Pat. No. 5,773,806, which has been incorporated herein by reference. The Aztec 2D bar code symbology itself is fully described in U.S. patent application Ser. No. 08/441,446, which has also been incorporated herein by reference.
Once all of the finder patterns have been located and their types have been determined, the processor is directed to decision block 1815. This block affords the processor an opportunity to exit the flow chart of
If a finder pattern has been found and typed, the processor is directed to block 1825. This block causes the processor to select for decoding the bar code symbol whose finder is closest to the center of the field of view of the image data. Optionally, the processor may be instructed to find the largest 2D bar code symbol that uses a particular 2D symbology or the 2D bar code symbol using a particular 2D symbology which is closest to the center of the field of view of the image data. The “closest-to-the-center” option is ordinarily preferred since a centrally located symbol is likely to be a symbol, such as a menu symbol, at which the user is deliberately aiming the reader. Once this selection has been made, the processor attempts to decode that symbol, as called for by block 1830. If this decoding attempt is successful, as determined by decision block 1835, the resulting data may be stored for outputting in accordance with block 648 of the main program of
If the user has elected not to use the multiple symbols option, block 1845 may direct the processor to exit the flow chart of
If the user has elected to use the multiple symbols option, block 1845 will direct the processor back to block 1825 to process the next 2D symbol, i.e., the symbol whose CFR is next closest to the center of the field of view. The above-described attempted decoding and storing (or outputting) steps will then be repeated, one CFR after another, until there are no more symbols which have usable finder patterns. Finally, when all symbols having usable finder patterns have been either decoded or found to be undecodable, the processor will exit the flow chart of
In view of the foregoing, it will be seen that, depending on the number of identifiable CFRs that have been found in the stored, digitized image, and on the enablement of the multiple symbols option, the 2D autodiscrimination routine shown in
For the sake of clarity, the foregoing descriptions of the 1D and 2D phases of the 1D/2D autodiscrimination process have been described separately, without discussing the combined or overall effect of the code options and scanning-decoding options discussed earlier in connection with
On entering the flow chart of
If all 1D codes have been disabled, the processor is directed directly to block 230, thereby skipping block 2010 in its entirety. Then, unless all 2D codes have also been disabled (per block 2030), it proceeds to block 2035 to begin the autodiscrimination process described in connection with
In view of the foregoing, it will be seen that the 1D/2D autodiscrimination process may be practiced in many different ways, depending upon the menuing options that have been chosen by the user. Among these menuing options, the code options increase the data throughput rate of the reader by assuring that the processor does not waste time trying to autodiscriminate and decode symbols which it has been told are not present, or are not of interest. The scan tracking options also increase the data throughput rate of the reader by assuring that the scanning and decoding phases of read operations both operate, to the extent possible in view of the then current decoding load and decoding options, at a 100% utilization rate. Even the multiple symbols option also increases the data throughput rate of the reader by either discontinuing the reading of symbols that are not centered and therefore not of interest or speeding up the processing of multiple symbols that are of interest. Thus, for a processor with a given performance rating and a set of decoding programs of given length, the apparatus assures a higher overall data throughput rate than has heretofore been possible.
While the present invention has necessarily been described with reference to a number of specific embodiments, it will be understood that the time spirit and scope of the present invention should be determined only with reference to the following claims.
This is a continuation of U.S. patent application Ser. No. 09/385,597 filed on Aug. 30, 1999, which is a continuation-in-part of U.S. patent application Ser. No. 08/839,020 filed Apr. 23, 1997, which issued as U.S. Pat. No. 5,965,863 on Oct. 12, 1999, which, in turn, is a continuation-in-part of U.S. patent application Ser. No. 08/697,913, filed Sep. 3, 1996, which issued as U.S. Pat. No. 5,900,613 on May 4, 1999. The priorities of all of the above applications are claimed, and the disclosure of each of the above applications is incorporated herein by reference in its entirety.
Number | Name | Date | Kind |
---|---|---|---|
3582884 | Shepard | Jun 1971 | A |
3663762 | Joet, Jr. | May 1972 | A |
3684868 | Christie et al. | Aug 1972 | A |
3723970 | Stoller | Mar 1973 | A |
3906166 | Cooper et al. | Sep 1975 | A |
4004237 | Kratzer | Jan 1977 | A |
4009369 | Hayosh et al. | Feb 1977 | A |
4041322 | Hayosh et al. | Aug 1977 | A |
4041391 | Deerkoski | Aug 1977 | A |
4075461 | Wu et al. | Feb 1978 | A |
4097847 | Forsen et al. | Jun 1978 | A |
4114155 | Raab | Sep 1978 | A |
4164628 | Ward et al. | Aug 1979 | A |
4210802 | Sakai | Jul 1980 | A |
4251798 | Swartz et al. | Feb 1981 | A |
4289957 | Neyroud et al. | Sep 1981 | A |
4291410 | Caples et al. | Sep 1981 | A |
4315245 | Nakahara et al. | Feb 1982 | A |
4323755 | Nierenberg | Apr 1982 | A |
4327283 | Heyman et al. | Apr 1982 | A |
4349741 | Bobart et al. | Sep 1982 | A |
4349742 | Flurry et al. | Sep 1982 | A |
4386562 | Nally et al. | Jun 1983 | A |
4435822 | Spencer et al. | Mar 1984 | A |
4445118 | Taylor et al. | Apr 1984 | A |
4467196 | Balliet et al. | Aug 1984 | A |
4473746 | Edmonds | Sep 1984 | A |
4488678 | Hara et al. | Dec 1984 | A |
4488679 | Bockholt et al. | Dec 1984 | A |
4500776 | Laser | Feb 1985 | A |
4538060 | Sakai et al. | Aug 1985 | A |
4542528 | Sanner et al. | Sep 1985 | A |
4561089 | Rouse et al. | Dec 1985 | A |
4570057 | Chadima, Jr. et al. | Feb 1986 | A |
4602242 | Kimura et al. | Jul 1986 | A |
4603390 | Mehdipour et al. | Jul 1986 | A |
4610359 | Muller | Sep 1986 | A |
4628532 | Stone et al. | Dec 1986 | A |
4636624 | Ishida et al. | Jan 1987 | A |
4639932 | Schiff | Jan 1987 | A |
4644523 | Horwitz | Feb 1987 | A |
4646353 | Tenge et al. | Feb 1987 | A |
4651202 | Arakawa | Mar 1987 | A |
4653076 | Jerrim et al. | Mar 1987 | A |
4654514 | Watson et al. | Mar 1987 | A |
4686363 | Schoon | Aug 1987 | A |
4690530 | Fujino et al. | Sep 1987 | A |
4710817 | Ando | Dec 1987 | A |
4721849 | Davis et al. | Jan 1988 | A |
4731525 | Hice | Mar 1988 | A |
4755873 | Kobayashi | Jul 1988 | A |
4757206 | Ohta et al. | Jul 1988 | A |
4761544 | Poland | Aug 1988 | A |
4771165 | van Hulzen et al. | Sep 1988 | A |
4782220 | Shuren | Nov 1988 | A |
4783588 | Schmidt et al. | Nov 1988 | A |
4785463 | Janc et al. | Nov 1988 | A |
4791282 | Schmidt et al. | Dec 1988 | A |
4791446 | Ishida et al. | Dec 1988 | A |
4794239 | Allais | Dec 1988 | A |
4807256 | Holmes et al. | Feb 1989 | A |
4818856 | Matsushima et al. | Apr 1989 | A |
4825057 | Swartz et al. | Apr 1989 | A |
4825058 | Poland | Apr 1989 | A |
4835713 | Pastor | May 1989 | A |
4841544 | Nuytkens | Jun 1989 | A |
4864302 | Bowers | Sep 1989 | A |
4868375 | Blanford | Sep 1989 | A |
4874936 | Chandler et al. | Oct 1989 | A |
4877949 | Danielson et al. | Oct 1989 | A |
4893333 | Baran et al. | Jan 1990 | A |
4896029 | Chandler et al. | Jan 1990 | A |
4900907 | Matusima et al. | Feb 1990 | A |
4901073 | Kibrick | Feb 1990 | A |
4906830 | Hasegawa et al. | Mar 1990 | A |
4908500 | Baumberger | Mar 1990 | A |
4916297 | Tukada et al. | Apr 1990 | A |
4942474 | Akimoto et al. | Jul 1990 | A |
4973829 | Ishida et al. | Nov 1990 | A |
4983818 | Knowles | Jan 1991 | A |
4998010 | Chandler et al. | Mar 1991 | A |
5019699 | Koenck | May 1991 | A |
5113445 | Wang | May 1992 | A |
5120943 | Benz | Jun 1992 | A |
5138140 | Siemiatkowski et al. | Aug 1992 | A |
5153418 | Batterman et al. | Oct 1992 | A |
5153421 | Tandon et al. | Oct 1992 | A |
5155343 | Chandler et al. | Oct 1992 | A |
5159635 | Wang | Oct 1992 | A |
5180904 | Shepard et al. | Jan 1993 | A |
5185514 | Wike et al. | Feb 1993 | A |
5189292 | Batterman et al. | Feb 1993 | A |
5196686 | Leister | Mar 1993 | A |
5208449 | Eastman et al. | May 1993 | A |
5210411 | Oshima et al. | May 1993 | A |
5212777 | Gove et al. | May 1993 | A |
5223701 | Batterman et al. | Jun 1993 | A |
5229587 | Kimura et al. | Jul 1993 | A |
5235167 | Dvorkis et al. | Aug 1993 | A |
5237160 | Baba | Aug 1993 | A |
5241164 | Pavlidis et al. | Aug 1993 | A |
5243655 | Wang | Sep 1993 | A |
5245695 | Basehore | Sep 1993 | A |
5247166 | Cannon et al. | Sep 1993 | A |
5250792 | Swartz et al. | Oct 1993 | A |
5252816 | Onimaru et al. | Oct 1993 | A |
5252987 | Eid et al. | Oct 1993 | A |
5262626 | Goren et al. | Nov 1993 | A |
5262871 | Wilder et al. | Nov 1993 | A |
5266787 | Mazz et al. | Nov 1993 | A |
5270526 | Yoshihara | Dec 1993 | A |
5272321 | Otsuka et al. | Dec 1993 | A |
5272323 | Martino | Dec 1993 | A |
5274567 | Kallin et al. | Dec 1993 | A |
5276400 | Denyer et al. | Jan 1994 | A |
5278397 | Barkan et al. | Jan 1994 | A |
5278398 | Pavlidis et al. | Jan 1994 | A |
5281993 | Crochetierre et al. | Jan 1994 | A |
5286959 | Demachi et al. | Feb 1994 | A |
5286960 | Longacre, Jr. et al. | Feb 1994 | A |
5289378 | Miller et al. | Feb 1994 | A |
5291007 | Sakai et al. | Mar 1994 | A |
5291564 | Shah et al. | Mar 1994 | A |
5294783 | Hammond, Jr. et al. | Mar 1994 | A |
5299116 | Owens et al. | Mar 1994 | A |
5304786 | Pavlidis et al. | Apr 1994 | A |
5304787 | Wang | Apr 1994 | A |
5307423 | Gupta et al. | Apr 1994 | A |
5308966 | Danielson et al. | May 1994 | A |
5311001 | Joseph et al. | May 1994 | A |
5319185 | Obata | Jun 1994 | A |
5324924 | Cai et al. | Jun 1994 | A |
5331176 | Sant' Anselmo et al. | Jul 1994 | A |
5343028 | Figarella et al. | Aug 1994 | A |
5345266 | Denyer | Sep 1994 | A |
5347114 | Tanaka | Sep 1994 | A |
5354977 | Roustaei | Oct 1994 | A |
5365048 | Komiya et al. | Nov 1994 | A |
5378881 | Adachi | Jan 1995 | A |
5378883 | Batterman et al. | Jan 1995 | A |
5380992 | Damen et al. | Jan 1995 | A |
5381207 | Kazumi et al. | Jan 1995 | A |
5387786 | Peng et al. | Feb 1995 | A |
5392447 | Schlack et al. | Feb 1995 | A |
5396054 | Krichever et al. | Mar 1995 | A |
5397418 | Shimizu et al. | Mar 1995 | A |
5401949 | Ziemacki et al. | Mar 1995 | A |
5412197 | Smith | May 1995 | A |
5414251 | Durbin | May 1995 | A |
5418356 | Takano et al. | May 1995 | A |
5418862 | Zheng et al. | May 1995 | A |
5420409 | Longacre, Jr. et al. | May 1995 | A |
5422470 | Kubo | Jun 1995 | A |
5422744 | Katz et al. | Jun 1995 | A |
5428211 | Zheng et al. | Jun 1995 | A |
5428212 | Tani et al. | Jun 1995 | A |
5428694 | Betts et al. | Jun 1995 | A |
5430283 | Tanaka | Jul 1995 | A |
5430286 | Hammond, Jr. et al. | Jul 1995 | A |
5434403 | Amir et al. | Jul 1995 | A |
5438636 | Surka | Aug 1995 | A |
5440109 | Hering et al. | Aug 1995 | A |
5442164 | Adachi | Aug 1995 | A |
5461239 | Atherton et al. | Oct 1995 | A |
5461425 | Fowler et al. | Oct 1995 | A |
5463212 | Oshima et al. | Oct 1995 | A |
5463214 | Longacre et al. | Oct 1995 | A |
5466921 | Lapinski et al. | Nov 1995 | A |
5468945 | Huggett et al. | Nov 1995 | A |
5471041 | Inoue et al. | Nov 1995 | A |
5471515 | Fossum et al. | Nov 1995 | A |
5471592 | Gove et al. | Nov 1995 | A |
5473148 | Tanaka et al. | Dec 1995 | A |
5477042 | Wang | Dec 1995 | A |
5478997 | Bridgelall et al. | Dec 1995 | A |
5478999 | Figarella et al. | Dec 1995 | A |
5479274 | Baba et al. | Dec 1995 | A |
5481097 | Tafoya | Jan 1996 | A |
5481098 | Davis et al. | Jan 1996 | A |
5481103 | Wang | Jan 1996 | A |
5483051 | Marchi et al. | Jan 1996 | A |
5485369 | Nicholls et al. | Jan 1996 | A |
5487115 | Surka | Jan 1996 | A |
5488223 | Austin et al. | Jan 1996 | A |
5489769 | Kubo | Feb 1996 | A |
5491325 | Huang et al. | Feb 1996 | A |
5491471 | Stobbe | Feb 1996 | A |
5493108 | Cherry et al. | Feb 1996 | A |
5495097 | Katz et al. | Feb 1996 | A |
5495459 | Tsukimi et al. | Feb 1996 | A |
5498868 | Nishikawa et al. | Mar 1996 | A |
5504320 | Adachi et al. | Apr 1996 | A |
5504524 | Lu et al. | Apr 1996 | A |
5507527 | Tomioka et al. | Apr 1996 | A |
5510604 | England | Apr 1996 | A |
5510606 | Worthington et al. | Apr 1996 | A |
5515176 | Galen et al. | May 1996 | A |
5521366 | Wang et al. | May 1996 | A |
5524068 | Kacandes et al. | Jun 1996 | A |
5525787 | Kubo | Jun 1996 | A |
5532773 | Shaw et al. | Jul 1996 | A |
5537431 | Chen et al. | Jul 1996 | A |
5539193 | Gibbs et al. | Jul 1996 | A |
5545886 | Metlitsky et al. | Aug 1996 | A |
5547762 | Niwa et al. | Aug 1996 | A |
5548107 | Lapinski et al. | Aug 1996 | A |
5548108 | Moldskred et al. | Aug 1996 | A |
5550366 | Roustaei | Aug 1996 | A |
5565669 | Liu | Oct 1996 | A |
5569901 | Bridgelall et al. | Oct 1996 | A |
5572006 | Wang et al. | Nov 1996 | A |
5576981 | Parker et al. | Nov 1996 | A |
5581249 | Yoshida | Dec 1996 | A |
5585616 | Roxby et al. | Dec 1996 | A |
5589678 | Atsumi et al. | Dec 1996 | A |
5590879 | Tripp | Jan 1997 | A |
5591955 | Laser | Jan 1997 | A |
5591956 | Longacre, Jr. et al. | Jan 1997 | A |
5594230 | Waite et al. | Jan 1997 | A |
5594232 | Giordano | Jan 1997 | A |
5596381 | Murakami et al. | Jan 1997 | A |
5598007 | Bunce et al. | Jan 1997 | A |
5600119 | Dvorkis et al. | Feb 1997 | A |
5602378 | Vaarala et al. | Feb 1997 | A |
5610387 | Bard et al. | Mar 1997 | A |
5610407 | Baba et al. | Mar 1997 | A |
5612524 | Sant'Anselmo et al. | Mar 1997 | A |
5619192 | Ayala | Apr 1997 | A |
5621203 | Swartz et al. | Apr 1997 | A |
5631457 | Fukuda et al. | May 1997 | A |
5635697 | Shellhammer et al. | Jun 1997 | A |
5635917 | Todman | Jun 1997 | A |
5637849 | Wang et al. | Jun 1997 | A |
5640001 | Danielson et al. | Jun 1997 | A |
5640193 | Wellner | Jun 1997 | A |
5640202 | Kondo et al. | Jun 1997 | A |
5648865 | Iizuka et al. | Jul 1997 | A |
5659167 | Wang et al. | Aug 1997 | A |
5659431 | Ackley | Aug 1997 | A |
5663549 | Katz et al. | Sep 1997 | A |
5665959 | Fossum et al. | Sep 1997 | A |
5666573 | Kobayashi et al. | Sep 1997 | A |
5668803 | Tymes et al. | Sep 1997 | A |
5670114 | Sakazume et al. | Sep 1997 | A |
5672858 | Li et al. | Sep 1997 | A |
5686715 | Watanabe et al. | Nov 1997 | A |
5691773 | Wang et al. | Nov 1997 | A |
5698833 | Skinger | Dec 1997 | A |
5702059 | Chu et al. | Dec 1997 | A |
5703349 | Meyerson et al. | Dec 1997 | A |
5710417 | Joseph et al. | Jan 1998 | A |
5714745 | Ju et al. | Feb 1998 | A |
5717195 | Feng et al. | Feb 1998 | A |
5718457 | Weinstock | Feb 1998 | A |
5723823 | Bell | Mar 1998 | A |
5723853 | Longacre, Jr. et al. | Mar 1998 | A |
5723868 | Hammond, Jr. et al. | Mar 1998 | A |
5726435 | Hara et al. | Mar 1998 | A |
5739518 | Wang | Apr 1998 | A |
5756981 | Roustaei et al. | May 1998 | A |
5763864 | O'Hagan et al. | Jun 1998 | A |
5773806 | Longacre, Jr. | Jun 1998 | A |
5773810 | Hussey et al. | Jun 1998 | A |
5774357 | Hoffberg et al. | Jun 1998 | A |
5780831 | Seo et al. | Jul 1998 | A |
5780834 | Havens et al. | Jul 1998 | A |
5783811 | Feng et al. | Jul 1998 | A |
5784102 | Hussey et al. | Jul 1998 | A |
5786581 | Eastman et al. | Jul 1998 | A |
5796487 | Guerra | Aug 1998 | A |
5802179 | Yamamoto et al. | Sep 1998 | A |
5805779 | Christopher et al. | Sep 1998 | A |
5814801 | Wang et al. | Sep 1998 | A |
5814803 | Olmstead et al. | Sep 1998 | A |
5818023 | Meyerson et al. | Oct 1998 | A |
5818528 | Roth et al. | Oct 1998 | A |
5821519 | Lee et al. | Oct 1998 | A |
5821523 | Bunte et al. | Oct 1998 | A |
5825006 | Longacre et al. | Oct 1998 | A |
5831254 | Karpen et al. | Nov 1998 | A |
5831674 | Ju et al. | Nov 1998 | A |
5834749 | Durbin | Nov 1998 | A |
5837986 | Barile et al. | Nov 1998 | A |
5837987 | Koenck et al. | Nov 1998 | A |
5841121 | Koenck | Nov 1998 | A |
5841126 | Fossum et al. | Nov 1998 | A |
5867594 | Cymbalski | Feb 1999 | A |
5867595 | Cymbalski | Feb 1999 | A |
5874722 | Rando et al. | Feb 1999 | A |
5875108 | Hoffberg et al. | Feb 1999 | A |
5877487 | Tani et al. | Mar 1999 | A |
5900613 | Koziol et al. | May 1999 | A |
5917171 | Sasai | Jun 1999 | A |
5917945 | Cymbalski | Jun 1999 | A |
5920059 | Barile et al. | Jul 1999 | A |
5920477 | Hoffberg et al. | Jul 1999 | A |
5926214 | Denyer et al. | Jul 1999 | A |
5929418 | Ehrhart et al. | Jul 1999 | A |
5932862 | Hussey et al. | Aug 1999 | A |
5936224 | Shimizu et al. | Aug 1999 | A |
5942741 | Longacre, Jr. et al. | Aug 1999 | A |
5949052 | Longacre, Jr. et al. | Sep 1999 | A |
5949054 | Karpen et al. | Sep 1999 | A |
5949056 | White | Sep 1999 | A |
5962838 | Tamburrini | Oct 1999 | A |
5965863 | Parker et al. | Oct 1999 | A |
5979757 | Tracy et al. | Nov 1999 | A |
5979763 | Wang et al. | Nov 1999 | A |
5979768 | Koenck | Nov 1999 | A |
5984186 | Tafoya | Nov 1999 | A |
5986297 | Guidash et al. | Nov 1999 | A |
5992749 | Seo et al. | Nov 1999 | A |
6003008 | Postrel et al. | Dec 1999 | A |
6011880 | Tani et al. | Jan 2000 | A |
6014501 | Fukuda et al. | Jan 2000 | A |
6015088 | Parker et al. | Jan 2000 | A |
6017496 | Nova et al. | Jan 2000 | A |
6019286 | Li et al. | Feb 2000 | A |
6039256 | Konosu et al. | Mar 2000 | A |
6053407 | Wang et al. | Apr 2000 | A |
6056196 | Konishi et al. | May 2000 | A |
6058304 | Callaghan et al. | May 2000 | A |
6064763 | Maltsev | May 2000 | A |
6067113 | Hurwitz et al. | May 2000 | A |
6070800 | Fujita et al. | Jun 2000 | A |
6082619 | Ma et al. | Jul 2000 | A |
6112992 | Agabra et al. | Sep 2000 | A |
6119179 | Whitridge et al. | Sep 2000 | A |
6123264 | Li et al. | Sep 2000 | A |
6129276 | Jelen et al. | Oct 2000 | A |
6129278 | Wang et al. | Oct 2000 | A |
6144848 | Walsh et al. | Nov 2000 | A |
6155488 | Olmstead et al. | Dec 2000 | A |
6155491 | Dueker et al. | Dec 2000 | A |
6161760 | Marrs et al. | Dec 2000 | A |
6170749 | Goren et al. | Jan 2001 | B1 |
6176428 | Joseph et al. | Jan 2001 | B1 |
6176429 | Reddersen et al. | Jan 2001 | B1 |
6177950 | Robb | Jan 2001 | B1 |
6179208 | Feng | Jan 2001 | B1 |
6186404 | Ehrhart et al. | Feb 2001 | B1 |
6215992 | Howel et al. | Apr 2001 | B1 |
6264105 | Longacre, Jr. et al. | Jul 2001 | B1 |
6276605 | Olmstead et al. | Aug 2001 | B1 |
6286760 | Schmidt et al. | Sep 2001 | B1 |
6293466 | Fujita et al. | Sep 2001 | B1 |
6315204 | Knighton et al. | Nov 2001 | B1 |
6325283 | Chu et al. | Dec 2001 | B1 |
6329139 | Nova et al. | Dec 2001 | B1 |
6331901 | Fukuda et al. | Dec 2001 | B1 |
6347163 | Roustaei | Feb 2002 | B2 |
6360948 | Yang et al. | Mar 2002 | B1 |
6377249 | Mumford | Apr 2002 | B1 |
6385352 | Roustaei | May 2002 | B1 |
6398112 | Li et al. | Jun 2002 | B1 |
6411199 | Geiszler et al. | Jun 2002 | B1 |
6412699 | Russell et al. | Jul 2002 | B1 |
6424407 | Kinrot et al. | Jul 2002 | B1 |
6431452 | Feng | Aug 2002 | B2 |
6452179 | Coates et al. | Sep 2002 | B1 |
6462842 | Hamilton | Oct 2002 | B1 |
6486911 | Denyer et al. | Nov 2002 | B1 |
6491223 | Longacre et al. | Dec 2002 | B1 |
6493029 | Denyer et al. | Dec 2002 | B1 |
6505778 | Reddersen et al. | Jan 2003 | B1 |
6508404 | Hecht | Jan 2003 | B2 |
6512218 | Canini et al. | Jan 2003 | B1 |
6527179 | Itoh et al. | Mar 2003 | B1 |
6547139 | Havens et al. | Apr 2003 | B1 |
6547142 | Goren et al. | Apr 2003 | B1 |
6552323 | Guidash et al. | Apr 2003 | B2 |
6552746 | Yang et al. | Apr 2003 | B1 |
6565003 | Ma | May 2003 | B1 |
6565005 | Wilz et al. | May 2003 | B1 |
6575367 | Longacre, Jr. | Jun 2003 | B1 |
6585159 | Meier et al. | Jul 2003 | B1 |
6606171 | Renk et al. | Aug 2003 | B1 |
6634558 | Patel et al. | Oct 2003 | B1 |
6637658 | Barber et al. | Oct 2003 | B2 |
6655595 | Longacre, Jr. et al. | Dec 2003 | B1 |
6661933 | Hisatomi et al. | Dec 2003 | B1 |
6665012 | Yang et al. | Dec 2003 | B1 |
6666377 | Harris | Dec 2003 | B1 |
6672511 | Shellhammer | Jan 2004 | B1 |
6678412 | Shigekusa et al. | Jan 2004 | B1 |
6685095 | Roustaei et al. | Feb 2004 | B2 |
6698656 | Parker et al. | Mar 2004 | B2 |
6708883 | Krichever | Mar 2004 | B2 |
6714239 | Guidash | Mar 2004 | B2 |
6714665 | Hanna et al. | Mar 2004 | B1 |
6722569 | Ehrhart et al. | Apr 2004 | B2 |
6729546 | Roustaei | May 2004 | B2 |
6732929 | Good et al. | May 2004 | B2 |
6732930 | Massieu et al. | May 2004 | B2 |
6736321 | Tsikos et al. | May 2004 | B2 |
6739511 | Tsikos et al. | May 2004 | B2 |
6741335 | Kinrot et al. | May 2004 | B2 |
6742707 | Tsikos et al. | Jun 2004 | B1 |
6751352 | Baharav et al. | Jun 2004 | B1 |
6761317 | Knowles et al. | Jul 2004 | B1 |
6766954 | Barkan et al. | Jul 2004 | B2 |
6814290 | Longacre | Nov 2004 | B2 |
6827273 | Wilz et al. | Dec 2004 | B2 |
6832729 | Perry et al. | Dec 2004 | B1 |
6837432 | Tsikos et al. | Jan 2005 | B2 |
6853293 | Swartz et al. | Feb 2005 | B2 |
6854649 | Worner et al. | Feb 2005 | B2 |
6857570 | Tsikos et al. | Feb 2005 | B2 |
6858159 | Lyons | Feb 2005 | B2 |
6863216 | Tsikos et al. | Mar 2005 | B2 |
6877665 | Challa et al. | Apr 2005 | B2 |
6919923 | Tanaka et al. | Jul 2005 | B1 |
6982800 | Cavill et al. | Jan 2006 | B1 |
7046268 | Saburi | May 2006 | B2 |
7059525 | Longacre et al. | Jun 2006 | B2 |
7077317 | Longacre, Jr. et al. | Jul 2006 | B2 |
7077321 | Longacre, Jr. et al. | Jul 2006 | B2 |
7139591 | Callaghan et al. | Nov 2006 | B2 |
7147159 | Longacre, Jr. et al. | Dec 2006 | B2 |
20020145043 | Challa et al. | Oct 2002 | A1 |
20020158127 | Hori et al. | Oct 2002 | A1 |
20030042311 | Longacre et al. | Mar 2003 | A1 |
20030062418 | Barber et al. | Apr 2003 | A1 |
20030085282 | Parker et al. | May 2003 | A1 |
20030146283 | Longacre et al. | Aug 2003 | A1 |
20030218067 | Parker et al. | Nov 2003 | A1 |
20040004128 | Pettinelli et al. | Jan 2004 | A1 |
20040256465 | Longacre, Jr. | Dec 2004 | A1 |
20040262393 | Hara et al. | Dec 2004 | A1 |
20040262395 | Longacre, Jr. | Dec 2004 | A1 |
20040262396 | Longacre, Jr. | Dec 2004 | A1 |
20040262399 | Longacre, Jr. | Dec 2004 | A1 |
20050011956 | Carlson | Jan 2005 | A1 |
20050056699 | Meier et al. | Mar 2005 | A1 |
20050103851 | Zhu et al. | May 2005 | A1 |
20060255150 | Longacre | Nov 2006 | A1 |
Number | Date | Country |
---|---|---|
0 385 478 | Sep 1990 | EP |
0 385 478 | Sep 1990 | EP |
0 449 634 | Oct 1991 | EP |
0 561 334 | Sep 1993 | EP |
0 571 892 | Dec 1993 | EP |
0 584 559 | Mar 1994 | EP |
0873013 | Oct 1998 | EP |
06-139398 | May 1994 | JP |
06-301807 | Oct 1994 | JP |
07-049922 | Feb 1995 | JP |
07-065104 | Mar 1995 | JP |
2000-092317 | Mar 2000 | JP |
WO9314458 | Jul 1993 | WO |
WO9317397 | Sep 1993 | WO |
WO9318478 | Sep 1993 | WO |
WO9532580 | Nov 1995 | WO |
WO9708647 | Mar 1997 | WO |
Number | Date | Country | |
---|---|---|---|
20050161511 A1 | Jul 2005 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 09385597 | Aug 1999 | US |
Child | 11073531 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 08839020 | Apr 1997 | US |
Child | 09385597 | US | |
Parent | 08697913 | Sep 1996 | US |
Child | 08839020 | US |