WIA 2.0 Дуплекс собственности - PullRequest
4 голосов
/ 27 октября 2010

Я разрабатываю приложение на C # для использования библиотеки WIA 2.0. На данный момент я могу использовать большинство функций, таких как АПД (автоподатчик документов), фильтры и многое другое.

Теперь мне нужно использовать дуплексер моего сканера (fujitsu).

Я пытаюсь установить для свойства сканера WIA_DPS_DOCUMENT_HANDLING_SELECT значение DUPLEX. Смотрите код ниже:

  try
        {
            bool hasMorePages = false;
            //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;
            }

            object obj = new object();
            obj = (WIA_DPS_DOCUMENT_HANDLING_SELECT.DUPLEX);
            documentHandlingSelect.set_Value(ref obj);

            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);
                    if (hasMorePages)
                    {
                        // set the property to use FEEDER and DUPLEX (this result in the value of 5 in the property)
                        object obj = new object();
                        obj = (WIA_DPS_DOCUMENT_HANDLING_SELECT.FEEDER | WIA_DPS_DOCUMENT_HANDLING_SELECT.DUPLEX);
                        documentHandlingSelect.set_Value(ref obj);
                    }
                }
            }
            return hasMorePages;

Этот код компилируется нормально, но я не могу получить два изображения при выполнении этой строки. Извлекает только фронт:

imgFile = (ImageFile)wiaCommonDialog.ShowTransfer(item, format.Guid.ToString("B")/* wiaFormatJPEG*/, false);

Я прочитал во многих темах, а также в документации, что можно получить дочерние объекты из элемента на сканере, но в этой коллекции только один элемент.

Пожалуйста, кто-нибудь, помогите мне!

Спасибо

1 Ответ

4 голосов
/ 28 сентября 2011

Я прочитал, что когда вы передаете первое изображение, второе изображение доступно по той же ссылке, поэтому вы просто вызываете первую строку кода дважды. Это кажется немного странным, но работает с одним из моих дуплексных сканеров.

например.

imgFile = (ImageFile)wiaCommonDialog.ShowTransfer(item, format.Guid.ToString("B")/* wiaFormatJPEG*/, false);
imgFile2 = (ImageFile)wiaCommonDialog.ShowTransfer(item, format.Guid.ToString("B")/* wiaFormatJPEG*/, false);

Это может сработать для вас. У меня также возникают проблемы с дуплексным сканированием, но мне удалось заставить его работать с одним из моих сканеров.

...