[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home] [volume] [parte]


Capitolo 754.   Uso dello scanner con SANE

SANE (Scanner access now easy) è un API (Application program interface), ovvero un'interfaccia uniforme per le applicazioni che vogliono comunicare con uno scanner. Oltre a questa API, SANE include una serie di gestori specifici (driver) per una grande quantità di scanner, costituiti da librerie caricate dinamicamente.

Quando si parla di SANE, dal momento che non si tratta di un programma puro e semplice, ma di un sistema di componenti integrati tra di loro, può essere necessario distinguere tra:

In questo capitolo vengono presi in considerazione principalmente gli scanner USB, mentre per le altre situazioni ci sono solo delle annotazioni superficiali. Per maggiori dettagli conviene leggere la documentazione annotata alla fine del capitolo.

Nel capitolo si fa riferimento anche a scanner raggiunti attraverso la rete. Evidentemente, per comprendere questo meccanismo occorre avere delle competenze sulle reti TCP/IP e su come si configurano queste cose in un sistema Unix comune. Si veda eventualmente il volume X.

754.1   Lucchetto

Lo scanner comune prevede un sistema meccanico per bloccare il gruppo ottico di scansione, quando questo deve essere trasportato. Questo blocco meccanico è costituito normalmente da una levetta, da una slitta, o da qualcosa di simile. Il problema è che spesso ci si dimentica di sbloccare lo scanner prima di usarlo, cosa che ovviamente impedisce di attuare le scansioni.

Figura 754.1. Due scanner sbloccati e pronti per l'uso.

Lucchetti aperti degli scanner

754.2   Schema generale

Quando si pensa a SANE bisogna dare una collocazione ai vari componenti, anche se in modo semplificato, per poter comprendere cosa si sta facendo e dove cercare i problemi quando questi si manifestano.

Figura 754.2. Schema di massima della struttura di SANE.

SANE

Nella figura si vede la nuvoletta delle librerie che costituiscono la parte terminale di SANE, che va a comunicare effettivamente con lo scanner. Queste librerie vengono gestite da un sistema dinamico di caricamento (sane-dll), con il quale comunicano i programmi frontali, come scanimage e come saned; dove saned si occupa in particolare di offrire attraverso la rete l'accesso allo scanner locale.

754.3   Configurazione

La configurazione di SANE riguarda principalmente il sistema di librerie di accesso allo scanner e si trova normalmente nella directory /etc/sane.d/. Dentro questa directory appaiono normalmente una serie di file con estensione .conf, dove la radice del nome corrisponde alla libreria particolare da prendere in considerazione. Per esempio, il file hp.conf si riferisce a un certo gruppo di scanner HP.

Oltre ai file di configurazione di una certa libreria specifica, appare sempre il file dll.conf, che riguarda la gestione complessiva di queste librerie (dynamic backend loader). Questo file consente di specificare quali librerie utilizzare e quali ignorare del tutto. Ecco un esempio che contiene un estratto del file:

# /etc/sane.d/dll.conf
# SANE dynamic backend loader configuration

net
abaton
agfafocus
apple
avision
...
...
umax
#umax_pp
umax1220u
v4l

Per quanto riguarda la possibilità di offrire l'accesso allo scanner locale attraverso la rete, occorre verificare che il file /etc/services contenga un riferimento appropriato alla porta 6566 TCP:

...
sane            6566/tcp        saned           # SANE network scanner daemon
...

Inoltre occorre verificare che il supervisore dei servizi di rete sia stato configurato in modo da avviare saned quando viene richiesta quella porta. Nel caso particolare di Inetd, si tratta di intervenire nel file /etc/inetd.conf con una riga simile a quella seguente:

...
sane  stream  tcp  nowait  saned.saned  /usr/sbin/tcpd  /usr/sbin/saned
...

Si osservi che l'avvio del programma saned con i privilegi dell'utente fittizio saned, associato al gruppo saned, come si vede nell'esempio, non è necessariamente corretto. Questo problema viene descritto meglio in un'altra sezione.

Quindi occorre valutare la configurazione del programma saned, con il file /etc/sane.d/saned.conf:

#
# saned.conf
#
127.0.0.1
192.168.0.0/16
172.16.0.0/12
10.0.0.0/8
[::1]
[fe80::]/10

L'esempio mostra l'abilitazione dell'accesso da tutti gli indirizzi IPv4 privati, compreso quello locale, dell'indirizzo IPv6 loopback e di tutti gli indirizzi IPv6 di tipo site-local.

Per poter accedere a uno scanner remoto messo a disposizione tramite il programma saned, occorre predisporre localmente il file /etc/sane.d/net.conf con l'indirizzo o il nome dell'elaboratore che ospita questo servizio:

#
# net.conf
#
192.168.1.2

Secondo questo esempio si prevede di poter accedere a uno scanner presso l'elaboratore con indirizzo IPv4 192.168.1.2.

754.4   Kernel Linux

Gli scanner sono diversi tra di loro, fondamentalmente per il tipo di connessione fisica che viene utilizzata per arrivare all'elaboratore. A seconda del tipo di collegamento, può essere necessario predisporre il kernel Linux, aggiungendo eventualmente anche i file di dispositivo appropriati.

754.4.1   Kernel Linux per scanner su porta parallela

In generale, la gestione di uno scanner che comunica soltanto attraverso una porta parallela, può essere complicata. Tuttavia, vale la pena di annotare ciò che serve almeno dal punto di vista del Kernel:

Inoltre, conviene verificare anche l'hardware della porta parallela, che dovrebbe funzionare in modalità «EPP», oppure «ECP/EPP».

Se lo scanner utilizza la porta parallela simulando una comunicazione SCSI, occorre cercare la documentazione appropriata e modificare il kernel di conseguenza.

754.4.2   Kernel Linux per scanner SCSI

Nel caso di scanner SCSI (sezione 67.2.12), oltre alla gestione specifica dell'adattatore SCSI disponibile, occorre abilitare la gestione generica, corrispondente alla voce {SCSI generic support} (CONFIG_CHR_DEV_SG). Se si compila questa funzione come modulo, lo si può poi caricare con il comando:

modprobe sg[Invio]

Tuttavia, per la gestione generica SCSI occorre disporre anche di file di dispositivo appropriati. Se il contenuto della directory /dev/ viene generato automaticamente, attraverso Devfs (obsoleto) oppure uDev, questi file di dispositivo dovrebbero apparire automaticamente; diversamente occorre verificare che ci siano ed eventualmente provvedere a crearli:

cd /dev[Invio]

./MAKEDEV sg[Invio]

Se non funziona così, occorre usare direttamente il programma mknod:

cd /dev[Invio]

mknod sg0 c 21 0[Invio]

mknod sg1 c 21 1[Invio]

...

mknod sg15 c 21 15[Invio]

mknod sg16 c 21 16[Invio]

Qualunque sia il modo con cui si ottengono i file di dispositivo, occorre poi studiare come organizzare i permessi, ma questo conviene farlo quando è stato chiarito in che modo si comporta la parte terminale di SANE (backend) che vi accede.

754.4.3   Kernel Linux per scanner USB

Fino ai kernel 2.4 è prevista la gestione di scanner USB, mentre con i kernel 2.6 questa scompare. In generale, non conviene attivare una gestione specifica dello scanner USB da parte del kernel, perché questo problema viene risolto in modo più semplice con l'uso di librerie note come Libusb. Pertanto, basta attivare le voci seguenti:

A ogni modo, oltre a quanto appena mostrato, è necessario innestare il file system virtuale usbfs, intervenendo nel file /etc/fstab:

...
none    /proc/bus/usb    usbfs   defaults         0   0
...

Così facendo, è possibile vedere apparire dei file nella directory (virtuale) /proc/bus/usb/, dei quali è bene osservare anche i permessi e la proprietà:

ls -l /proc/bus/usb[Invio]

totale 0
-rw-r--r--    1 root     root           43 2004-08-03 17:26 001
-rw-rw----    1 root     scanner        57 2004-08-03 19:22 002
-rw-rw----    1 root     scanner        57 2004-08-03 18:45 003

In questo caso, si può intuire che il file 001 si riferisce al bus USB, mentre i file 002 e 003 sono riferiti a due scanner già individuati. La cosa importante è osservare che in questo caso, gli scanner sono accessibili dagli utenti che appartengono al gruppo scanner.

Sarebbe possibile cambiare i permessi di questi file in modo da consentire l'accesso a tutti gli utenti comuni di utilizzare gli scanner relativi; tuttavia ciò non conviene, perché basta staccare e riattaccare gli scanner per perdere questa configurazione.

754.4.4   Kernel Linux per scanner IEEE 1394

Per la gestione di uno scanner IEEE 1394 (lo standard è forse più noto con il nome FireWire) è necessario abilitare l'uso di questo tipo di bus, più tutto l'hardware coinvolto:

754.5   Gruppo «scanner»

Quando l'utilizzo di SANE è già predisposto dalla propria distribuzione GNU o BSD, dovrebbe essere stato previsto il gruppo di utenti denominato scanner, con il quale si potrebbe controllare l'accesso allo scanner stesso. Basta controllare nel file /etc/group:

...
scanner:x:106:tizio,caio,sempronio,mevio,filano,martino,calpurnio
...

Quello che si vede nell'esempio è la situazione che si trova con nanoLinux, dove gli utenti tizio, caio, sempronio, mevio e filano risultano aggregati a questo gruppo.

Generalmente, l'utilità di questa procedura serve a dare i permessi adatti ai file di dispositivo; tuttavia, questo meccanismo dovrebbe funziona anche con gli scanner USB quando si utilizza Libusb.

Se però si accede attraverso la rete, i permessi di accesso ai file di dispositivo perdono di significato, in quanto si comunica direttamente con il servente saned. In pratica, per consentire l'accesso allo scanner per tutti gli utenti, conviene attivare l'accesso tramite la rete, magari anche solo localmente.

754.6   Individuazione dello scanner locale

Per poter usare uno scanner attraverso uno dei vari programmi frontali bisogna poterlo individuare. Per fare questo si usa una stringa piuttosto articolata, che ha fondamentalmente la sintassi seguente:

nome_backend:dispositivo

In pratica, prima dei due punti va messo un nome scelto tra quelli che appaiono nel file di configurazione /etc/sane.d/dll.conf; si osservi però che la scelta non è sempre ovvia. Nella seconda parte, dopo i primi due punti verticali, si indica ciò che serve a raggiungere il dispositivo, ma questa può essere piuttosto articolata. A titolo di esempio ecco come potrebbe essere individuato uno scanner Canon, Canoscan LiDE 20: plustek:libusb:001:002.

Come si comprende, in questo caso il nome associato al tipo di scanner è «plustek» e non «canon» come sarebbe stato logico aspettarsi.

Fortunatamente vengono in aiuto due metodi per cercare di localizzare lo scanner presso il proprio elaboratore: il programma diagnostico sane-find-scanner e il programma frontale scanimage usato con l'opzione -L. Le prime volte conviene agire come utente root:

sane-find-scanner[Invio]

  # No SCSI scanners found. If you expected something different, make sure that
  # you have loaded a SCSI driver for your SCSI adapter.

found USB scanner (vendor=0x04a9 [Canon], product=0x220d [CanoScan], \
  \chip=LM9832/3) at libusb:001:002 # Your USB scanner was (probably) detected. It may or may not be supported by # SANE. Try scanimage -L and read the backend's manpage. # Not checking for parallel port scanners. # Most Scanners connected to the parallel port or other proprietary ports # can't be detected by this program.

scanimage -L[Invio]

device `plustek:libusb:001:002' is a Canon N670U/N676U/LiDE20 USB \
  \flatbed scanner

Dei due programmi, il più attendibile è il primo, che però non specifica il nome da usare per lo scanner (nell'esempio è stata evidenziata l'informazione saliente, che però, in questo caso manca del prefisso plustek:).

Quando si dispone di un solo scanner locale e tutto va bene, come dagli esempi mostrati, si possono usare i vari programmi frontali senza bisogno di specificare le coordinate dello scanner.

Non è da escludere che sane-find-scanner possa trovare uno scanner che scanimage -L invece non può localizzare.

Il lavoro sul progetto SANE dispone di una discreta quantità di librerie per l'accesso a vari tipi e modelli di scanner. Tuttavia, esistono anche delle librerie imperfette per l'accesso ad altri scanner che altrimenti sarebbero inutilizzabili con SANE. Quando si vuole utilizzare uno scanner per il quale servono queste librerie aggiuntive, è molto probabile che il programma sane-find-scanner o che scanimage -L diano informazioni errate o che non trovino proprio lo scanner.

L'esempio seguente è ottenuto collegando due scanner; uno dei quali è il modello HP Scanjet 4200C, a cui si accede con librerie non standard:

sane-find-scanner[Invio]

  # No SCSI scanners found. If you expected something different, make sure that
  # you have loaded a SCSI driver for your SCSI adapter.

found USB scanner (vendor=0x03f0, product=0x0105) at libusb:001:003
found USB scanner (vendor=0x04a9 [Canon], product=0x220d [CanoScan], \
  \chip=LM9832/3) at libusb:001:002 # Your USB scanner was (probably) detected. It may or may not be supported by # SANE. Try scanimage -L and read the backend's manpage. # Not checking for parallel port scanners. # Most Scanners connected to the parallel port or other proprietary ports # can't be detected by this program.

scanimage -L[Invio]

device `plustek:libusb:001:002' is a Canon N670U/N676U/LiDE20 USB \
  \flatbed scanner

Dall'esempio risulta chiaro che scanimage -L non vede lo scanner HP Scanjet 4200C. In questo caso particolare, dalla documentazione originale relativa alla libreria che si occupa di questo scanner, si capisce che le coordinate corrette per individuarlo sono hp4200:libusb:001:003.

754.7   Permessi

Una volta verificato che è possibile raggiungere uno scanner locale utilizzando l'utenza privilegiata root, è necessario stabilire se sia possibile farlo anche con dei privilegi «normali». Da quanto già visto in precedenza, gli utenti associati al gruppo scanner (o ad altro gruppo analogo se il proprio sistema operativo è organizzato diversamente) dovrebbero avere accesso. Si può fare una verifica, ma per questo occorre un utente a cui sia associato esattamente questo gruppo, magari si può creare proprio un utente fittizio con lo stesso nome nel file /etc/passwd:

...
scanner:x:106:106:Scanner test user:/:/bin/false
...

Questo esempio è coerente con un altro esempio mostrato a proposito del file /etc/group, dove il numero GID 106 corrisponde proprio al gruppo scanner.

Per fare la prova, si usa su per acquisire i privilegi di questo utente fittizio, quindi si tenta di usare scanimage:

su -s /bin/sh - scanner[Invio]

scanimage -L[Invio]

Se si ottiene lo stesso elenco che si otterrebbe con i privilegi dell'utente root, si accerta così che l'utente scanner, appartenente al gruppo scanner può accedere.

Se non funziona occorre risalire ai file che vengono utilizzati: possono essere file di dispositivo o file contenuti all'interno di /proc/bus/usb/; lì occorre verificare qual è il gruppo e quali permessi ha il gruppo.

In precedenza è stata mostrata la configurazione relativa al supervisore dei servizi di rete per il controllo del programma saned, che ha lo scopo di offrire l'accesso allo scanner attraverso la rete. In un esempio si vede che il programma verrebbe avviato con i privilegi dell'utente fittizio saned, associato al gruppo saned:

...
sane  stream  tcp  nowait  saned.saned  /usr/sbin/tcpd  /usr/sbin/saned
...

Per sapere se saned può accedere realmente allo scanner locale, si può fare lo stesso tipo di prova:

su -s /bin/sh - saned[Invio]

scanimage -L[Invio]

Probabilmente, se ha funzionato l'accesso come utente e gruppo scanner, non funziona in questo altro modo; pertanto conviene ritoccare la configurazione del supervisore dei servizi di rete nel modo più appropriato; per esempio così:

...
sane  stream  tcp  nowait  scanner.scanner  /usr/sbin/tcpd  /usr/sbin/saned
...

754.8   Raggiungere uno scanner attraverso la rete

Per raggiungere uno scanner disponibile attraverso la rete, presso un elaboratore in cui è stato configurato saned, come già descritto in questo capitolo, occorre indicare una stringa simile a quanto già descritto a proposito dell'accesso agli scanner locali:

net:nodo:nome_backend_remoto:dispositivo_remoto

Per esempio, lo scanner Canon già descritto in precedenza, potrebbe essere raggiunto presso l'elaboratore all'indirizzo IPv4 192.168.1.2 con la stringa seguente:

net:192.168.1.2:plustek:libusb:001:002

Tuttavia, bisogna ricordare di configurare presso l'elaboratore remoto il file /etc/sane.d/saned.conf e il file appropriato per il supervisore dei servizi di rete (di solito /etc/inetd.conf); inoltre, localmente occorre compilare il file /etc/sane.d/net.conf con l'elenco dei nodi di rete remoti che consentono l'accesso allo scanner:

#
# /etc/sane.d/net.conf
#
192.168.1.2
192.168.1.3
192.168.1.4

Naturalmente, nel file /etc/sane.d/net.conf si possono indicare gli elaboratori anche per nome, purché il sistema operativo sia in grado di tradurre correttamente tali nomi in indirizzi IP.

Nel caso sia necessario utilizzare indirizzi IPv6, questi vanno indicati racchiudendoli tra parentesi quadre, come già mostrato a proposito del file /etc/sane.d/saned.conf.

Una volta predisposto tutto correttamente, quando di esegue il comando scanimage -L si ottiene l'elenco completo degli scanner locali e di quelli remoti previsti, purché accessibili effettivamente:

scanimage -L[Invio]

device `net:192.168.1.2:plustek:libusb:001:002' is a Canon \
  \N670U/N676U/LiDE20 USB flatbed scanner

Si osservi che se si vuole consentire l'accesso allo scanner locale a tutti gli utenti, senza bisogno di associare gli utenti a un gruppo particolare, si può predisporre il demone saned con la configurazione necessaria e il file /etc/sane.d/net.conf con il nome o l'indirizzo dell'elaboratore locale:

#
# /etc/sane.d/net.conf
#
127.0.0.1
...

L'accesso a uno scanner remoto potrebbe essere limitato ad alcuni utenti che devono fornire una parola d'ordine, attraverso la configurazione del file /etc/sane.d/saned.users, ma questo procedimento non viene descritto e può essere approfondito leggendo la pagina di manuale saned(8).

754.8.1   Problemi tra cliente e servente

Quando si cerca di contattare uno scanner remoto, può capitare di non riuscirci, anche se apparentemente è tutto a posto. Per scoprire cosa succede, si possono fare due verifiche: una dal lato cliente, ovvero dalla parte di scanimage; una dal lato servente, ovvero dalla parte di saned. Per cominciare si può avviare scanimage predisponendo una variabile di ambiente appropriata; in un colpo solo si può usare questo comando:

SANE_DEBUG_NET=128 scanimage -L[Invio]

Ecco cosa si potrebbe ottenere dallo standard error quando tutto va bene:

[sanei_debug] Setting debug level of net to 128.
[net] sane_init: authorize = 0x8049280, version_code = 0xbfffe85c
[net] sane_init: SANE net backend version 1.0.12 (AF-indep+IPv6) \
  \from sane-backends 1.0.14 [net] sane_init: Client has little endian byte order [net] sane_init: searching for config file [net] sane_init: trying to add 192.168.1.2 [net] add_device: adding backend 192.168.1.2 [net] add_device: backend 192.168.1.2 added [net] sane_init: done reading config [net] sane_init: evaluating environment variable SANE_NET_HOSTS [net] sane_init: done [net] sane_get_devices: local_only = 0 [net] connect_dev: trying to connect to 192.168.1.2 [net] connect_dev: [0] connection succeeded (IPv4) [net] connect_dev: sanei_w_init [net] connect_dev: net_init (user=tizio, local version=1.0.3) [net] connect_dev: freeing init reply (status=Success, remote version=1.0.3) [net] connect_dev: done [net] sane_get_devices: got 192.168.1.2:plustek:libusb:001:002 [net] sane_get_devices: finished (1 devices) [net] sane_exit: exiting [net] sane_exit: closing dev 0x808bd70, ctl=21 [net] sane_exit: finished.

Se invece le cose vanno male e la controparte non risponde, si può provare dal lato servente, avviando saned al di fuori del controllo del supervisore dei servizi di rete (bisogna modificare temporaneamente la configurazione del supervisore dei servizi di rete in modo che non intercetti le chiamate alla porta 6 566):

su -s /bin/sh - scanner[Invio]

saned -d128[Invio]

In questo modo, saned resta in ascolto per una sola chiamata, alla quale risponde, quindi termina di funzionare. Ecco come potrebbe essere il risultato che si ottiene dallo standard error quando tutto va bene:

[saned] main: starting debug mode (level 128)
[saned] main: trying to get port for service `sane' (getaddrinfo)
[saned] main: [0] socket () using IPv6
[saned] main: [0] setsockopt ()
[saned] main: [0] bind () to port 6566
[saned] main: [0] listen ()
[saned] main: [1] socket () using IPv4
[saned] main: [1] setsockopt ()
[saned] main: [1] bind () to port 6566
[saned] main: [1] bind failed: Address already in use
[saned] main: waiting for control connection
[saned] saned (AF-indep+IPv6) from sane-backends 1.0.14 ready
[saned] check_host: detected an IPv4-mapped address
[saned] check_host: access by remote host: ::ffff:192.168.1.1
[saned] check_host: remote host is not IN_LOOPBACK nor IN6_LOOPBACK
[saned] check_host: local hostname: nanohost
[saned] check_host: local hostname(s) (from DNS): 127.0.0.1
[saned] check_host: local hostname(s) (from DNS): 127.0.0.1
[saned] check_host: local hostname(s) (from DNS): 127.0.0.1
[saned] check_host: remote host doesn't have same addr as local
[saned] check_host: opening config file: /etc/hosts.equiv
[saned] check_host: can't open config file: /etc/hosts.equiv \
  \(No such file or directory) [saned] check_host: opening config file: saned.conf [saned] check_host: config file line: `#' [saned] check_host: config file line: `# saned.conf' [saned] check_host: config file line: `#' [saned] check_host: config file line: `' [saned] check_host: config file line: `192.168.0.0/16' [saned] check_host: subnet with base IP = 192.168.0.0, CIDR netmask = 16 [saned] check_host: config file line: `172.16.0.0/12' [saned] check_host: subnet with base IP = 172.16.0.0, CIDR netmask = 12 [saned] check_host: access granted from IP address 192.168.1.1 \
  \(in subnet 192.168.1.1/16) [saned] init: access granted [saned] init: access granted to tizio@::ffff:192.168.1.1 [saned] process_request: waiting for request [saned] process_request: got request 1 [saned] process_request: waiting for request [saned] process_request: got request 10 [saned] quit: exiting

754.9   Utilizzo di «scanimage»

Il programma scanimage (3) è il programma frontale più importante per l'utilizzo dello scanner attraverso SANE:

scanimage [opzioni_generali] [opzioni_dello_scanner]

Il programma prevede un gruppo di opzioni generali e un altro gruppo di opzioni particolari che dipende dalle caratteristiche della libreria usata per comunicare con lo scanner. Si ottiene l'elenco di queste opzioni aggiuntive con l'ausilio dell'opzione -h.

Tabella 754.24. Alcune opzioni generali.

Opzione Descrizione
-L
--list-devices
Questa opzione viene usata da sola per ottenere l'elenco degli scanner che il programma è in grado di individuare automaticamente.
-d dispositivo
--device-name dispositivo
Serve a specificare a quale scanner ci si vuole rivolgere. L'argomento dell'opzione è la stringa di riconoscimento dello scanner, come già mostrato, per esempio plustek:libusb:001:002.
--format pnm|tiff
Serve a specificare il formato del file da creare; se non si utilizza questa opzione, si ottiene un formato PNM.
-n
--dont-scan
Simula l'operazione, senza eseguirla veramente.
-T
--test
Esegue una serie di verifiche per accertare la compatibilità di funzionamento.
-h
--help
Mostra una guida sintetica all'uso del programma, completa delle opzioni specifiche degli scanner individuati automaticamente.

La scansione di un'immagine attraverso scanimage viene ottenuta dallo standard output di questo. Segue la descrizione di alcuni esempi.

754.10   Altri programmi frontali

Esiste una grande varietà di programmi frontali per SANE, che utilizzano la grafica X. Il primo di questi che vale la pena di conoscere è Xscanimage, (4) che, come suggerisce il nome, è il fratello grafico di scanimage, anche se non dispone delle stesse opzioni:

xscanimage [opzioni] [dispositivo]

Come si vede dalla sintassi, l'indicazione della stringa dello scanner, se fornita, avviene alla fine della riga di comando, senza un'opzione che la introduca.

Figura 754.25. Xscanimage con la finestra dell'anteprima aperta, dove è stato selezionato un rettangolo da scandire.

Xscanimage

Xsane(5) è un altro programma, un po' più sofisticato, per il controllo della scansione delle immagini:

xsane [opzioni] [dispositivo]

Figura 754.26. Xsane con la finestra dell'anteprima aperta, dove è stato selezionato un rettangolo da scandire.

Xsane

Il limite di alcuni programmi frontali per SANE sta nell'impossibilità di specificare espressamente l'uso di un certo scanner, cosa che diventa indispensabile quando il sistema di autorilevamento non funziona come dovrebbe. Molti programmi di disegno, come Gimp per fare un esempio, consentono l'acquisizione delle immagini da scanner, con l'ausilio di uno dei vari programmi frontali comuni; purtroppo, in questo modo è praticamente obbligatorio affidarsi al sistema di autorilevamento dello scanner.

754.11   Pagine di manuale

SANE è accompagnato generalmente da una serie di pagine di manuale specifiche per ogni contesto. La tabella successiva riepiloga alcune di queste pagine; per avere l'elenco completo basta usare il comando:

apropos sane[Invio]

Tabella 754.27. Alcune pagine di manuale di SANE.

Pagina di manuale Descrizione
sane-dll(5) Descrive la configurazione generale del sistema di librerie dinamiche.
sane-find-scanner(1) Descrive l'utilizzo e il funzionamento del programma sane-find-scanner.
sane-usb(5) Contiene delle informazioni utili all'utilizzo di uno scanner USB.
sane-scsi(5) Contiene delle informazioni utili all'utilizzo di uno scanner SCSI.
saned(8) Descrive il funzionamento e l'utilizzo di saned per consentire l'accesso remoto allo scanner locale.
sane-...(5) Le pagine di manuale il cui nome inizia per sane- e termina con il nome usato per individuare la gestione di un certo gruppo di scanner (backend), descrivono le caratteristiche particolari della libreria relativa.
sane-net(5) Descrive la modalità di accesso a uno scanner remoto.

754.12   Riferimenti


1) SANE API and network protocol   dominio pubblico

2) SANE backend libraries   GNU GPL con alcune eccezioni

3) Scanimage   GNU GPL

4) Xscanimage   GNU GPL

5) Xscanimage   GNU GPL


Appunti di informatica libera 2008 --- Copyright © 2000-2008 Daniele Giacomini -- <appunti2 (ad) gmail·com>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome uso_dello_scanner_con_sane.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home]

Valid ISO-HTML!

CSS validator!

Gjlg Metamotore e Web Directory