←Select platform

ReadSymbology Event

Summary

Occurs for every barcode symbology read.

Syntax

C#
VB
Java
Objective-C
C++
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:\Users\Public\Documents\LEADTOOLS 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:\Users\Public\Documents\LEADTOOLS Images" 
End Class 

c#[Silverlight C# Example] 
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.Forms; 
using Leadtools.Barcode; 
using Leadtools.ImageProcessing; 
using Leadtools.Examples; 
 
public void BarcodeReader_ReadSymbologyExample(RasterImage image) 
{ 
   // Create a Barcode engine 
   BarcodeEngine engine = new BarcodeEngine(); 
 
   // Get the Barcode reader instance 
   BarcodeReader reader = engine.Reader; 
 
   // Load the image 
   RasterCodecs codecs = new RasterCodecs(); 
 
   // Subscribe to the ReadSymbology event 
   reader.ReadSymbology += new EventHandler<BarcodeReadSymbologyEventArgs>(reader_ReadSymbology); 
   // Read all barcodes in the image 
   reader.ReadBarcodes(image, LogicalRectangle.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; 
      } 
   } 
} 
vb[Silverlight VB Example] 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.Forms 
Imports Leadtools.Barcode 
Imports Leadtools.ImageProcessing 
Imports Leadtools.ImageProcessing.Color 
 
Public Sub BarcodeReader_ReadSymbologyExample(ByVal image As RasterImage) 
   ' Create a Barcode engine 
   Dim engine As BarcodeEngine = New BarcodeEngine() 
 
   ' Get the Barcode reader instance 
   Dim reader As BarcodeReader = engine.Reader 
 
   ' Load the image 
   Dim codecs As RasterCodecs = New RasterCodecs() 
 
   ' Subscribe to the ReadSymbology event 
   AddHandler reader.ReadSymbology, AddressOf reader_ReadSymbology 
   ' Read all barcodes in the image 
   reader.ReadBarcodes(image, LogicalRectangle.Empty, 0, Nothing) 
   RemoveHandler reader.ReadSymbology, AddressOf reader_ReadSymbology 
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() 
      Dim i As Integer = 0 
      Do While i < symbologies.Length 
         Console.Write(symbologies(i)) 
         If i <> (symbologies.Length - 1) Then 
            Console.Write(", ") 
         Else 
            Console.WriteLine() 
         End If 
         i += 1 
      Loop 
   ElseIf e.Operation = BarcodeReadSymbologyOperation.PostRead Then 
      If e.Error Is Nothing Then 
         ' No errors 
         Dim barcode As BarcodeData = e.Data 
         If Not barcode Is Nothing 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 

Requirements

Target Platforms

Help Version 20.0.2018.6.20
Products | Support | Contact Us | Copyright Notices
© 1991-2018 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Barcode Assembly