Condividi tramite


Aggiungere il supporto del feeder di documenti

Importante

Questo articolo contiene informazioni applicabili ai sistemi operativi Windows obsoleti.

Un feeder di documenti è un'unità collegata o incorporata in uno scanner che inserisce automaticamente documenti cartacei in una posizione da analizzare. 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 nell'elemento figlio:

Se un dispositivo ha un letto piatto, un feeder di documenti e un duplex, il driver segnala la proprietà WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES come 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 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 dispone di un feeder di documenti, deve supportare le proprietà del feeder del documento.

Acquisizione di dati da un feeder di documenti

Esistono alcune modifiche che devono essere apportate nell'implementazione del metodo IWiaMiniDrv::d rvAcquireItemData quando lo scanner acquisisce immagini da un feeder di documenti.

  1. Un'applicazione legge la proprietà WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES per determinare se lo scanner supporta l'analisi usando il feeder di documenti.

  2. Un'applicazione legge la proprietà WIA_DPS_DOCUMENT_HANDLING_SELECT per determinare se lo scanner è configurato per l'analisi usando il feeder di documenti.

  3. Un'applicazione determina se è presente un foglio nel feeder di documenti leggendo WIA_DPS_DOCUMENT_HANDLING_STATUS. Se nel feeder non è presente alcun foglio, 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.

  4. Controllare la proprietà WIA_DPS_PAGES per determinare il comportamento di analisi. Se questa proprietà è zero, analizzare 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.

  5. 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.
    }
    
  6. 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. Questa operazione viene eseguita chiamando la funzione dell'utilità del 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

  1. Se lo scanner non è in grado di analizzare la prima pagina, restituisce immediatamente un codice di errore. Ciò include marmellate di carta e quando lo scanner esaurisce la carta.

  2. Se lo scanner esegue correttamente l'analisi della prima pagina ed è in grado di continuare l'analisi ma ha esaurito la carta, restituire il codice di operazione riuscita WIA_STATUS_END_OF_MEDIA. Ciò segnala all'applicazione che il trasferimento ha avuto esito positivo, ma lo scanner ha esaurito la carta. Alcune applicazioni rispondono alle WIA_ERROR_PAPER_EMPTY nello stesso modo in cui WIA_STATUS_END_OF_MEDIA.

  3. 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. Le analisi successive devono restituire immediatamente un codice di errore fino a quando lo scanner non è stato recuperato correttamente dall'errore.

  4. 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

  1. Tutte le regole per cui WIA_DPS_PAGES è zero si applicano.

  2. Se lo scanner esaurisce la carta prima dell'analisi del 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 di WIA_STATUS_END_OF_MEDIA.