示例#1
0
        private int SetToReadStandard1DControls(BarcodeDirectionFlags direction)
        {
            bSearchAllStd1D = true;
            bSearchAllNoRSS = false;
            //Sub types
            ulSearchStd1DType = 0;

            //Set MSI types
            StdBar1D = new Barcode1d();
            StdBar1D.StandardFlags &= (Barcode1dStandardFlags)0xFFFFFFF0;
            StdBar1D.StandardFlags  = Barcode1dStandardFlags.Barcode1dMsiModulo10;//--------->
            //Set Code11 types
            StdBar1D.StandardFlags &= (Barcode1dStandardFlags)0xFFFFFF0F;
            StdBar1D.StandardFlags |= Barcode1dStandardFlags.Barcode1dCode11C;//--------->

            //Direction
            //  StdBar1D.Direction |= BarcodeDirectionFlags.Horizontal;//--------->
            StdBar1D.Direction |= direction;//--------->

            //Speed
            StdBar1D.StandardFlags &= (Barcode1dStandardFlags)0xFFFFF0FF;
            //StdBar1D.StandardFlags |= Barcode1dStandardFlags.Barcode1dFast;//--------->
            StdBar1D.StandardFlags |= Barcode1dStandardFlags.Barcode1dNormal;

            //Options:Granularity
            // Gets or sets the number of scanned lines per column to skip when reading a barcode.
            // Number of scanned lines per column to skip when reading a barcode.
            // The default value is 9, this means that each tenth line will be scanned while looking for a barcode.
            // Scanning every line will slow the search process while skipping too many lines may skip over the barcode.
            StdBar1D.Granularity = 6;

            //Options:MinimumLength
            // Gets or set the minimum length of a barcode string when searching for a non-fixed length barcode
            StdBar1D.MinimumLength = 12;

            //Options:MaximumLength
            // Gets or set the maximum length of a barcode string when searching for a non-fixed length barcode
            StdBar1D.MaximumLength = 13;

            //Options:WhiteLines
            // Gets or sets the number of lines of white space above and below the barcode symbol.
            StdBar1D.WhiteLines = 1; //was 10 in demo

            StdBar1D.ErrorCheck = false;

            uFlags_Std1DPg = 0;
            if (_cbReturnCheckDigitS1D)
            {
                uFlags_Std1DPg |= BarcodeReadFlags.ReturnCheck;
            }
            if (_cbAvoidBlock)
            {
                uFlags_Std1DPg |= BarcodeReadFlags.BlockSearch;
            }
            if (_cbPartialRead)
            {
                uFlags_Std1DPg |= BarcodeReadFlags.Markers;
            }
            return(1);
        }
示例#2
0
        private bool ReadIDBarcode(BarcodeDirectionFlags direction, ref string Barcode)
        {
            //Validate General
            _readMaxBarcodesCount = 1;
            _unit = (BarcodeUnit.Millimeters);

            //Validate Location
            _readArea  = new LeadRect(0, 0, 0, 0);
            _useRegion = false;

            //Validate Color
            _useColor = false;

            _barcodeReadColor            = new BarcodeColor();
            _barcodeReadColor.BarColor   = FromGdiPlusColor(Color.Black);
            _barcodeReadColor.SpaceColor = FromGdiPlusColor(Color.White);

            //Validate All Tab controls
            SetToReadStandard1DControls(direction);

            _barcodeReadFlags = 0;
            if (_useColor)
            {
                _barcodeReadFlags |= BarcodeReadFlags.UseColors;
            }


            if (bSearchAllStd1D)
            {
                _readBarcodeTypes = BarcodeSearchTypeFlags.Barcode1dReadAnyType;
            }
            else if (bSearchAllNoRSS)
            {
                _readBarcodeTypes = BarcodeSearchTypeFlags.Barcode1dReadAnyTypeNoRss14;
            }
            else
            {
                _readBarcodeTypes = ulSearchStd1DType;
            }

            _barcodeReadFlags |= uFlags_Std1DPg;
            _barcodeRead1d     = StdBar1D;
            _barcodeReadPDF    = new BarcodeReadPdf();


            try
            {
                LeadRect area = LeadRect.Empty;
                if (_useRegion)
                {
                    area = LeadRect.Empty;
                }
                else
                {
                    if (_readArea == LeadRect.Empty)
                    {
                        area = new LeadRect(0, 0, _viewer.Image.Width, _viewer.Image.Height);
                    }
                    else
                    {
                        area = _readArea;
                    }
                }
                RasterCollection <BarcodeData> barcodeData = new RasterCollection <BarcodeData>();
                _barcodeEngine = new BarcodeEngine();

                barcodeData = _barcodeEngine.Read(_viewer.Image,
                                                  area,
                                                  _readBarcodeTypes,
                                                  _unit,
                                                  _barcodeReadFlags,
                                                  _readMaxBarcodesCount,
                                                  _barcodeRead1d,
                                                  _barcodeReadPDF,
                                                  _barcodeReadColor);

                //string msg;
                //msg = string.Format("Total Bar Code Symbols Found is: {0}", barcodeData.Count);

                RasterCollection <BarcodeData> _barcodeDataCollection;
                _barcodeDataCollection = barcodeData;
                BarcodeData data = (BarcodeData)_barcodeDataCollection[0];

                // Extract the barcode data string
                byte[] screenData = new byte[data.Data.Length];
                for (int dataIndex = 0, screenIndex = 0; dataIndex < data.Data.Length; dataIndex++)
                {
                    if (data.Data[dataIndex] != 0)
                    {
                        //if 3 then change to 32(space)
                        screenData[screenIndex] = data.Data[dataIndex] < (byte)32 ? (byte)32 : data.Data[dataIndex];
                        screenIndex++;
                    }
                }
                string dataString = BarcodeData.ConvertToStringArray(screenData)[0];
                Barcode = dataString;
            }
            catch (BarcodeException ex)
            {
                if (ex.Code == BarcodeExceptionCode.NotFound)
                {
                    Barcode = "barcode not found";
                    return(false);
                }
                else
                {
                    throw;   // MessageBox.Show(ex.Message);
                }
            }
            catch      //(Exception ex)
            {
                throw; //MessageBox.Show(ex.Message);
            }
            return(true);
        }