BARCODEREADOPT
typedef struct tagBarCodeReadOpt
{
L_UINT32 ulSearchType;
L_INT nUnits;
L_UINT32 ulFlags;
L_INT nMultipleMax;
RECT rcSearch;
L_BOOL bUseRgn;
BARCODECOLOR BarColor;
} BARCODEREADOPT, * pBARCODEREADOPT;
This structure contains barcode read options that control the reading process.
Member |
Description |
|
ulSearchType |
Type of barcode for which to search. You can combine values when appropriate, by using a bitwise OR ( | ). Possible values are: |
|
Value |
Meaning | |
Linear Barcode: |
| |
BARCODE_1D_EAN_13 |
[0x80000001] To read EAN 13 type. | |
BARCODE_1D_EAN_8 |
[0x80000002] To read EAN 8 type. | |
BARCODE_1D_UPC_A |
[0x80000004] To read UPC version A type. | |
BARCODE_1D_UPC_E |
[0x80000008] To read UPC version E type. | |
BARCODE_1D_CODE_3_OF_9 |
[0x80000010] To read Code 3 of 9 (Code 39) type. | |
BARCODE_1D_CODE_128 |
[0x80000020] To read Code 128 type. | |
BARCODE_1D_CODE_I2_OF_5 |
[0x80000040] To read Interleaved 2 of 5 type. | |
BARCODE_1D_CODA_BAR |
[0x80000080] To read CODABAR type. | |
BARCODE_1D_UCCEAN_128 |
[0x80000100] To read UCCEAND 128 type | |
BARCODE_1D_CODE_93 |
[0x80000200] To read Code 93 type | |
BARCODE_1D_EANEXT_5 |
[0x80000400] To read 5-digit supplemental type. | |
BARCODE_1D_EANEXT_2 |
[0x80000800] To read 2-digit supplemental type. | |
BARCODE_1D_MSI |
[0x80001000] To read MSI (Modified Plessey) type. | |
BARCODE_1D_CODE11 |
[0x80002000] To read Code 11(USD-8) type. | |
BARCODE_1D_CODE_S25 |
[0x80004000] To read Standard 2 of 5 (Industrial 2 of 5) type. | |
BARCODE_1D_READ_RSS14 |
[0x80008000] GS1 Databar (formerly RSS14) standard and truncated. | |
BARCODE_1D_RSS14_LIMITED |
[0x80010000] GS1 Databar (formerly RSS14) Limited type. | |
BARCODE_1D_RSS14_EXPANDED |
[0x80020000] GS1 Databar (formerly RSS14) Expanded type. | |
BARCODE_1D_READ_ANYTYPE |
[0x8003FFFF] To enable searching of all linear barcode types. | |
BARCODE_1D_READ_ANYTYPE_NO_RSS14 |
[0x80007FFF] Enables searching of all linear barcode types except GS1 Databar (formerly RSS14) types. Speeds up the read process compared to the BARCODE_1D_READ_ANYTYPE option. | |
Patch Code Barcodes: |
| |
BARCODE_1D_PATCH_CODE |
[0x04000001] To read Patch Code. | |
Postal barcodes: |
| |
BARCODE_1D_POST_NET |
[0x04000002] To read Postnet. | |
BARCODE_1D_PLANET |
[0x04000004] Planet type. | |
4 State barcode symbols: |
| |
BARCODE_1D_AUST_POST |
[0x04000008] Australian Post 4 State type. | |
BARCODE_1D_RM4SCC |
[0x04000010] Royal Mail (RM4SCC) 4 State type. | |
BARCODE_1D_USPS4BC |
[0x04000080] USPS OneCode 4-State (4BC) type | |
GS1 Databar (formerly RSS14) Stacked barcode symbols: |
| |
BARCODE_1D_RSS14_STACKED |
[0x04000020] GS1 Databar (formerly RSS14) Stacked / Stacked Omnidirectional types. | |
BARCODE_1D_RSS14_EXP_STACKED |
[0x04000040] GS1 Databar (formerly RSS14) Expanded Stacked barcode type. | |
PDF Barcodes: |
| |
BARCODE_PDF417 |
[0x20002000] To read PDF417 type. | |
MicroPDF417 Barcodes: |
| |
BARCODE_MICRO_PDF417 |
[0x20000001] To read MicroPDF417 type. | |
Data Matrix Barcode: |
| |
BARCODE_DM_READ_SQUARE |
[0x08000001] To read square Data Matrix symbols. | |
BARCODE_DM_READ_RECTANGLE |
[0x10000002] To read rectangular Data Matrix symbols. | |
BARCODE_DM_READ_SMALL |
[0x10000004] To read small Data Matrix symbols. | |
|
QR Barcodes: |
|
|
BARCODE_QR_CODE |
[0x00100000] To read QR barcodes. |
nUnits |
Unit of measure. Possible values are: |
|
Value |
Meaning | |
BARCODE_SCANLINES_PER_PIXELS |
[0] the rectangle search area is measured in pixels. | |
BARCODE_INCHES |
[1] the rectangle search area is measured in inches. You must multiply the search area by 100. (i.e. to specify 1 inch set this to 100) | |
BARCODE_MILLIMETERS |
[2] the rectangle search area is measured in mm. | |
ulFlags |
Processing options. You can combine values when appropriate, by using a bitwise OR ( | ). The following values are used only when you want to search for linear barcodes. Pass 0 to get the default. Possible values are: |
|
Value |
Meaning | |
BARCODE_MARKERS |
[0x0001] Enables the reading of barcodes that have start and end markers. | |
BARCODE_BLOCK_SEARCH |
[0x0002] Search for barcodes by moving up or down through the rectangle until the first character is read or there is no barcode found. | |
BARCODE_USECOLORS |
[0x0200] Enable searching for color barcodes. The colors are used as the exact bar and space colors for searching for the barcode. | |
BARCODE_RETURNCHECK |
[0x1000] When setting this bit, then the check character will return in all cases, whether BARCODE1D.bErrorCheck is enabled or not. | |
BARCODE_RETURNCORRUPT |
[0x0080] Enables the engine to return the area that an un-readable PDF417 symbol was located. | |
BARCODE_DM_FORCE_INVERT |
[0x00000800] Forces the Data Matrix read to search for reversed color symbols even if non-inverted color symbols were found. | |
BARCODE_DM_FASTFIND_DISABLE |
[0x00001000] Disables fast find feature when reading Data Matrix symbols. Fast find is automatically disabled when reading small symbols. | |
BARCODE_RETURN_FOUR_POINTS |
[0x00002000] Enables return of four corners and not bounding rectangle. | |
BARCODE_PDF_READ_MODE_0 |
[0x0000] Basic Channel Mode :No transmission of symbology ID, No escape doubling, Macro PDF is illegal. ECI is illegal, Reserved code words are illegal. Used with PDF417 and MicroPDF417. | |
BARCODE_PDF_READ_MODE_1 |
[0x1000] Extended Channel Mode.Transmit] L1 symbology ID. Escape doubling. Macro PDF is transmitted. ECI is transmitted. Reserved code words are transmitted. Used with PDF417 and MicroPDF417. | |
BARCODE_PDF_READ_MODE_2 |
[0x4000] Basic Channel Mode. Transmit ] L2 symbology ID. No escape doubling. Macro PDF is illegal. ECI is illegal. Reserved code words are illegal. Used with PDF417 and MicroPDF417 | |
BARCODE_PDF_READ_MODE_3_BASIC |
[0x5000] Basic Channel Mode. Transmit ] L0 symbology ID. No escape doubling. Macro PDF is illegal. ECI is illegal. Reserved code words are illegal. Used with PDF417 and MicroPDF417. | |
BARCODE_PDF_READ_MODE_3_EXTENDED |
[0x8000] Extended Channel Mode. Transmit ] L0 symbology ID. Escape doubling. Macro PDF is transmitted. ECI is transmitted in GLI format. Reserved code words transmitted. Used with PDF417 and MicroPDF417. | |
BARCODE_MICRO_PDF_READ_BASIC |
[0x9000] Code 128 Emulation Basic Channel Mode. Transmit ] L0, ] L3, ] L4, or ] L5 symbology ID. No escape doubling. Macro PDF is illegal. ECI is illegal. Reserved code words are illegal. Only used with MicroPDF417. | |
BARCODE_MICRO_PDF_READ_EXTENDED |
[0xC000] Code 128 Emulation Extended Channel Mode. Transmit ] L0, ] L3, ] L4, or ] L5 symbology ID. Escape doubling. Macro PDF is transmitted. ECI is transmitted in GLI format. Reserved code words transmitted. Only used with MicroPDF417. | |
BARCODE_PDF_READ_MACRO_OPTION_0 |
[0x00010000] Enable the return of the optional macro ‘File Name’ field. | |
BARCODE_PDF_READ_MACRO_OPTION_1 |
[0x00020000] Enable the return of the optional macro ‘Segment Count’ field. | |
BARCODE_PDF_READ_MACRO_OPTION_2 |
[0x00040000] Enable the return of the optional macro ‘Time Stamp’ field. | |
BARCODE_PDF_READ_MACRO_OPTION_3 |
[0x00080000] Enable the return of the optional macro ‘Sender’ field. | |
BARCODE_PDF_READ_MACRO_OPTION_4 |
[0x00100000] Enable the return of the optional macro ‘Addressee’ field. | |
BARCODE_PDF_READ_MACRO_OPTION_5 |
[0x00200000] Enable the return of the optional macro ‘File Size’ field. | |
BARCODE_PDF_READ_MACRO_OPTION_6 |
[0x00400000] Enable the return of the optional macro ‘Checksum’ field. | |
BARCODE_PDF_READ_MACRO_OPTION_79AZ |
[0x00800000] Enable the return of all optional macro fields 7 to 9 and A to Z. | |
BARCODE_PDF_READ_RETURN_PARTIAL |
[0x01000000] Returns PDF417 data even if ECC does not succeed. | |
BARCODE_PDF_FASTREAD |
[0x02000000] Enables fast find feature when reading PDF417 symbols. | |
nMultipleMax |
Specifies the maximum number of barcodes to search. Pass 0 to read all barcodes in a specified search area. |
|
rcSearch |
Rectangle that contains the search area for the barcodes. |
bUseRgn |
Flag that indicates whether to use the region when searching. Possible values are: |
|
Value |
Meaning | |
TRUE |
If the bitmap has a region, the LBarCode::Read function will only search the region for barcodes. If the bitmap does not have a region, the LBarCode::Read function will search the entire bitmap for barcodes. | |
FALSE |
The LBarCode::Read will use the location and size parameters in rcSearch to determine what area of the bitmap to search for barcodes. | |
BarColor |
BarCodeColor structure, which contains the bars and space colors to search for barcodes. |
Comments
NOTE: Type RSS14 is now GS1 Databar. All references to RSS14 now refer to GS1 Databar.
pBARCODEREADOPT is a pointer to an BARCODEREADOPT structure. Where a function parameter type is pBARCODEREADOPT, you can declare a BARCODEREADOPT variable and pass the variable's address in the parameter. Declaring a pBARCODEREADOPT variable is necessary only if your program requires a pointer.
When the BARCODE_USECOLORS flag is set, then this function will use the BarColor member, otherwise the LBarCode::Read function will ignore it and use the default colors of black for bars and white for spaces are used.
Using colors does not apply for 1 bit per pixel images.
The BARCODE_USECOLORS is used with all barcode kinds.
The BARCODE_RETURNCHECK flag used only with reading linear barcodes.
The smallest Data Matrix symbol size is 40 pixels by 40 pixels. It can be read using BARCODE_DM_READ_SMALL since this enables the reading of Data Matrix symbols that are between 20 to 40 pixels in size.
When the ulFlags member value is set to BARCODE_RETURN_FOUR_POINTS flag, the BARCODEDATA.rcBarLocation member will be updated with the four-point corner encoded values.
Before using the four-point corner encoded values, they must be decoded.
The following example shows how to decode the four-point corner values:
POINT
p1, p2, p3, p4;
int nStartX = BarCodeData.rcBarLocation.left;
int nStartY = BarCodeData.rcBarLocation.top;
int nWidth =
BarCodeData.rcBarLocation.right - nStartX;
int nHeight = BarCodeData.rcBarLocation.bottom - nStartY;
p1.x = (nStartX & 0xffff);
p1.y = (nStartX >> 16);
p2.x = (nStartY & 0xffff);
p2.y = (nStartY >> 16);
p3.x = (nWidth & 0xffff);
p3.y = (nWidth >> 16);
p4.x = (nHeight & 0xffff);
p4.y = (nHeight >> 16);