VintaSoft Twain .NET SDK 14.1: Руководство для .NET разработчика
В этом разделе
    Как определить, что бумага замята во время TWAIN-сканирования?
    В этом разделе
    Сканер Kodak может отправлять асинхронные события при замятии бумаги, выключении сканера и т.д.
    TWAIN Advanced Demo показывает, как работать с асинхронными событиями устройства.


    Вот пример, который демонстрирует, как обнаружить замятие бумаги:
    /// <summary>
    /// Detects the paper jamm.
    /// </summary>
    public void DetectPaperJam(Vintasoft.Twain.Device device)
    {
        // disable device UI
        device.ShowUI = false;
        // disable device when images are acquired
        device.DisableAfterAcquire = true;
    
        // open the device
        device.Open();
    
        // set device settings
        device.PixelType = Vintasoft.Twain.PixelType.RGB;
        device.UnitOfMeasure = Vintasoft.Twain.UnitOfMeasure.Inches;
        device.Resolution = new Vintasoft.Twain.Resolution(300f, 300f);
    
        try
        {
            // get events supported by device
            Vintasoft.Twain.DeviceEventId[] supportedDeviceEvents = device.GetSupportedAsyncEvents();
            // for each supported event
            for (int i = 0; i < supportedDeviceEvents.Length; i++)
            {
                // if device can report when paper is jammed
                if (supportedDeviceEvents[i] == Vintasoft.Twain.DeviceEventId.PaperJam)
                {
                    // specify that device must report when paper is jammed
                    device.AsyncEvents = new Vintasoft.Twain.DeviceEventId[] { Vintasoft.Twain.DeviceEventId.PaperJam };
    
                    // subscribe to the device event
                    device.AsyncEvent += new System.EventHandler<Vintasoft.Twain.DeviceAsyncEventArgs>(device_DeviceEvent);
    
                    break;
                }
            }
        }
        catch (System.Exception ex)
        {
            System.Console.WriteLine(ex.ToString());
        }
    
        // subscribe to the Device.ImageAcquired, Device.ScanCompleted, ... events
        //...
    
        // acquire images from device
        device.Acquire();
    }
    
    /// <summary>
    /// Occurred the device event.
    /// </summary>
    private void device_DeviceEvent(object sender, Vintasoft.Twain.DeviceAsyncEventArgs e)
    {
        System.Console.WriteLine("Paper is jammed.");
    }
    
    ''' <summary>
    ''' Detects the paper jamm.
    ''' </summary>
    Public Sub DetectPaperJam(ByVal device As Vintasoft.Twain.Device)
        ' disable device UI
        device.ShowUI = False
        ' disable device when images are acquired
        device.DisableAfterAcquire = True
    
        ' open the device
        device.Open()
    
        ' set device settings
        device.PixelType = Vintasoft.Twain.PixelType.RGB
        device.UnitOfMeasure = Vintasoft.Twain.UnitOfMeasure.Inches
        device.Resolution = New Vintasoft.Twain.Resolution(300.0F, 300.0F)
    
        Try
            ' get events supported by device
            Dim supportedDeviceEvents As Vintasoft.Twain.DeviceEventId() = device.GetSupportedAsyncEvents()
            ' for each supported event
            For i As Integer = 0 To supportedDeviceEvents.Length - 1
                ' if device can report when paper is jammed
                If supportedDeviceEvents(i) = Vintasoft.Twain.DeviceEventId.PaperJam Then
                    ' specify that device must report when paper is jammed
                    device.AsyncEvents = New Vintasoft.Twain.DeviceEventId() {Vintasoft.Twain.DeviceEventId.PaperJam}
    
                    ' subscribe to the device event
                    AddHandler device.AsyncEvent, New EventHandler(Of Vintasoft.Twain.DeviceAsyncEventArgs)(AddressOf device_DeviceEvent)
    
                    Exit For
                End If
            Next
        Catch ex As Exception
            Console.WriteLine(ex.ToString())
        End Try
    
        ' subscribe to the Device.ImageAcquired, Device.ScanCompleted, ... events
        '...
    
        ' acquire images from device
        device.Acquire()
    End Sub
    
    ''' <summary>
    ''' Occurred the device event.
    ''' </summary>
    Private Sub device_DeviceEvent(ByVal sender As Object, ByVal e As Vintasoft.Twain.DeviceAsyncEventArgs)
        Console.WriteLine("Paper is jammed.")
    End Sub