Поделиться через


Добавление поддержки средства подачи документов

Важно!

Эта статья содержит сведения, применимые к устаревшим операционным системам Windows.

Средство подачи документов — это блок, подключенный к сканеру или встроенный в него, который автоматически передает бумажные документы в положение для сканирования. Для средства проверки с поданным документом функциональные возможности предоставляются и управляются с помощью добавления свойств, содержащихся в следующем списке. Для Windows Me и Windows XP в корневом элементе находятся следующие свойства:

Для Windows Me и Windows XP следующие необязательные свойства средства подачи документов находятся в дочернем элементе:

Если устройство имеет планшет, устройство подачи документов и дуплексер, драйвер сообщает свойство WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES как FEED | FLAT | DUP. Убедитесь, что допустимые значения для WIA_DPS_DOCUMENT_HANDLING_SELECT заданы правильно.

Например, предположим, что приложение намерено выполнить дуплексное сканирование трех страниц из средства подачи документов. Для этого приложение задает свойству WIA_DPS_DOCUMENT_HANDLING_SELECT значение (FEEDER | DUPLEX) и задает для свойства WIA_DPS_PAGES значение 3. Если приложение намерено сначала сканировать переднюю часть страницы, оно должно присвоить свойству WIA_DPS_DOCUMENT_HANDLING_SELECT значение FEEDER | DUPLEX | FRONT_FIRST. После этого приложение должно перейти к дочернему элементу, из которого оно должно запросить передачу данных. Мини-накопитель сообщает о начале первой страницы в канале в виде первой страницы, задней части этой страницы в виде второй страницы и передней части второй страницы в качестве третьей страницы.

Важно помнить, что если устройство имеет средство подачи документов, оно должно поддерживать свойства средства подачи документов.

Получение данных из средства подачи документов

Существует несколько изменений, которые необходимо изменить в реализации метода IWiaMiniDrv::d rvAcquireItemData , когда сканер получает изображения из средства подачи документов.

  1. Приложение считывает свойство WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES, чтобы определить, поддерживает ли сканер сканирование с помощью средства подачи документов.

  2. Приложение считывает свойство WIA_DPS_DOCUMENT_HANDLING_SELECT, чтобы определить, настроен ли сканер для сканирования с помощью средства подачи документов.

  3. Приложение определяет, есть ли в канале документов бумага, считывая WIA_DPS_DOCUMENT_HANDLING_STATUS. Если в средстве подачи нет бумаги, задайте для WIA_DPS_DOCUMENT_HANDLING_STATUS правильный код состояния и верните WIA_ERROR_PAPER_EMPTY из IWiaMiniDrv::d rvAcquireItemData сразу после приобретения.

  4. Проверьте свойство WIA_DPS_PAGES, чтобы определить поведение сканирования. Если это свойство равно нулю, сканируйте все страницы, пока средство подачи не пусто. Если это положительное значение, сканируйте только количество страниц, указанное значением, содержащимся в свойстве WIA_DPS_PAGES.

  5. Сканируйте запрошенное количество страниц, управляя циклом, постоянно сканируя и отправляя данные (по одной странице за раз) в приложение WIA путем вызова метода IWiaMiniDrvCallBack::MiniDrvCallback . В следующем примере кода показано, как это может работать:

    for(int x=1; x=Pagecount; x++)
    {
        \\ Tell scanner to scan an image.
        \\ Receive image data from scanner.
        \\ Send the just-scanned image to the registered application.
    }
    
  6. Если для WIA_IPA_TYMED задано значение TYMED_CALLBACK или TYMED_MULTIPAGE_CALLBACK, то после сканирования одной страницы и перед следующей необходимо отправить дополнительное сообщение (IT_MSG_NEW_PAGE). Для этого вызывается служебная служебная функция wiaSendOfPage .

Количество страниц, возвращаемых драйвером средства подачи документов, зависит от значения свойства WIA_DPS_PAGES.

Если WIA_DPS_PAGES равно нулю

  1. Если сканеру не удается проверить первую страницу, немедленно верните код ошибки. Это включает в себя застряния бумаги и когда сканер заканчивается из бумаги.

  2. Если средство проверки успешно сканирует первую страницу и может продолжить сканирование, но не на бумаге, верните код успешного выполнения WIA_STATUS_END_OF_MEDIA. Это сигнализирует приложению о том, что передача прошла успешно, но на сканере не было бумаги. Некоторые приложения реагируют на WIA_ERROR_PAPER_EMPTY так же, как и на WIA_STATUS_END_OF_MEDIA.

  3. Если средство проверки успешно сканирует первую страницу и может продолжить сканирование, но обнаруживает ошибку, которая не приводит к потере данных, верните WIA_STATUS_END_OF_MEDIA. Это позволяет приложению восстановить и сохранить все страницы, проверенные до возникновения ошибки. Все последующие проверки должны немедленно возвращать код ошибки до тех пор, пока средство проверки не будет правильно восстановлено после сбоя.

  4. Если средство проверки успешно сканирует первую страницу и может продолжить сканирование, но обнаруживает ошибку, которая приводит к потере данных, немедленно верните код ошибки.

Если WIA_DPS_PAGES является положительным

  1. Применяются все правила, для которых WIA_DPS_PAGES равно нулю.

  2. Если на сканере заканчивается бумага до сканирования запрошенного количества страниц, вернитесь WIA_STATUS_END_OF_MEDIA. Это позволяет приложению закрыть сеанс сканирования, сохраняя таким образом количество уже отсканированных страниц. Некоторые приложения реагируют на WIA_ERROR_PAPER_EMPTY так же, как и на WIA_STATUS_END_OF_MEDIA.