LEADTOOLS Barcode (Leadtools.Barcode assembly)
LEAD Technologies, Inc

ReadSymbology Event

Example 







Occurs for every barcode symbology read. .NET support WinRT support Silverlight support
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
ObjectiveC Syntax
Java Syntax
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. .NET support WinRT support Silverlight support
Error Any error that may have occurred during the read operation. .NET support WinRT support Silverlight support
Operation Gets the current barcode read operation. .NET support WinRT support Silverlight support
Options Gets the options being used to read the symbologies. .NET support Silverlight support
Options

For information about this method please see Options.

WinRT support
Status Gets or sets the status of the read operation. .NET support WinRT support Silverlight support
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 System.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
Copy CodeCopy Code  
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
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";
}
[TestMethod]
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.Error == null)
      {
         // 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
         Debug.WriteLine("Error: {0}", e.Error.Message);

         // Tell the reader top stop reading barcodes
         e.Status = BarcodeReadSymbologyStatus.Abort;
      }
   }
}
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;
      }
   }
}
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: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also

Reference

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

 

 


Products | Support | Contact Us | Copyright Notices

© 2006-2012 All Rights Reserved. LEAD Technologies, Inc.

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