Products | Support | Email a link to this topic. | Send comments on this topic. | Back to Introduction - All Topics | Help Version 19.0.6.22
|
Leadtools.Barcode Namespace > BarcodeReader Class : ReadSymbology Event |
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
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. |
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 |
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.
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