VintaSoft Twain ActiveX v6.0
In This Topic
    How to detect paper jam
    In This Topic
    Kodak scanner can send asynchronous event when paper is jammed, scanner is switched off, etc.
    TWAIN Advanced Demo shows how to work with asynchronous events of device.


    Example: Here is an example that shows how to detect when paper is jammed.
    Private VSTwain1 As New VintaSoftTwain()
    
    
    ''' <summary>
    ''' Scans images asynchronously.
    ''' </summary>
    Private Sub ScanImages()
        VSTwain1.Device_Open()
        If VSTwain1.DeviceManager_ShowDefaultDeviceSelectionDialog() Then
            VSTwain1.Device_ShowUI = True
    
            Try
                ' get events supported by device
                Dim supportedDeviceEvents As Array = VSTwain1.Device_GetSupportedAsyncEvents()
                If (Not IsNothing(supportedDeviceEvents)) Then
                    ' for each supported event
                    For i As Integer = 0 To supportedDeviceEvents.Length - 1
                        ' if device can report when paper is jammed
                        If supportedDeviceEvents(i) = 13 Then
                            ' specify that device must report when paper is jammed
                            VSTwain1.Device_AsyncEvents = New Int32() {13}
    
                            ' subscribe to the device event
                            AddHandler VSTwain1.DeviceAsyncEvent, AddressOf VSTwain1_AsyncEvent
    
                            Exit For
                        End If
                    Next
                End If
            Catch ex As Exception
                Console.WriteLine(ex.ToString())
            End Try
    
            ' subscribe to the device events
            AddHandler VSTwain1.DeviceImageAcquired, AddressOf VSTwain1_ImageAcquired
            AddHandler VSTwain1.DeviceScanCompleted, AddressOf VSTwain1_ScanCompleted
            AddHandler VSTwain1.DeviceScanFailed, AddressOf VSTwain1_ScanFailed
            AddHandler VSTwain1.DeviceScanCanceled, AddressOf VSTwain1_ScanCanceled
    
            ' acquire images asynchronously
            VSTwain1.Device_AcquireImage()
        End If
    End Sub
    
    Private Sub VSTwain1_AsyncEvent(deviceEvent As Integer, _
                                    deviceName As String, _
                                    batteryMinutes As Double, _
                                    batteryPercentage As Short, _
                                    powerSupply As Integer, _
                                    resolutionX As Single, _
                                    resolutionY As Single, _
                                    flashUsed As Integer, _
                                    automaticCapture As Double, _
                                    timeBeforeFirstCapture As Double, _
                                    timeBetweenCaptures As Double)
        Console.WriteLine("Paper is jammed.")
    End Sub
    
    Private Sub VSTwain1_ImageAcquired()
        ' get index of acquired image
        Dim imageIndex As Integer = VSTwain1.AcquiredImages_Count - 1
    
        ' save acquired image to TIFF file
        If Not VSTwain1.AcquiredImages_Save(0, "c:\test.tiff") Then
            Console.WriteLine(VSTwain1.errorString)
        End If
    End Sub
    
    Private Sub VSTwain1_ScanCompleted()
        Console.WriteLine("Scan is completed.")
    End Sub
    
    Private Sub VSTwain1_ScanFailed(errorString As String)
        Console.WriteLine(String.Format("Scan is failed: {0}.", errorString))
    End Sub
    
    Private Sub VSTwain1_ScanCanceled()
        Console.WriteLine("Scan is canceled.")
    End Sub