←Select platform

ReadSymbology Event

Summary
Occurs for every barcode symbology read.
Syntax
C#
VB
Objective-C
C++
Java
public event EventHandler<BarcodeReadSymbologyEventArgs> ReadSymbology 
Public Event ReadSymbology As EventHandler(Of BarcodeReadSymbologyEventArgs) 
@property (nonatomic, weak, nullable) id<LTReadSymbologyDelegate> delegate 
public void addReadSymbologyListener(BarcodeReadSymbologyListener listener) 
public void removeReadSymbologyListener(BarcodeReadSymbologyListener listener) 
public: 
event EventHandler<BarcodeReadSymbologyEventArgs^>^ ReadSymbology 
Event Data

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.

PropertyDescription
Data Gets the barcode data found.
Remarks

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.

Example

This example shows how to use ReadSymbology to get the current status of barcode reading.

C#
VB
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 engine 
	BarcodeEngine engine = new BarcodeEngine(); 
 
	// Get the Barcode reader instance 
	BarcodeReader reader = engine.Reader; 
 
	// Load the image 
	using (RasterCodecs codecs = new RasterCodecs()) 
	{ 
		using (RasterImage image = codecs.Load(imageFileName, 0, CodecsLoadByteOrder.BgrOrGray, 1, 1)) 
		{ 
			// Subscribe to the ReadSymbology event 
			reader.ReadSymbology += new EventHandler<BarcodeReadSymbologyEventArgs>(reader_ReadSymbology); 
			// Read all barcodes in the image 
			reader.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 read 
		Console.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(", "); 
			} 
			else 
			{ 
				Console.WriteLine(); 
			} 
		} 
	} 
	else if (e.Operation == BarcodeReadSymbologyOperation.PostRead) 
	{ 
		if (e.Error == null) 
		{ 
			// No errors 
			BarcodeData barcode = e.Data; 
			if (barcode != null) 
			{ 
				// Found a barcode, show it 
				Console.WriteLine("  {0} at {1} with data {2}", barcode.Symbology, barcode.Bounds, barcode.Value); 
			} 
			else 
			{ 
				Console.WriteLine("  No barcodes found"); 
			} 
		} 
		else 
		{ 
			// Show the error 
			Console.WriteLine("Error: {0}", e.Error.Message); 
 
			// Tell the reader top stop reading barcodes 
			e.Status = BarcodeReadSymbologyStatus.Abort; 
		} 
	} 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS21\Resources\Images"; 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.Barcode 
Imports Leadtools.ImageProcessing 
 
Public Sub BarcodeReader_ReadSymbologyExample() 
   Dim imageFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Barcode1.tif") 
 
   ' Create a Barcode engine 
   Dim engine As New BarcodeEngine() 
 
   ' Get the Barcode reader instance 
   Dim reader As BarcodeReader = engine.Reader 
 
   ' Load the image 
   Using codecs As New RasterCodecs() 
      Using image As RasterImage = codecs.Load(imageFileName, 0, CodecsLoadByteOrder.BgrOrGray, 1, 1) 
         ' Subscribe to the ReadSymbology event 
         AddHandler reader.ReadSymbology, AddressOf reader_ReadSymbology 
         ' Read all barcodes in the image 
         reader.ReadBarcodes(image, LeadRect.Empty, 0, Nothing) 
         RemoveHandler reader.ReadSymbology, AddressOf reader_ReadSymbology 
      End Using 
   End Using 
End Sub 
 
Private Sub reader_ReadSymbology(ByVal sender As Object, ByVal e As BarcodeReadSymbologyEventArgs) 
   If e.Operation = BarcodeReadSymbologyOperation.PreRead Then 
      ' Before reading, show the symbologies the engine is going to try to read 
      Console.WriteLine("Trying to read the following symbologies:") 
      Dim symbologies As BarcodeSymbology() = e.GetSymbologies() 
      For i As Integer = 0 To symbologies.Length - 1 
         Console.Write(symbologies(i)) 
         If i <> (symbologies.Length - 1) Then 
            Console.Write(", ") 
         Else 
            Console.WriteLine() 
         End If 
      Next 
   ElseIf e.Operation = BarcodeReadSymbologyOperation.PostRead Then 
      If IsNothing(e.Error) Then 
         ' No errors 
         Dim barcode As BarcodeData = e.Data 
         If Not IsNothing(barcode) Then 
            ' Found a barcode, show it 
            Console.WriteLine("  {0} at {1} with data {2}", barcode.Symbology, barcode.Bounds, barcode.Value) 
         Else 
            Console.WriteLine("  No barcodes found") 
         End If 
      Else 
         ' Show the error 
         Console.WriteLine("Error: {0}", e.Error.Message) 
 
         ' Tell the reader top stop reading barcodes 
         e.Status = BarcodeReadSymbologyStatus.Abort 
      End If 
   End If 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
   Public Const ImagesDir As String = "C:\LEADTOOLS21\Resources\Images" 
End Class 
Requirements

Target Platforms

Help Version 21.0.2021.7.2
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2021 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Barcode Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2021 LEAD Technologies, Inc. All Rights Reserved.