Decode barcode when the barcode type is unknown

Discussions about barcode reading and writing
Post Reply
Erkaci
Posts: 2
Joined: Fri Nov 03, 2017 12:55 pm

Decode barcode when the barcode type is unknown

Post by Erkaci » Fri Nov 10, 2017 1:58 pm

Hello to all,
I have a camera scanner which takes image barcode when is available. The image is treated following process:

I send the generated image to GDPicture in order to be decoded. Until now I have been using these functions:

_mGdPictureImaging.Barcode1DReaderDoScan(imageId, scaneMode, barcode1DTypes, false, 1);
_mGdPictureImaging.BarcodeMicroQRReaderDoScan(imageId, scaneMode, 1);
_mGdPictureImaging.BarcodeQRReaderDoScan(imageId, scaneMode, 1);


I get a queue of images, for each image used I start testing with 1D barcode. When no barcode detected I try QR, and if also not detected I try the next type, because I don’t know the type of barcode on the current image. Like :

BarcodeResult barcodeResult = DecodeD1Barcode(bitmap);

if (barcodeResult.Result != BarcodeDecodeResult.Success)
{
barcodeResult = DecodeDataMatrix(bitmap);

if (barcodeResult.Result != BarcodeDecodeResult.Success)
{
barcodeResult = DecodeQRCode(bitmap);

if (barcodeResult.Result != BarcodeDecodeResult.Success)
barcodeResult = DecodeMicroQRBarcode(bitmap);
}
}




Question : Is there any way using GDPicture to ask only to decode Barcode without specifying a type Barcode1DReaderDoScan, BarcodeMicroQRReaderDoScan or BarcodeQRReaderDoScan …? Like : BarcodeDoScan

Remark :
- The taken image has a fixed size
- The image content is a barcode and only one barcode.

Thanks

Eric

Costinel
Posts: 36
Joined: Mon Jul 11, 2016 9:35 am

Re: Decode barcode when the barcode type is unknown

Post by Costinel » Thu Jan 24, 2019 8:41 am

Hi Eric,

There is no such method that reads a barcode without specifying the barcode type, but it is easy to write it. It should be something like:

Code: Select all

 private string DetectSingleBarcode(GdPictureImaging gdp, int imageId)
        {
            string result = null;
            if (gdp.Barcode1DReaderDoScan(imageId) == GdPictureStatus.OK)
            {
                if (gdp.Barcode1DReaderGetBarcodeCount() > 0)
                {
                    result = gdp.Barcode1DReaderGetBarcodeValue(1);
                }
                gdp.Barcode1DReaderClear();
            }
            if (result == null && gdp.BarcodeQRReaderDoScan(imageId) == GdPictureStatus.OK)
            {
                if (gdp.BarcodeQRReaderGetBarcodeCount() > 0)
                {
                    result = gdp.BarcodeQRReaderGetBarcodeValue(1);
                }
                gdp.BarcodeQRReaderClear();
            }
            if (result == null && gdp.BarcodeMicroQRReaderDoScan(imageId) == GdPictureStatus.OK)
            {
                if (gdp.BarcodeMicroQRReaderGetBarcodeCount() > 0)
                {
                    result = gdp.BarcodeMicroQRReaderGetBarcodeValue(1);
                }
                gdp.BarcodeMicroQRReaderClear();
            }
            if (result == null && gdp.BarcodeDataMatrixReaderDoScan(imageId) == GdPictureStatus.OK)
            {
                if (gdp.BarcodeDataMatrixReaderGetBarcodeCount() > 0)
                {
                    result = gdp.BarcodeDataMatrixReaderGetBarcodeValue(1);
                }
                gdp.BarcodeDataMatrixReaderClear();
            }

            return result;
        }
Best regards,
Costinel

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest