Сканирование нескольких страниц через устройство подачи документов с помощью WIAC#

Место общения программистов C#
Ответить
Anonymous
 Сканирование нескольких страниц через устройство подачи документов с помощью WIA

Сообщение Anonymous »

После некоторых примеров и проверки способов исправления этой ошибки с другими вопросами, опубликованными здесь, возникла проблема с работой, пока ничего не помогло.
Он сканирует первую страницу и определяет, когда код возвращается к тому месту, где он должен получить второе изображение, он всегда выдает исключение, сообщающее, что устройство занято. Можно ли как-нибудь приостановить или остановить сканирование в устройстве подачи документов после каждой страницы, чтобы предотвратить это исключение?

Код: Выделить всё

string deviceid;
List images = new List();

CommonDialogClass dlg = new CommonDialogClass();
Device d = dlg.ShowSelectDevice(WiaDeviceType.UnspecifiedDeviceType, true, false);
if (d != null)
{
deviceid = d.DeviceID;
}
else
{
//no scanner chosen
return;
}

bool hasMorePages = true;
int x = 0;
int numPages = 0;
while (hasMorePages)
{
DeviceManager manager = new DeviceManagerClass();
Device WiaDev = null;
foreach (DeviceInfo info in manager.DeviceInfos)
{
if (info.DeviceID == deviceid)
{
WIA.Properties infoprop = null;
infoprop = info.Properties;
WiaDev = info.Connect();
break;
}
}
SelectDeviceDocumentHandling(WiaDev, DeviceDocumentHandling.Feeder);
SetDeviceProperty(WiaDev, DEVICE_PROPERTY_PAGES_ID, 1);

ImageFile img = null;
Item Item = WiaDev.Items[1];
try
{
WIA.CommonDialog WiaCommonDialog = new WIA.CommonDialog();
img = (ImageFile)WiaCommonDialog.ShowTransfer(Item, FormatID.wiaFormatPNG, false);
images.Add(img);
numPages++;
img = null;
}
catch (Exception ex) //ex.Message "0x80210003" means no documents found in feeder
{
if (ex.Message.Contains("0x80210015")) MessageBox.Show("Could not connect to scanner", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
else if (ex.Message.Contains("0x80210006")) MessageBox.Show("Device is busy", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); //where I get exception on second page each time
else if (ex.Message.Contains("0x80210003")) MessageBox.Show("No documents found in document feeder", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
else MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
Item = null;
//determine if there are any more pages waiting
Property documentHandlingSelect = null;
Property documentHandlingStatus = null;

foreach (Property prop in WiaDev.Properties)
{
if (prop.PropertyID == WIA_PROPERTIES.WIA_DPS_DOCUMENT_HANDLING_SELECT)
documentHandlingSelect = prop;
if (prop.PropertyID == WIA_PROPERTIES.WIA_DPS_DOCUMENT_HANDLING_STATUS)
documentHandlingStatus = prop;
}
hasMorePages = false; //assume there are no more pages
if (documentHandlingSelect != null)
//may not exist on flatbed scanner but required for feeder
{
//check for document feeder
if ((Convert.ToUInt32(documentHandlingSelect.get_Value()) & WIA_DPS_DOCUMENT_HANDLING_SELECT.FEEDER) != 0)
{
hasMorePages = ((Convert.ToUInt32(documentHandlingStatus.get_Value()) & WIA_DPS_DOCUMENT_HANDLING_STATUS.FEED_READY) != 0);
}
}
x++;
}
}
Я безуспешно пробовал решения из следующего поста, а также много искал в Интернете:
Сканирование с помощью сканера автоматической подачи WIA не дает результата на второй странице
p>
Интересно, может ли это быть проблемой и с моим конкретным сканером? Я работаю дома, но смогу протестировать рабочий сканер, когда вернусь в офис на следующей неделе.

Подробнее здесь: https://stackoverflow.com/questions/633 ... r-with-wia
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»