Error processing SSI file
LEADTOOLS Barcode (Leadtools.Barcode assembly)

Show in webframe

ReadSymbology Event








Occurs for every barcode symbology read.
Syntax
public event EventHandler<BarcodeReadSymbologyEventArgs> ReadSymbology
'Declaration
 
Public Event ReadSymbology As EventHandler(Of BarcodeReadSymbologyEventArgs)
'Usage
 
Dim instance As BarcodeReader
Dim handler As EventHandler(Of BarcodeReadSymbologyEventArgs)
 
AddHandler instance.ReadSymbology, handler
public event EventHandler<BarcodeReadSymbologyEventArgs> ReadSymbology
@property (nonatomic, weak, nullable) id<LTReadSymbologyDelegate> delegate
public void addReadSymbologyListener(BarcodeReadSymbologyListener listener)
public void removeReadSymbologyListener(BarcodeReadSymbologyListener listener)
            
add_ReadSymbology(function(sender, e))
remove_ReadSymbology(function(sender, e))

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.
Error Any error that may have occurred during the read operation.
HResult Any error that may have occurred during the read operation.
Operation Gets the current barcode read operation.
Options Gets the options being used to read the symbologies.
Options

For information about this method please see Options.

Status Gets or sets the status of the read operation.
SymbologiesCount Get Symbologies Count
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.

Copy Code  
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.Forms
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, LogicalRectangle.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
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Forms;
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, 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;
      }
   }
}

static class LEAD_VARS
{
public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Barcode;
using Leadtools.ImageProcessing;

      
public async Task BarcodeReader_ReadSymbologyExample()
{
   string imageFileName = @"Assets\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())
   {
      StorageFile loadFile = await Tools.AppInstallFolder.GetFileAsync(imageFileName);
      using(RasterImage image = await codecs.LoadAsync(LeadStreamFactory.Create(loadFile)))
      {
         // Subscribe to the ReadSymbology event
         reader.ReadSymbology += new EventHandler<BarcodeReadSymbologyEventArgs>(reader_ReadSymbology);
         // Read all barcodes in the image
         reader.ReadBarcodes(image, LeadRectHelper.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
      Debug.WriteLine("Trying to read the following symbologies:");
      BarcodeSymbology[] symbologies = e.GetSymbologies();
      StringBuilder sb = new StringBuilder();
      for(int i = 0; i < symbologies.Length; i++)
      {
         sb.Append(symbologies[i].ToString());
         if(i != (symbologies.Length - 1))
         {
            sb.Append(", ");
         }
         else
         {
            sb.AppendLine();
         }
      }
      Debug.WriteLine(sb.ToString());
   }
   else if(e.Operation == BarcodeReadSymbologyOperation.PostRead)
   {
      if(e.HResult != 0)
      {
         // No errors
         BarcodeData barcode = e.Data;
         if(barcode != null)
         {
            // Found a barcode, show it
            Debug.WriteLine("  {0} at {1} with data {2}", barcode.Symbology, barcode.Bounds, barcode.Value);
         }
         else
         {
            Debug.WriteLine("  No barcodes found");
         }
      }
      else
      {
         // Show the error
         int hResult = e.HResult;
         string message = string.Empty;
         BarcodeException barcodeException = BarcodeException.FromHResult(hResult);
         if (barcodeException != null)
         {
            message = barcodeException.Message;
         }
         else
         {
            RasterException rasterException = RasterException.FromHResult(hResult);
            if (rasterException != null)
               message = rasterException.Message;
            else
               message = "UnKnown error:HResult" + hResult;
         }

         Debug.WriteLine("Error: {0}", message);

         // Tell the reader top stop reading barcodes
         e.Status = BarcodeReadSymbologyStatus.Abort;
      }
   }
}
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;
      }
   }
}
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

See Also

Reference

BarcodeReader Class
BarcodeReader Members
BarcodeReader Class
BarcodeReadSymbologyEventArgs
BarcodeReader.ReadBarcode
BarcodeReader.ReadBarcodes

Error processing SSI file
Leadtools.Barcode requires a Barcode Module license and unlock key. For more information, refer to: LEADTOOLS Toolkit Features