Private VSTwain1 As New VintaSoftTwain()
''' <summary>
''' Scans images asynchronously.
''' </summary>
Private Sub StartScan()
' open the device manager
If Not VSTwain1.DeviceManager_Open() Then
Console.WriteLine(VSTwain1.errorString)
Exit Sub
End If
' select device using standard device selection dialog
VSTwain1.DeviceManager_ShowDefaultDeviceSelectionDialog()
' open the device
If Not VSTwain1.Device_Open() Then
Console.WriteLine(VSTwain1.errorString)
Exit Sub
End If
' specify that device UI must be shown
VSTwain1.Device_ShowUI = True
' set settings of TIFF encoder
VSTwain1.TiffEncoder_MultiPage = True
' 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
' if device has feeder
If VSTwain1.Device_Feeder_Present Then
' enable feeder
VSTwain1.Device_Feeder_Enabled = True
' specify that application want to acquire all pages from the feeder
VSTwain1.Device_XferCount = -1
' if pages can be scanned in duplex mode
If VSTwain1.Device_Feeder_DuplexMode <> DUPLEXMODE.DUPLEXMODE_NoDuplex Then
' enable duplex scanning
VSTwain1.Device_Feeder_DuplexEnabled = True
End If
' if feeder can detect paper
If VSTwain1.Device_Feeder_PaperDetectable Then
' if feeder is loaded
If VSTwain1.Device_Feeder_Loaded Then
' acquire images asynchronously
VSTwain1.Device_AcquireImage()
End If
Else
' acquire images asynchronously
VSTwain1.Device_AcquireImage()
End If
End If
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(imageIndex, "test.tif") 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