VintaSoft Twain .NET SDK 15.0: Documentation for .NET developer
Vintasoft.Twain Namespace / TwainBarcodeRecognizer Class
Members Object Syntax Example Hierarchy Requirements SeeAlso
In This Topic
    TwainBarcodeRecognizer Class
    In This Topic
    Class that allows to enable barcode recognition in acquired images and get information about recognized barcodes.
    Object Model
    TwainBarcodeRecognizer
    Syntax
    'Declaration
    
    Public Class TwainBarcodeRecognizer
    
    
    public class TwainBarcodeRecognizer
    
    
    public __gc class TwainBarcodeRecognizer
    
    
    public ref class TwainBarcodeRecognizer
    
    
    Example

    This C#/VB.NET code shows how to get information about barcodes recognized on acquired image.

    
    ''' <summary>
    ''' Synchronously acquires images from TWAIN device and retrieves from TWAIN device information about barcodes recognized on acquired images.
    ''' </summary>
    Public Sub SynchronouslyAcquireImageFromTwainDeviceAndRecognizeBarcodeInAcquiredImages()
        Using deviceManager As New Vintasoft.Twain.DeviceManager()
            Try
                ' open the device manager
                deviceManager.Open()
    
                deviceManager.ShowDefaultDeviceSelectionDialog()
    
                ' get reference to the default device
                Dim device As Vintasoft.Twain.Device = deviceManager.DefaultDevice
    
                ' specify that device UI must not be used
                device.ShowUI = False
                ' specify that device must be closed after scan
                device.DisableAfterAcquire = True
    
                ' open the device
                device.Open()
    
                ' specify that device should recognize barcodes in acquired images
                device.BarcodeRecognizer.IsEnabled = True
    
                ' acquire images from device
                Dim acquireModalState As Vintasoft.Twain.AcquireModalState = Vintasoft.Twain.AcquireModalState.None
                Do
                    acquireModalState = device.AcquireModal()
    
                    Select Case acquireModalState
                        Case Vintasoft.Twain.AcquireModalState.ImageAcquired
                            ' get information about recognized barcodes
                            Dim recognizedBarcodes As Vintasoft.Twain.TwainBarcodeInfo() = device.BarcodeRecognizer.GetRecognitionResult()
                            ' if barcodes are NOT found
                            If recognizedBarcodes.Length = 0 Then
                                System.Console.WriteLine("Barcodes are NOT found.")
                            Else
                                ' if barcodes are found
                                System.Console.WriteLine(String.Format("{0} barcodes are found.", recognizedBarcodes.Length))
                                ' for each recognized barcode
                                For i As Integer = 0 To recognizedBarcodes.Length - 1
                                    ' output barcode type
                                    System.Console.Write(String.Format("BarcodeType={0} ", recognizedBarcodes(i).Type))
                                    ' output barcode text
                                    System.Console.WriteLine(String.Format("BarcodeText='{0}'", recognizedBarcodes(i).Value))
                                Next
                            End If
    
                            ' if acquired image is present (Native or Memory transfer mode is used)
                            If device.AcquiredImage IsNot Nothing Then
                                ' dispose the acquired image
                                device.AcquiredImage.Dispose()
                            End If
    
                            Exit Select
                    End Select
                Loop While acquireModalState <> Vintasoft.Twain.AcquireModalState.None
    
                ' close the device
                device.Close()
    
                ' close the device manager
                deviceManager.Close()
            Catch ex As Vintasoft.Twain.TwainException
                System.Console.WriteLine("Error: " + ex.Message)
                System.Console.ReadLine()
            End Try
        End Using
    End Sub
    
    
    
    /// <summary>
    /// Synchronously acquires images from TWAIN device and retrieves from TWAIN device information about barcodes recognized on acquired images.
    /// </summary>
    public void SynchronouslyAcquireImageFromTwainDeviceAndRecognizeBarcodeInAcquiredImages()
    {
        using (Vintasoft.Twain.DeviceManager deviceManager = new Vintasoft.Twain.DeviceManager())
        {
            try
            {
                // open the device manager
                deviceManager.Open();
    
                deviceManager.ShowDefaultDeviceSelectionDialog();
    
                // get reference to the default device
                Vintasoft.Twain.Device device = deviceManager.DefaultDevice;
    
                // specify that device UI must not be used
                device.ShowUI = false;
                // specify that device must be closed after scan
                device.DisableAfterAcquire = true;
    
                // open the device
                device.Open();
    
                // specify that device should recognize barcodes in acquired images
                device.BarcodeRecognizer.IsEnabled = true;
    
                // acquire images from device
                Vintasoft.Twain.AcquireModalState acquireModalState = Vintasoft.Twain.AcquireModalState.None;
                do
                {
                    acquireModalState = device.AcquireModal();
    
                    switch (acquireModalState)
                    {
                        case Vintasoft.Twain.AcquireModalState.ImageAcquired:
                            // get information about recognized barcodes
                            Vintasoft.Twain.TwainBarcodeInfo[] recognizedBarcodes = device.BarcodeRecognizer.GetRecognitionResult();
                            // if barcodes are NOT found
                            if (recognizedBarcodes.Length == 0)
                            {
                                System.Console.WriteLine("Barcodes are NOT found.");
                            }
                            // if barcodes are found
                            else
                            {
                                System.Console.WriteLine(string.Format("{0} barcodes are found.", recognizedBarcodes.Length));
                                // for each recognized barcode
                                for (int i = 0; i < recognizedBarcodes.Length; i++)
                                {
                                    // output barcode type
                                    System.Console.Write(string.Format("BarcodeType={0} ", recognizedBarcodes[i].Type));
                                    // output barcode text
                                    System.Console.WriteLine(string.Format("BarcodeText='{0}'", recognizedBarcodes[i].Value));
                                }
                            }
    
                            // if acquired image is present (Native or Memory transfer mode is used)
                            if (device.AcquiredImage != null)
                                // dispose the acquired image
                                device.AcquiredImage.Dispose();
    
                            break;
                    }
                }
                while (acquireModalState != Vintasoft.Twain.AcquireModalState.None);
    
                // close the device
                device.Close();
    
                // close the device manager
                deviceManager.Close();
            }
            catch (Vintasoft.Twain.TwainException ex)
            {
                System.Console.WriteLine("Error: " + ex.Message);
                System.Console.ReadLine();
            }
        }
    }
    
    

    Inheritance Hierarchy

    System.Object
       Vintasoft.Twain.TwainBarcodeRecognizer

    Requirements

    Target Platforms: .NET 8, .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5

    See Also