Я новичок в WIA. И меня попросили сделать сканирование службы сканирования быстрее и дуплекс. Моя текущая служба сканирует одну страницу, затем помещает ее в pdf и т. Д., Пока не будет менее 20 страниц (этот номер - просто костыль, использовавшийся до меня, будет рад, если кто-то объяснит, как получить «если там есть бумага»)переменная). Я начал копать и нашел документы на MSDN, описывающие свойства, и после того, как нашел этот пост, описывающий дуплексный саннинг, но с таинственным 5 в наборе. После того, как я нашел это и выяснил, что мне нужно, чтобы WIA_DPS_DOCUMENT_HANDLING_SELECT установить в 0x205 (FEEDER + DUPLEX + AUTO_ADVANCE). Поэтому я попытался настроить их следующим образом:
private static void SetProperty(Property property, int value)
{
IProperty x = (IProperty)property;
Object val = value;
x.set_Value(ref val);
}
... некоторый код ...
foreach (Property prop in device.Properties)
{
//LOGGER.Warn(prop.Name);
//LOGGER.Warn(prop.PropertyID);
switch ((Int32)prop.PropertyID)
{
// Document Handling Select
case 3088:
SetProperty(prop, 517);
break;
// Pages
case 3096:
SetProperty(prop, 1);
break;
}
}
И у меня это не сработало. .. Он просто застрял на настройке ... Может кто-нибудь объяснить, как настроить реквизиты AUTO_ADVANCE и DUPLEX? Или, может быть, «сделать сканирование быстрее и дуплекс» нужно нечто большее, чем просто AUTO_ADVANCE и DUPLEX, и мое восприятие о них неверно? Или мне следует рассмотреть строку «ISIS / TWAIN (Windows XP / Vista / 7/8 / 8.1 / 10)» в описании сканирования и использовать другие библиотеки?
(Window 10, Canon DR-M160 ||, DR-M160& DR-M160II Драйвер для Windows)
, а также текущая функция выборки:
public List<ImageFile> FetchImageList()
{
List<ImageFile> imageList = new List<ImageFile>();
//bool hasMorePages = true;
int testcount = 0;
while (testcount >= 0)
{
testcount--;
WIA.Device device = FindDevice(_deviceId);
if (device == null)
{
LOGGER.Warn("Scanner device not found");
return null;
}
// get item
WIA.Item scanItem = device.Items[1] as WIA.Item;
LOGGER.Debug($"ScanItem: {scanItem.ItemID}");
try
{
foreach (Property prop in device.Properties)
{
//LOGGER.Warn(prop.Name);
//LOGGER.Warn(prop.PropertyID);
switch ((Int32)prop.PropertyID)
{
// Document Handling Select
case 3088:
LOGGER.Warn("here");
SetProperty(prop, 517);
LOGGER.Warn("here");
break;
// Pages
case 3096:
SetProperty(prop, 1);
break;
}
}
// scan image
WIA.ICommonDialog wiaCommonDialog = new WIA.CommonDialog();
WIA.ImageFile image = (WIA.ImageFile)scanItem.Transfer(WIA.FormatID.wiaFormatPNG);
imageList.Add(image);
LOGGER.Warn("Front");
//get back side
image = (WIA.ImageFile)scanItem.Transfer(WIA.FormatID.wiaFormatPNG);
imageList.Add(image);
LOGGER.Warn("Back");
}
catch (Exception e)
{
throw (e);
}
}
return imageList;
}