Aggiungere il supporto dell'alimentatore di documenti
Importante
Questo articolo contiene informazioni applicabili ai sistemi operativi Windows obsoleti.
Un alimentatore di documenti è un'unità collegata o incorporata in uno scanner che inserisce automaticamente i documenti cartacei in una posizione per essere scansionati. Per uno scanner con un feeder di documenti, la funzionalità viene esposta e controllata tramite l'aggiunta delle proprietà contenute nell'elenco seguente. Per Windows Me e Windows XP, le proprietà seguenti si trovano nell'elemento radice:
Per Windows Me e Windows XP, le seguenti proprietà facoltative del feeder di documenti si trovano nel sottocomponente:
Se un dispositivo ha un piano di lettura, un alimentatore di documenti e un'unità duplex, il driver segnala la proprietà WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES con FEED | FLAT | DUP
. Assicurarsi che i valori validi per WIA_DPS_DOCUMENT_HANDLING_SELECT siano impostati correttamente.
Si supponga, ad esempio, che un'applicazione intenda eseguire un'analisi duplex di tre pagine dal feeder di documenti. A tale scopo, l'applicazione imposta la proprietà WIA_DPS_DOCUMENT_HANDLING_SELECT su (FEEDER | DUPLEX) e imposta la proprietà WIA_DPS_PAGES su 3. Se l'applicazione intende prima analizzare la parte anteriore della pagina, deve impostare la proprietà WIA_DPS_DOCUMENT_HANDLING_SELECT su FEEDER | DUPLEX | FRONT_FIRST
. Al termine, l'applicazione deve passare all'elemento figlio da cui deve richiedere un trasferimento dei dati. Il minidriver segnala la parte anteriore della prima pagina nel feeder come pagina 1, la parte posteriore della pagina come pagina 2 e la parte anteriore della seconda pagina nel feeder come pagina 3.
È importante ricordare che se il dispositivo ha un alimentatore di documenti, deve supportare le proprietà dell'alimentatore di documenti.
Acquisizione di dati da un feeder di documenti
Nell'implementazione del metodo IWiaMiniDrv::d rvAcquireItemData quando lo scanner acquisisce immagini da un feeder di documenti, è necessario apportare alcune modifiche.
Un'applicazione legge la proprietà WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES per determinare se lo scanner supporta la scansione usando l'alimentatore di documenti.
Un'applicazione legge la proprietà WIA_DPS_DOCUMENT_HANDLING_SELECT per determinare se lo scanner è configurato per l'analisi usando il feeder di documenti.
Un'applicazione determina se nel feeder del documento è presente una carta leggendo WIA_DPS_DOCUMENT_HANDLING_STATUS. Se non è presente alcun foglio nel feeder, impostare il WIA_DPS_DOCUMENT_HANDLING_STATUS sul codice di stato appropriato e restituire WIA_ERROR_PAPER_EMPTY da IWiaMiniDrv::d rvAcquireItemData immediatamente dopo l'acquisizione.
Controllare la proprietà WIA_DPS_PAGES per determinare il comportamento di scansione. Se questa proprietà è zero, analizza tutte le pagine fino a quando il feeder non è vuoto. Se è positivo, analizzare solo il numero di pagine indicate dal valore contenuto nella proprietà WIA_DPS_PAGES.
Analizzare il numero di pagine richiesto controllando un ciclo, analizzando continuamente e inviando dati (una pagina alla volta) all'applicazione WIA chiamando il metodo IWiaMiniDrvCallBack::MiniDrvCallback. Nell'esempio di codice seguente viene illustrato il funzionamento di questa operazione:
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. }
Se WIA_IPA_TYMED è impostato su TYMED_CALLBACK o TYMED_MULTIPAGE_CALLBACK, è necessario inviare un messaggio aggiuntivo (IT_MSG_NEW_PAGE) dopo l'analisi di una pagina e prima dell'analisi successiva. Questo viene fatto chiamando la funzione dell'utilità di servizio WIA wiasSendEndOfPage.
Il numero di pagine restituite da un driver del feeder di documenti dipende dall'impostazione della proprietà WIA_DPS_PAGES.
Se WIA_DPS_PAGES è zero
Se lo scanner non è in grado di analizzare la prima pagina, restituisce immediatamente un codice di errore. Questo include gli inceppamenti della carta e l'esaurimento della carta nello scanner.
Se lo scanner esegue correttamente la scansione della prima pagina ed è in grado di continuare a scansionare ma ha esaurito la carta, restituire il codice di esito positivo WIA_STATUS_END_OF_MEDIA. L'applicazione segnala che il trasferimento è avvenuto con successo, ma lo scanner ha esaurito la carta. Alcune applicazioni rispondono a WIA_ERROR_PAPER_EMPTY nello stesso modo in cui fanno a WIA_STATUS_END_OF_MEDIA.
Se lo scanner analizza correttamente la prima pagina ed è in grado di continuare l'analisi ma rileva un errore che non causa la perdita di dati, restituire WIA_STATUS_END_OF_MEDIA. In questo modo l'applicazione può recuperare e salvare le pagine analizzate prima che si sia verificato l'errore. Tutte le analisi successive devono restituire immediatamente un codice di errore fino a quando lo scanner non è stato ripristinato correttamente dall'errore.
Se lo scanner analizza correttamente la prima pagina ed è in grado di continuare l'analisi, ma rileva un errore che causa la perdita di dati, restituisce immediatamente un codice di errore.
Se WIA_DPS_PAGES è positivo
Si applicano tutte le regole per le quali WIA_DPS_PAGES è zero.
Se lo scanner esaurisce la carta prima che venga analizzato il numero di pagine richiesto, restituire WIA_STATUS_END_OF_MEDIA. Ciò consente all'applicazione di chiudere la sessione di analisi, mantenendo così il numero di pagine già analizzate correttamente. Alcune applicazioni rispondono a WIA_ERROR_PAPER_EMPTY allo stesso modo in cui farebbero a WIA_STATUS_END_OF_MEDIA.