public event EventHandler<BarcodeReadSymbologyEventArgs> ReadSymbology The event handler receives an argument of type BarcodeReadSymbologyEventArgs containing data related to this event. The following BarcodeReadSymbologyEventArgs properties provide information specific to this event.
| Property | Description |
|---|---|
| Data | Gets the barcode data found. |
Use the ReadSymbology event to obtain information and set the status of the current barcode read operation.
When you read barcodes using BarcodeReader.ReadBarcode or BarcodeReader.ReadBarcodes, the BarcodeReader object will fire the ReadSymbology event multiple times depending on the symbologies being read.
LEADTOOLS barcode reading is designed for speed; multiple barcode symbologies can be read (or searched for) in one operation as these barcodes have similar characteristics. Therefore, the symbologies being read are stored in a BarcodeSymbology array and obtained with the BarcodeReadSymbologyEventArgs.GetSymbologies method.
The following table lists the event members and their meaning:
| Member | Description |
|---|---|
| BarcodeReadSymbologyEventArgs.Operation |
Can be either BarcodeReadSymbologyOperation.PreRead , when the BarcodeReader is about to try to read the symbologies or BarcodeReadSymbologyOperation.PreRead when the reader has finished reading the objects. |
| BarcodeReadSymbologyEventArgs.GetSymbologies |
Will return the current symbologies being searched for or that have been read. |
| BarcodeReadSymbologyEventArgs.Options |
The BarcodeReadOptions or one of its derived classes that specify the options being used to read the symbologies. This could be the options passed through the read methods or the default options set in BarcodeReader. |
| BarcodeReadSymbologyEventArgs.Data |
A BarcodeData object that contains the data of the barcode found. Only valid if Operation is BarcodeReadSymbologyOperation.PostRead and no error occurred. Otherwise, it will be null (Nothing in Visual Basic). |
| BarcodeReadSymbologyEventArgs.Error |
An Exception object that contains any error encountered during the current operation. If no errors are encountered, then this member will be null (Nothing in Visual Basic). |
| BarcodeReadSymbologyEventArgs.Status |
The status of the operation. The BarcodeReader will always set this member to BarcodeReadSymbologyEventArgs.Continue, which means proceed to the next phase of the read operation. You can set this member to BarcodeReadSymbologyStatus.Skip to skip reading the current symbologies (only when BarcodeReadSymbologyEventArgs.Operation is BarcodeReadSymbologyOperation.PreRead) or to abort the whole read operation by setting it to BarcodeReadSymbologyStatus.Abort. |
This example shows how to use ReadSymbology to get the current status of barcode reading.
using Leadtools;using Leadtools.Codecs;using Leadtools.Barcode;using Leadtools.ImageProcessing;public void BarcodeReader_ReadSymbologyExample(){string imageFileName = Path.Combine(LEAD_VARS.ImagesDir, "Barcode1.tif");// Create a Barcode engineBarcodeEngine engine = new BarcodeEngine();// Get the Barcode reader instanceBarcodeReader reader = engine.Reader;// Load the imageusing (RasterCodecs codecs = new RasterCodecs()){using (RasterImage image = codecs.Load(imageFileName, 0, CodecsLoadByteOrder.BgrOrGray, 1, 1)){// Subscribe to the ReadSymbology eventreader.ReadSymbology += new EventHandler<BarcodeReadSymbologyEventArgs>(reader_ReadSymbology);// Read all barcodes in the imagereader.ReadBarcodes(image, LeadRect.Empty, 0, null);reader.ReadSymbology -= new EventHandler<BarcodeReadSymbologyEventArgs>(reader_ReadSymbology);}}}private void reader_ReadSymbology(object sender, BarcodeReadSymbologyEventArgs e){if (e.Operation == BarcodeReadSymbologyOperation.PreRead){// Before reading, show the symbologies the engine is going to try to readConsole.WriteLine("Trying to read the following symbologies:");BarcodeSymbology[] symbologies = e.GetSymbologies();for (int i = 0; i < symbologies.Length; i++){Console.Write(symbologies[i]);if (i != (symbologies.Length - 1)){Console.Write(", ");Console.WriteLine(e.Options.FriendlyName);}else{Console.WriteLine();}}}else if (e.Operation == BarcodeReadSymbologyOperation.PostRead){if (e.Error == null){// No errorsBarcodeData barcode = e.Data;if (barcode != null){// Found a barcode, show itConsole.WriteLine(" {0} at {1} with data {2}", barcode.Symbology, barcode.Bounds, barcode.Value);}else{Console.WriteLine(" No barcodes found");}}else{// Show the errorConsole.WriteLine("Error: {0}", e.Error.Message);// Tell the reader top stop reading barcodese.Status = BarcodeReadSymbologyStatus.Abort;}}}static class LEAD_VARS{public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images";}