Xsane

Xsane
Información sobre la plantilla
Logo Xsane.jpeg
Interfaz que proporciona acceso estandarizado a cualquier dispositivo de escaneo.
CreadorSane
Sitio web
Sitio Oficial

Scanner Access Now Easy (SANE). Interfaz de programación de aplicaciones (API) que proporciona acceso estandarizado a cualquier dispositivo de escaneo (escáner de sobremesa, escáner de mano, cámaras y vídeo cámaras, etc.). El API de SANE es de dominio público y su discusión y desarrollo está abierto a todo el mundo.

General

SANE difiere de TWAIN en que diferencia claramente los Frontends (programas de usuario) y los Backends (controladores de los escáneres) disminuyendo el tiempo de desarrollo y la duplicación de código. Mientras que el controlador TWAIN maneja tanto la Interfaz de usuario como las comunicaciones con el escáner, el controlador de SANE sólo proporciona una interfaz con el dispositivo y describe un número de "opciones" que controla cada escaneo.

Estas opciones especifican parámetros tales como la resolución de escaneo, el área de escaneo, modelo de color, etc. Cada opción tiene un nombre, y la información acerca de su tipo, unidades, y rango o valores posibles (por ejemplo una lista enumerada). Por convención hay varias opciones "bien conocidas" con los que los frontends pueden interactuar con los GUI convenientes; las opciones del área de escaneo pueden establecerse arrastrando un recuadro sobre una imagen preliminar. Otras opciones pueden ser presentadas utilizando elementos GUI adecuados a su tipo; deslizadores, cajas de listado, botones, etc.

Una consecuencia de esta separación es que se implementa fácilmente el escaneado a través de la Red sin un control específico tanto por parte de los frontends como de los backends. En un Host con un escáner, se ejecuta el demonio Saned que maneja las peticiones en red. En las máquinas clientes, el backend "Net" (controlador) se conecta al servidor remoto para tomar las opciones del escáner, y realizar tanto el escaneo preliminar como el escaneo final. El demonio saned actúa como un frontend localmente, pero simplemente pasa las peticiones y los datos entre las conexiones de red y el escáner local. De igual manera, el backend "net" pasa las peticiones y los datos entre el frontend local y el host remoto.

Varios tipos de procesamiento por lotes son posibles con un mínimo de soporte necesario en el backend (controlador). Muchos escáneres soportan la utilización de alimentadores de documentos que permiten que un gran número de hojas de papel sean escaneadas de forma sucesiva. Utilizando la API de SANE, el frontend simplemente tiene que "ejecutar" el mismo conjunto de opciones para cada escaneado, controlando el alimentador de documentos entre escaneos para cargar la siguiente hoja de papel. El frontend sólo tiene que obtener el conjunto de opciones del usuario una vez.

Estructura

Backends de SANE

Los backends son los controladores que implementan las funciones que proporciona la capa de abstracción de SANE para la comunicación de las aplicaciones de usuario con los diferentes dispositivos de escaneo soportados. Cada backend puede soportar uno o varios dispositivos ya que, en realidad, lo que el backend implementa es el protocolo de comunicación con el chipset del dispositivo, el cual puede estar integrado en varios escáneres. Los identificadores de los dispositivos soportados pueden estar embebidos en el código fuente del backend o especificados en su archivo de configuración, el cual se encuentra en el directorio 'sane.d' dentro de '/etc' o bien '/usr/local/etc' (Puede variar en función del sistema operativo). Esto posibilita la inclusión de nuevos escáneres especificando su ID sin necesidad de recompilar el Software. Los backends deben aportar las siguientes funciones (al menos en la versión 1.0.20):

  • Sane_init
  • Sane_get_devices
  • Sane_open
  • Sane_get_option_descriptor
  • Sane_control_option
  • Sane_get_parameters
  • Sane_start
  • Sane_read
  • Sane_cancel
  • Sane_set_io_mode
  • Sane_get_select_fd
  • Sane_close
  • Sane_exit

Estas funciones proporcionan la funcionalidad necesaria para inicializar el dispositivo, obtener y establecer las opciones de escaneo, comenzar el escaneo, leer la imagen durante el escaneo, cancelar y realizar las operaciones previas a la finalización del mismo.

Interfaz DLL

Por encima de los backends se encuentra la interfaz DLL, una biblioteca de enlace dinámico que puede entenderse como un backend más, ya que implementa las mismas funciones que estos pero proporciona la posibilidad de utilizar más de un backend. Para hacer uso de los backends, estos han de estar registrados. Para ello, debe existir la entrada correspondiente en el archivo 'dll.conf' localizado en el directorio 'sane.d' Cuando un frontend inicia la interfaz Dll de SANE, esta inicializa los backends registrados en dll.conf, los cuales realizan un barrido en busca de los dispositivos soportados devolviendo mediante sane_get_devices aquellos que se han encontrado. Si cualquiera de los encontrados coincide con el deseado por el usuario, continua la carga del frontend y se inicializan los datos destinados al control del escáner seleccionado.

Frontends de SANE

Captura de Pantalla de Xsane

Los frontends son aplicaciones que hacen uso de la capa de abstracción proporcionada por SANE para acceder a los dispositivos de escaneo. Estos programas no tienen por qué conocer el funcionamiento interno de cada dispositivo ya que de ese trabajo se encargan los backends. Esto presenta al menos dos ventajas. Por una parte, los programadores de frontends pueden dedicar su esfuerzo en adaptar sus programas a los diferentes entornos de trabajo disponibles, a mejorar las prestaciones y a facilitar el manejo de los escáneres mediante interfaces amigables de cara al usuario. Por otro lado, al contrario que lo que ocurre con implementaciones TWAIN proporcionadas por los fabricantes para entornos Windows, estas aplicaciones perduran a lo largo del tiempo ya que el soporte de nuevos escáneres se realiza de forma transparente para el frontend, permitiendo al usuario utilizar la aplicación que le sea más familiar independientemente del escáner que adquiera en un futuro.

Véase también

Referencias

Enlaces externos