# TWAIN

TWAIN é um padrão de captura a partir de scanners: uma imagem capturada através de uma API para os sistemas operacionais Microsoft Windows ou Apple Macintosh. O padrão foi inicialmente lançado no ano de 1992.
Habitualmente, e de forma informal, diz-se que TWAIN deriva de Technology Without An Interesting Name - Tecnologia Sem Nome Interessante, mas na realidade o origem do nome TWAIN vem do poema de Rudyard Kipling a "The Ballad of East and West", onde a certa altura se pode ler: "...and never the twain shall meet...". Ao criarem uma norma comum a várias plataformas, os membros iniciais queriam com a escolha de TWAIN significar que haviam conseguido unir o Este e o Oeste, contrariando o escrito no poema.

## A necessidade da consistência

Com a introdução de scanners, câmeras digitais, e outros dispositivos de aquisição de imagens, usuários desejaram incorporar o valor de imagens dentro de seus documentos e outros trabalhos. De qualquer modo, apoiando a exibição e manipulação destes rastreadores de dados colocados a um custo alto na programação de aplicações. Eles precisavam criar interfaces de usuários e construir controles de dispositivos para um vasto grupo de diversos tipos de dispositivos de imagens. Uma vez sua aplicação estava preparada para suportar um dado dispositivo, eles enfrentavam a realidade desencorajados que o dispositivo continuava a ser atualizado com novas capacidades e recursos. Programadores ficavam continuamente revisando seus aplicativos para que estes ficassem atuais.
Programadores de ambos dispositivos de aquisição de imagem e aplicativos de software reconheceram a necessidade de um comunicação padrão entre o dispositivo de imagem. Uma padronização beneficiaria ambos grupos como também os usuários de seus produtos. Isto permitiria os produtos dos vendedores de dispositivos serem acessados por mais aplicativos e vendedores de aplicativos poderiam acessar dados destes dispositivos sem a preocupação para qual tipo de dispositivo, ou dispositivo particular, este foi desenvolvido. TWAIN foi desenvolvido por esta necessidade de consistência e simplificação.

## A criação do TWAIN

TWAIN foi criado por um pequeno grupo de companhias de software e hardware em resposta a industria de imagem por uma proposta especificação. O Grupo de trabalho teve como meta prover uma abertura, solução multi-plataforma para interligar as necessidades dos dispositivos de entrada com o software de aplicação. O grupo de trabalho original foi formado por representantes de cinco companhias: Aldus, Caere, Eastman Kodak, Hewlett-Packard e Logitech. Três outras companias, Adobe, Howtek and Software Architects também contribuíram significativamente.
O desenho do TWAIN iniciou em Janeiro, 1991. Revisão do original TWAIN Developer’s Toolkit ocorreu em Abril 1991 até janeiro de 1992. O original Toolkit foi revisado pela TWAIN união. A união incluiu aproximadamente 300 representantes individuais 200 companhias que continuarão influenciando e guiando o futuro do TWAIN.
A versão atual do TWAIN foi escrita pelos atuais 11 membros do TWAIN Working Group. Os sócios incluem: Adobe, Cânon, Eastman Kodak Company, Fujitsu Computer Products Of América, Genoa Technology, Inc., Hewlett-Packard Company, Intel Corporation, J.F.L. Peripherals, Kofax Image Products, Ricoh Corporation, e Xerox.
Em maio de 1998, um acordo foi anunciado entre Microsoft e o TWAIN Working Group quais providos para a inclusão do TWAIN Data Source Manger no Microsoft Windows 98 e Microsoft Windows NT 5.0.
Durante a criação do TWAIN, as seguintes arquiteturas e objetivos estavam presentes:
* Fácil reconhecimento – Permitir um vendedor de aplicação fazer sua aplicação TWAIN com uma razoável soma de teste e esforço dos programadores. Os recursos básicos do TWAIN só deveria ser implementado fazendo simples modificações na aplicação. Para levar vantagem da mais completa capacidade, funcionalidades e controles, o desenvolvimento deveria antecipar os esforços.

## Os beneficios de usar TWAIN
### Para os programadores de aplicação

* Permitir a você oferecer a seus usuarios de aplicação uma simples forma de incorporar imagens de qualquer dispositivo de rastro compatível sem alterar sua aplicação.
* Economizar dinheiro e tempo. Se você atualmente prove dispositivos de drivers de scanners de baixo nível, etc., você não precisa mais escrever, dar suporte, ou carregar estes drivers. O dispositivo de imagem TWAIN proverá módulos de software fonte que eliminara a necessidade de criar e carregar os dispositivos de driver.
* Permite sua aplicação acessar dados de qualquer periférico de imagem TWAIN, simples de modificar seu código de aplicação usando um alto nível de interface de programação de aplicação TWAIN. Nenhuma customização do produto é necessária. Periféricos de imagens TWAIN podem incluir scanner de mesa, scanner de mão, câmeras digitais, banco de dados de imagens, ou qualquer outra fonte rastreadora de imagem que cumpre com o protocolo de API TWAIN.
* Permite você determinar o recurso e a capacidade que um dispositivo de aquisição de imagem pode prover. Sua aplicação pode então restringir a fonte para oferecer somente aquelas capacidades que são compatíveis com a necessidade e habilidade de sua aplicação.
Elimina a necessidade de sua aplicação prover uma interface de usuário para controlar o processo de aquisição de imagem. Há um modulo no software de interface de usuário carregado com todos dispositivos de fonte TWAIN para fazer o processo. Do curso, você pode prover sua interface de usuário própria para aquisição, se desejar.

### Para a fonte dos programadores

* Aumenta o uso e suporte para o seu produto. Mais aplicações tornaram consumidores de imagem com um resultado de uma fácil implementação e um aumento da integração que prove TWAIN.
* Permitir você prover um interface de usuário proprietária para seus dispositivos. Isto deixa você presente a mais novos dispositivos sem o usuário ter que esperar que a aplicação incorpore dentro da interface.
* Economizar custos em suas implementações. Antes então criar e suportar varias versões de seus dispositivos de controle de software integrado com varias aplicações, você criar uma única fonte TWAIN.

### Para usuário finais

* Dar aos usuarios uma simples forma de incorporar imagens dentro de seus documentos. Eles podem acessar as imagens em poucos passos porque eles não precisaram deixar sua aplicação.
TWAIN é suportado sobre as plataforma a seguir: Todos versões de Apples Macintosh, Microsoft Windows 3.x / 9x/ NT e Windows 2000. TWAIN não esta disponível sobre Windows CE. TWAIN esta disponível sobre IBM OS/2, mas os binários para o gerenciador de fontes não foram construídos ou distribuídos pelo TWAIN Working Group.

## Os elementos do TWAIN

Twain define um protocolo de software padrão e API (Interface de programação de aplicação) para a comunicação entre o software e o dispositivo de aquisição de imagem. (A fonte de dados).

## Elementos chaves no TWAIN

* O software de aplicação – Uma aplicação deve ser mudada para utilizar TWAIN.
* O software gerenciador da fonte : Este software gerencia a iteração entre a aplicação e a fonte. Este código é provido no TWAIN Developer’s Toolkit e deve ser transportado livremente com cada aplicação que utilize TWAIN.
* A fonte do software – Este software controla o dispositivo de aquisição de imagem e é escrito pelo dispositivo do programa para cumprir com a especificação TWAIN. Tradicionalmente dispositivos de driver estão agora incluindo com o software e não precisa mais transportá-lo com a aplicação.

## Visão geral das técnicas

O protocolo TWain e API são facilmente compreendidas quando você ver os quadros a seguir: Esta seção descreve:
* A arquitetura TWain
* A interface de usuário para comunicação entre os elementos do TWain
* O uso de operadores “Triplets”
* Os protocolos de estado-base
* Capacidades
* Modos disponíveis para transferência de dados

## A TWAIN arquitetura

A transferência de dados é possível de três elementos de software trabalhando junto com o TWain: A aplicação, o gerenciador da fonte e a fonte. Estes elementos usam a arquitetura do TWain para comunicação. A TWain arquitetura consiste de 4 camadas:
* Aplicação
* Protocolos
* Aquisição
* Dispositivos
Os elementos do software TWain ocupam as camadas ilustradas abaixo. Cada camada é descrita nas seções a seguir:

### Aplicação

A aplicação de software do usuário é executada nesta camada TWain descreve as diretrizes de interface de usuário para o programador de aplicação considerar, como o usuário acessa as funcionalidades do TWain e como uma fonte particular é selecionada.
TWain não se interessa como a aplicação esta implementada. TWain não tem efeito sobre qualquer esquema de comunicação inter-aplicacao que a aplicação poderia usar.

### Protocolos

Os protocolos são as ‘linguagens’ orais e a sintaxe usada pelo TWain. Estas implementações precisam de instruções e as comunicações requerem dados para serem transferidas.
As camadas de protocolos incluem:
* A parte do software da aplicação prove a interface entre a aplicação e o TWain.
* O gerenciador da fonte TWain provem do TWain
* O software incluído com o dispositivo da fonte recebera instruções do gerenciador da fonte e transferira de volta os dados e códigos retornados.
O índice de camada de protocolos são discutidas em mais detalhes nas seções a seguir chamando “Comunicações entre os elementos do TWain”.

### Aquisição

Dispositivo de aqusição pode ser físico (como um escanner ou câmera digital) ou lógico (como um banco de dados de imagem). O elemento de software escreve para o controle de aquisição, chamando a fonte que reside primeiramente nesta camada.
A fonte transfere dados para a aplicação. Esta usa o formato e transfere o mecanismo em acordo com a fonte e a aplicação. A fonte sempre provê uma interface do usuário embutida que controla os dispositivos, este escreve para o drive. Uma aplicação pode anular isto e apresentar uma interface de usuário própria para aquisição caso deseje.

### Dispositivo

Este é o local tradicional do dispositivo de driver de baixo nível. Ele converte os comandos específicos do dispositivo dentro dos comandos de hardware e aciona o dispositivo de driver específicos escrito pela companhia. Aplicações que usam Twain não mais precisarão carregar dispositivos de driver porque eles fazem parte da Fonte.
TWain não se preocupa com a camada de dispositivo total. A Fonte oculta as camadas do dispositivos da aplicação. A fonte prove a tradução das operações do Twain e interrage com a Fonte de interface com o usuário dentro dos comandos equivalentes para o dispositivo de driver que causa o comportamento desejado no dispositivo.
Nota: As camadas de protocolos é a mais completa e rígida definição, permitindo uma precisa comunicação entre aplicação e a fonte. As informações deste documento concentram-se sobre o protocolo e a aquisição de camadas.