VintaSoft Twain .NET SDK 15.4: Documentation for .NET developer
Vintasoft.WpfTwain Namespace / Device Class / StopFeeder() Method
Syntax Exceptions Example Requirements SeeAlso
In This Topic
StopFeeder() Method (Device)
In This Topic
Sends the stop document feeder command to the device (document feeder will not be stopped right after execution of this method).
Syntax
'Declaration

Public Sub StopFeeder()

public void StopFeeder()

Exceptions
ExceptionDescription
Thrown if the .NET debugger is used and the function evaluation requires all threads to run.
Thrown if device is not transferring images OR device does not support AutoScan capability.
Example

This C#/VB.NET code shows how to pause the image acquisition from feeder (stop the feeder) and resume the image acquisition from feeder.


Class SyncScan_StopFeeder

    ''' <summary>
    ''' This method scans the first image, stops the document feeder,
    ''' scans the second image.
    ''' </summary>
    Public Shared Sub ScanImage_StopFeeder_ScanImage()
        Dim imageCount As Integer = 0

        ' create the device manager
        Using deviceManager As New Vintasoft.Twain.DeviceManager()
            deviceManager.IsTwain2Compatible = True
            ' open the device manager
            deviceManager.Open()

            ' get the device
            Dim deviceName As String = "KODAK Scanner: i5000"
            Dim device As Vintasoft.Twain.Device = deviceManager.Devices.Find(deviceName)
            If device Is Nothing Then
                Throw New ApplicationException(String.Format("Device '{0}' is not found.", deviceName))
            End If

            ' disable device UI
            device.ShowUI = False
            ' specify that device must be closed after scan
            device.DisableAfterAcquire = True

            ' open the device
            device.Open()
            ' specify that 2 images must be acquired from scanner
            device.XferCount = 2

            ' run synchronous image acquisition
            Dim acquireModalState1 As Vintasoft.Twain.AcquireModalState = Vintasoft.Twain.AcquireModalState.None
            Do
                acquireModalState1 = device.AcquireModal()
                Select Case acquireModalState1
                    Case Vintasoft.Twain.AcquireModalState.ImageAcquired
                        Console.WriteLine("Image is acquired.")
                        If device.AcquiredImage IsNot Nothing Then
                            device.AcquiredImage.Dispose()
                        End If

                        imageCount += 1

                        ' stop the feeder
                        device.StopFeeder()
                        Exit Select

                    Case Vintasoft.Twain.AcquireModalState.ScanCompleted
                        Console.WriteLine("Scan is completed.")
                        Exit Select

                    Case Vintasoft.Twain.AcquireModalState.ScanCanceled
                        Console.WriteLine("Scan is canceled.")
                        Exit Select

                    Case Vintasoft.Twain.AcquireModalState.ScanFailed
                        Console.WriteLine(String.Format("Scan is failed: {0}.", device.ErrorString))
                        Exit Select
                End Select
            Loop While acquireModalState1 <> Vintasoft.Twain.AcquireModalState.None

            If imageCount <> 1 Then
                Throw New ApplicationException("Wrong acquired image count.")
            End If

            If device.State <> Vintasoft.Twain.DeviceState.TransferReady Then
                Throw New ApplicationException("Feeder is NOT stopped.")
            End If
            Console.WriteLine("Feeder is stopped.")

            ' continue asynchronous image acquisition
            Do
                acquireModalState1 = device.AcquireModal()
                Select Case acquireModalState1
                    Case Vintasoft.Twain.AcquireModalState.ImageAcquired
                        Console.WriteLine("Image is acquired.")

                        If device.AcquiredImage IsNot Nothing Then
                            device.AcquiredImage.Dispose()
                        End If

                        imageCount = imageCount + 1
                        Exit Select

                    Case Vintasoft.Twain.AcquireModalState.ScanCompleted
                        Console.WriteLine("Scan is completed.")
                        Exit Select

                    Case Vintasoft.Twain.AcquireModalState.ScanCanceled
                        Console.WriteLine("Scan is canceled.")
                        Exit Select

                    Case Vintasoft.Twain.AcquireModalState.ScanFailed
                        Console.WriteLine(String.Format("Scan is failed: {0}.", device.ErrorString))
                        Exit Select
                End Select
            Loop While acquireModalState1 <> Vintasoft.Twain.AcquireModalState.None

            If imageCount <> 2 Then
                Throw New ApplicationException("Wrong acquired image count.")
            End If

            ' close the device
            device.Close()
        End Using
    End Sub

End Class


namespace TwainExamples_CSharp
{
    class SyncScan_StopFeeder
    {

        /// <summary>
        /// This method scans the first image, stops the document feeder,
        /// scans the second image.
        /// </summary>
        public static void ScanImage_StopFeeder_ScanImage()
        {
            int imageCount = 0;

            // create the device manager
            using (Vintasoft.Twain.DeviceManager deviceManager = new Vintasoft.Twain.DeviceManager())
            {
                deviceManager.IsTwain2Compatible = true;
                // open the device manager
                deviceManager.Open();

                // get the device
                string deviceName = "KODAK Scanner: i5000";
                Vintasoft.Twain.Device device = deviceManager.Devices.Find(deviceName);
                if (device == null)
                    throw new System.ApplicationException(string.Format("Device '{0}' is not found.", deviceName));

                // disable device UI
                device.ShowUI = false;
                // specify that device must be closed after scan
                device.DisableAfterAcquire = true;

                // open the device
                device.Open();
                // specify that 2 images must be acquired from scanner
                device.XferCount = 2;

                // run asynchronous image acquisition
                Vintasoft.Twain.AcquireModalState acquireModalState = Vintasoft.Twain.AcquireModalState.None;
                do
                {
                    acquireModalState = device.AcquireModal();
                    switch (acquireModalState)
                    {
                        case Vintasoft.Twain.AcquireModalState.ImageAcquired:
                            System.Console.WriteLine("Image is acquired.");
                            if (device.AcquiredImage != null)
                                device.AcquiredImage.Dispose();

                            imageCount++;

                            // stop the feeder
                            device.StopFeeder();
                            break;

                        case Vintasoft.Twain.AcquireModalState.ScanCompleted:
                            System.Console.WriteLine("Scan is completed.");
                            break;

                        case Vintasoft.Twain.AcquireModalState.ScanCanceled:
                            System.Console.WriteLine("Scan is canceled.");
                            break;

                        case Vintasoft.Twain.AcquireModalState.ScanFailed:
                            System.Console.WriteLine(string.Format("Scan is failed: {0}.", device.ErrorString));
                            break;
                    }
                }
                while (acquireModalState != Vintasoft.Twain.AcquireModalState.None);

                if (imageCount != 1)
                    throw new System.ApplicationException("Wrong acquired image count.");

                if (device.State != Vintasoft.Twain.DeviceState.TransferReady)
                    throw new System.ApplicationException("Feeder is NOT stopped.");
                System.Console.WriteLine("Feeder is stopped.");

                // continue asynchronous image acquisition
                do
                {
                    acquireModalState = device.AcquireModal();
                    switch (acquireModalState)
                    {
                        case Vintasoft.Twain.AcquireModalState.ImageAcquired:
                            System.Console.WriteLine("Image is acquired.");

                            if (device.AcquiredImage != null)
                                device.AcquiredImage.Dispose();

                            imageCount++;
                            break;

                        case Vintasoft.Twain.AcquireModalState.ScanCompleted:
                            System.Console.WriteLine("Scan is completed.");
                            break;

                        case Vintasoft.Twain.AcquireModalState.ScanCanceled:
                            System.Console.WriteLine("Scan is canceled.");
                            break;

                        case Vintasoft.Twain.AcquireModalState.ScanFailed:
                            System.Console.WriteLine(string.Format("Scan is failed: {0}.", device.ErrorString));
                            break;
                    }
                }
                while (acquireModalState != Vintasoft.Twain.AcquireModalState.None);

                if (imageCount != 2)
                    throw new System.ApplicationException("Wrong acquired image count.");

                // close the device
                device.Close();
            }
        }

    }
}

Requirements

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

See Also