A portable data terminal including a multi-core processor having at least a first core and a second core, at least one illumination assembly and at least one imaging assembly and data storage means configured to store a plurality of program instructions, the program instructions including at least one one-dimensional decoder and at least one two-dimensional decoder.
|
1. A portable data terminal, comprising:
a multi-core processor having at least a first core and a second core;
at least one illumination assembly and at least one imaging assembly; and
data storage means configured to store a plurality of program instructions, the program instructions including at least one one-dimensional decoder and at least one two-dimensional decoder; and
wherein the first core of the multi-core processor executes the one-dimensional decoder and the second core executes the two-dimensional decoder
wherein the one-dimensional decoder and two-dimensional decoder run synchronously in parallel.
15. A method of decoding a bar code, comprising:
providing a portable data terminal having a multi-port memory and a multi-core processor;
capturing an image of a target;
transferring image pixel data to one port of the multi-port memory; and executing program instructions stored in the multi-port memory concurrently on a first core of the multi-core processor so as to decode any one-dimensional bar code represented by the pixel data and on a second core of the multi-core processor so as to decode any two-dimensional bar code represented by the pixel data
wherein the one-dimensional decoding and two-dimensional decoding run synchronously in parallel.
18. A system of capturing an image and decoding any bar code in the image, comprising:
a multi-core processor having at least a first core and a second core;
a data storage means including at least one multi-port memory having at least a first port and a second port, the multi-port memory being in communication with at least one core of the multi-core processor;
at least one illumination assembly and at least one imaging assembly, the imaging assembly being configured to transmit image pixel data to the multi-port memory; and
wherein the data storage means comprises software including a one-dimensional decoder and a two-dimensional decoder that when executed causes each of the first and second cores of the multi-core processor to perform a respective method comprising:
decoding any one-dimensional bar code represented by the pixel data; and
decoding any two-dimensional bar code represented by the pixel data
wherein the one-dimensional decoding and two-dimensional decoding run synchronously in parallel.
2. The portable data terminal of
3. The portable data terminal of
4. The portable data terminal of
5. The portable data terminal of
6. The portable data terminal of
7. The portable data terminal of
8. The portable data terminal of
9. The portable data terminal of
10. The portable data terminal of
11. The portable data terminal of
12. The portable data terminal of
13. The portable data terminal of
14. The portable data terminal of
16. The method of
17. The method of
19. The system of
analyze the pixel data for image quality; and
communicate with the network interface.
|
The present invention relates to portable data terminals and more particularly, to portable data terminals configured to capture an image and decode any bar code contained in the image.
Portable data terminals (PDTs) such as laser indicia reading devices, optical indicia reading devices, barcode scanners and barcode readers, for example, typically read data represented by printed indicia such as symbols, symbology, and bar codes, for example. One type of symbol is an array of rectangular bars and spaces that are arranged in a specific way to represent elements of data in machine readable form. Optical indicia reading devices typically transmit light onto a symbol and receive light scattered and/or reflected back from a bar code symbol or indicia. The received light is interpreted by an image processor to extract the data represented by the symbol. Laser indicia reading devices typically utilize transmitted laser light. One-dimensional (1D) optical bar code readers are characterized by reading 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.
In order to allow the encoding of larger amounts of data in a single bar code symbol, a number of one-dimensional (1D) stacked bar code symbologies have been developed which partition 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 higher resolution in one dimension only, but multiple linear scans are needed to read the whole symbol.
A 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 1D symbologies. 2D matrix codes encode data as dark or light data elements within a regular polygonal matrix, accompanied by graphical finder, orientation and reference structures.
Conventionally, a PDT includes a central processor which directly controls the operations of the various electrical components housed within the PDT. For example, the central processor controls detection of keypad entries, display features, wireless communication functions, trigger detection, and bar code read and decode functionality. More specifically, the central processor typically communicates with an illumination assembly configured to illuminate a target, such as a bar code, and an imaging assembly configured to receive an image of the target and generate an electric output signal indicative of the data optically encoded therein.
The output signal is generally representative of the pixel data transmitted by an image sensor of the imaging assembly. Because the pixel data may not be high enough quality for the processor to reliably decode the bar code in the image, PDTs generally successively capture images, or image frames, until a reliable decode is complete. Further, where the bar codes being decoded vary from 1D and 2D symbologies, the PDT generally sequentially executes decode algorithms for the multiple symbologies. This process can be time-intensive because the processor must wait for the pixel data to be stored in memory before it can access the data in order to execute a decode algorithm and then must further wait for a decode algorithm to complete before a second decode algorithm can execute. Further, in many settings such as warehouses, shopping centers, shipping centers, and numerous others, PDTs are used to decode bar codes in serial fashion such that a faster decode operation generally increases throughput.
Attempts have been made to increase decode speed particularly by multi-threading. Multi-threading, or hyper-threading, allows multiple threads to use a single processing unit by providing processor cycles to one thread when another thread incurs a latency such as a cache miss, for example, which would cause the processor to incur several cycles of idle time while off-chip memory is accessed. Using multi-threading, the central processor idle time is minimized but not substantially parallelized. Further, context switching between threads can significantly increase overhead, as the state of one process/thread is saved while another is loaded, further minimizing any efficiency gain.
Accordingly, there remains a need in the art for a PDT system architecture that will allow for faster, substantially parallel, bar code decoding operations.
The present invention is disclosed with reference to the accompanying drawings, wherein:
It will be appreciated that for purposes of clarity and where deemed appropriate, reference numerals have been repeated in the figures to indicate corresponding features.
Referring to
Referring to
Still referring to
Referring to
Referring to one embodiment shown in
In an exemplary operation, the processing architecture 115 retrieves program instructions from data storage means 122a, over system bus 138, which the architecture implements to control the illumination assembly 108 to focus light on a target 114 containing a bar code and imaging assembly 109 to receive the reflected light. The image sensor 106 then transmits output signals, representative of pixel data of the captured image, to the first port 162 of the dual port memory 164 where it is stored in a frame buffer 166. Each of the first core 140 and the second core 142 can then access the frame buffer 166 and retrieve the pixel data. To allow for parallel decoding, the first core 140 can be configured to execute the program instructions of the 1D decoder and the second core 142 can be configured to execute the program instructions of the 2D decoder. Accordingly, whether the image contains a 1D or 2D bar code, decoding can occur at substantially the same time decreasing the time required for a successful decode. Further, image pixel/frame data can be stored in the dual port memory 160 on the same clock cycle as image pixel/frame data is being retrieved by the first core 140 and/or the second core 142. PDT 105 can be configured to continuously image the target 114 and store the pixel data, or each frame, in the frame buffer and the cores 140 and 142 can continually process the image frame data, in parallel, until a successful decode event occurs. Upon successful decode, the decoded data is optionally transmitted to the data storage means 122 where it can be accessed, for example, by an application 125.
In another embodiment, the first core is configured to execute 1D decoder 127 program instructions as well as image quality filter program instructions stored in data storage means 122. When executed by the first core 140, the image quality filter program instructions analyze, in real time, the pixel data/each frame retrieved by the core from the frame buffer for quality with respect to contrast, for example. The frame can then be assigned an image quality score which can be factored into a decode algorithm's decision with respect to selecting the highest image quality score frame available in the frame buffer. Further, the image quality filter program instructions can be configured to interrupt an existing decode 127 process which is decoding a frame/image with a low image quality score should a frame/image with a higher image quality score be captured.
In yet another embodiment, the first core 140 is configured to execute image quality filter program instructions, or any other program instructions related to image processing, for example, stored in data storage means 122 and the second core 142 is configured to execute 1D decoder 127 program instructions as well as 2D decoder program instructions 129.
Referring to
Referring to
While the present invention substantially reduces the time required for a successful decode, it can also effectively manage the system clock and/or the power supplied to each core to reduce overall power consumption. Particularly in PDTs that are mostly powered by battery, power consumption is a concern because the greater the power dissipated, the faster the remaining battery life is reduced. Accordingly, and as shown in
While the principles of the invention have been described herein, it is to be understood by those skilled in the art that this description is made only by way of example and not as a limitation as to the scope of the invention. Other embodiments are contemplated within the scope of the present invention in addition to the exemplary embodiments shown and described herein. Modifications and substitutions by one of ordinary skill in the art are considered to be within the scope of the present invention, which is not to be limited except by the following claims.
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
5276842, | Apr 10 1990 | Mitsubishi Denki Kabushiki Kaisha | Dual port memory |
5512739, | Mar 28 1990 | Omniplanar, Inc. | Dual processor omnidirectional bar code reader with dual memory for bar code location and orientation |
7093147, | Apr 25 2003 | Hewlett-Packard Development Company, L.P.; HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Dynamically selecting processor cores for overall power efficiency |
7349285, | Feb 02 2005 | Texas Instruments Incorporated | Dual port memory unit using a single port memory core |
7571284, | Jun 30 2004 | Oracle America, Inc | Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor |
20060026447, | |||
20060259799, | |||
20060282692, | |||
20060288243, | |||
20070070673, | |||
20070285698, | |||
20080011855, | |||
JP59212075, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Oct 01 2009 | Hand Held Products, Inc. | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Date | Maintenance Schedule |
Jul 02 2016 | 4 years fee payment window open |
Jan 02 2017 | 6 months grace period start (w surcharge) |
Jul 02 2017 | patent expiry (for year 4) |
Jul 02 2019 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jul 02 2020 | 8 years fee payment window open |
Jan 02 2021 | 6 months grace period start (w surcharge) |
Jul 02 2021 | patent expiry (for year 8) |
Jul 02 2023 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jul 02 2024 | 12 years fee payment window open |
Jan 02 2025 | 6 months grace period start (w surcharge) |
Jul 02 2025 | patent expiry (for year 12) |
Jul 02 2027 | 2 years to revive unintentionally abandoned end. (for year 12) |