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


    Вот C#/VB.NET код, который демонстрирует, как обнаружить замятие бумаги во время TWAIN сканирования:
    /// <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(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(300F, 300F)
    
            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 System.EventHandler(Of Vintasoft.Twain.DeviceAsyncEventArgs)(AddressOf device_DeviceEvent)
    
                                    Exit For
                            End If
                    Next
            Catch ex As System.Exception
                    System.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(sender As Object, e As Vintasoft.Twain.DeviceAsyncEventArgs)
            System.Console.WriteLine("Paper is jammed.")
    End Sub