How to detect paper jam when acquiring images from TWAIN device?
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.
Here is an example that demonstrates how to detect when paper is jammed when acquiring images from TWAIN device:
/// <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