Определение замятия бумаги во время 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