[퍼온글] TWAIN

기술 이야기 2017.01.29 14:17 |


TWAIN : 스캐너등 이미지장치 인터페이스 API 규약

TWAIN

TWAIN 의 배경

1991년부터 Aldus, Caere, Eastman Kodak, Hewlett-Packard, Logitech 의 주도와 Adobe, Howtek, Software Architect 의 후원 속에 만들어진 TWAIN은 스캐너, 디지털 카메라와 같은 화상입력장치를 그래픽 처리 프로그램과 직접 연결시켜 이미지 데이터를 전달하는 소프트웨어 적인 표준 인터페이스입니다. 만약 스캐너를 새로 구입했는데 Photoshop에서 이미지를 직접 스캔받고 싶다면 먼저 그 스캐너의 TWAIN 드라이버를 PC에 설치하면 바로 사용할 수 있는 것입니다.
TWAIN 기능을 지원하기 위해서는 어플리케이션에는 TWAIN 인터페이스를 지원하는 코드를 집어 넣어야 하고, 주변장치에서는 자체의 TWAIN driver (Data Source)를 제공해야 합니다.
TWAIN이라는 표준 인터페이스를 사용함으로써 프로그램 개발자는 각기 다른 주변장치에 대한 고려 없이 TWAIN을 지원하는 모듈만을 갖춤으로써 모든 TWAIN 지원 장치를 이용할 수 있고, 주변장치 개발자는 여러 프로그램을 위한 드라이버를 모두 개발할 필요없이 TWAIN 인터페이스를 만족하는 드라이버만 개발하여 기존에 개발된 모든 TWAIN 지원 프로그램을 그대로 이용할 수 있게 되는 것입니다.
자세한 내용은 TWAIN Working Group의 홈페이지(http://www.twain.org)를 방문하시면 최신 스펙과 프로그램 및 주변장치를 위한 샘플 소스, 그리고 설치 방법 등을 알 수 있습니다.


TWAIN 의 구성

TWAIN은 3 부분으로 구성됩니다.
첫 번째는 TWAIN을 지원하는 어플리케이션, 두 번째는 보통 TWAIN 드라이버라고 말하는 데이터 소스(DS), 그리고 세 번째는 이들의 중간에서 인터페이스를 해주는 TWAIN 매니저 입니다.
TWAIN 드라이버는 Windows OS의 경우 Windows 디렉토리 안에 TWAIN (16비트) 또는 TWAIN_32 (32비트) 디렉토리 밑에 설치해야 하며 확장자가 *.DS 로된 일종의 DLL (Dynamic Linked Library) 파일입니다. MacOS 의 경우는 코드리소스 파일형태이며 Preference 폴더의 TWAIN 폴더에 설치합니다.
TWAIN 매니저는 TWAIN.DLL (16비트) 와 TWAIN_32.DLL (32비트) 이고 Windows 디렉토리에 위치합니다.
참고로 twunk_16.exe 와 twunk_32.exe 는 thunking layer 로서, DDE 통신을 이용해 16비트 TWAIN 드라이버와 32비트 프로그램을 연결해 주거나 32비트 TWAIN 드라이버와 16비트 프로그램을 연결하는 것을 가능하게 해주는 유틸리티입니다.


TWAIN 의 3 가지 전송방식

TWAIN 인터페이스에는 3 가지 전송방식을 정의하고 있습니다.
첫 번째는 Native Mode Transfer 로 드라이버가 비트맵을 메모리에 로드하고 그 핸들을 프로그램에 넘겨주는 방법입니다.
두 번째는 Buffered Memory Mode Transfer 로 프로그램이 버퍼를 할당해 놓고 드라이버는 그 버퍼에 비트맵 데이타를 조금씩 나누어 복사하는 방법입니다.
세 번째는 Disk File Mode Transfer 로 프로그램이 파일명을 정해주면 드라이버가 그 파일명으로 비트맵을 저장하는 방법입니다.
첫 번째와 두 번째 방법은 모든 드라이버가 지원하도록 정하고 있으며 세 번째 방법은 드라이버에 따라 지원을 하지 않을 수도 있습니다.


TWAIN 의 기본 동작

1. 사용자가 프로그램에서 "Select source..." 명령을 선택한다.
2. TWAIN 매니저가 TWAIN 폴더와 TWAIN_32 폴더를 검색해 시스템에 설치된 TWAIN 드라이버의 목록을 나열한다.
3. 사용자가 그 중 하나를 선택하면 WIN.INI 파일의 [Default source] 항목에 기록한다.
4. 사용자가 "Acquire.." 명령을 선택하면 매니저가 Default source를 연다.
5. 프로그램과 드라이버 간에 지원하는 전송형식과 이미지 포맷등을 체크하는 capability negotiation 과정이 일어난다.
6. 드라이버의 윈도우가 나타나고 외부기기로 부터 이미지를 가져올 수 있게된다.
7. 이미지를 가져오게 하면 드라이버가 전송을 요청하고 프로그램은 지원하는 전송방식으로 이미지 전송을 한다.
8. 전송이 완료되면 프로그램은 드라이버에게 전송의 끝을 알린다.
9. 사용자가 드라이버의 윈도우를 닫으면 드라이버는 매니저에게 닫기를 요청하고 매니저가 드라이버를 닫음으로써 TWAIN 세션이 종료된다.


FAQ

Q1) TWAIN을 지원하는 어플리케이션을 작성하고자 하는데 참고할 만한 자료는?
A1) TWAIN 지원 어플리케이션을 개발하는 경우 다음 자료를 참고하세요.
1. TWAIN Working Group의 sample 프로그램 Twack
2. EZTWAIN Toolkit (C/C++/Delphi/VB)
3. CTWAIN MFC 개발자를 위한 TWAIN 클래스


Q2) TWAIN 기능을 지원하려면 하드웨어가 바뀌어야 하나?
A2) TWAIN 은 소프트웨어 적인 인터페이스이기 때문에 하드웨어는 바뀔 필요가 없습니다.
기존의 serial, parallel, SCSI, USB 포트를 통해 데이터를 가져오는 부분에 TWAIN 인터페이스로 이미지를 전달하는 부분만 결합해주면 됩니다.

Q3) TWAIN 드라이버 설치방법은?
A3) TWAIN 홈 페이지에는 윈3.1, 윈95, 윈NT의 3가지 OS에 대한 설치방법을 설명하고 있습니다.
먼저 윈도우즈 디렉토리에 설치해야 할 TWAIN 관련 파일은 TWAIN.DLL, TWAIN_32.DLL, TWUNK_16.EXE, TWUNK_32.EXE 입니다.
추가적으로 윈3.1의 경우는 share.exe 가 autoexec.bat에서 실행되도록 해야하고 MSVCRT20.DLL 를 system 디렉토리에 설치합니다. 그리고 윈NT의 경우에는 system32 폴더에MSVCRT20.DLL 을 설치하도록 하고 있습니다. 추가 파일들은 OS에 따라 다르므로 TWAIN 홈에서 각 OS에 대해 필요한 파일을 각각 다운로드 받아야 합니다.
이제 TWAIN 드라이버는 16 비트 용의 경우에는 WINDOWS\TWAIN 디렉토리에, 32 비트 용인 경우에는 WINDOWS\TWAIN_32 디렉토리에 설치해야 합니다. TWAIN 매니저는 하위 디렉토리까지 검사를 하므로 기기의 이름과 같은 자신만의 서브 디렉토리를 만들어 설치하는 것이 깔끔하고 보기 좋습니다.


[원본 : http://hayanmail.com/jsy/index.html?board=cizblog_zboard3&ln_mode=news_view&id=7&ct_sel=]

저작자 표시
신고
Posted by Golmong

댓글을 달아 주세요

티스토리 툴바