利用TWAIN-实现与图像输入设备的通讯
前言
随着档案馆、图书馆信息化工作的推进,对于历史档案、库存图书的电子化工作也要求越来越多。信息化工作中最重要的一步是要把传统纸质的数据实现电子化。如何电子化,当然就是通过图像输入设备(扫描仪、数码照相机…)来获得图像数据。该文主要介绍如何利用TWAIN接口来实现与扫描仪、数码照相机等设备的通讯。
TWAIN介绍
TWAIN工作组是一个非盈利的国际组织。它旨在提供一个统一的标准接口,通过该接口就可以实现应用程序与图像输入设备间的通讯。其实该标准目前已经成为了应用程序与图像输入设备间通讯的事实标准。
TWAIN的文件组成
TWAIN共包括4个二进制文件。如果要使用该接口,就必须要保证他们被成功地安装在本地计算机上。
文 件 名 |
说 明 |
TWAIN_32.DLL |
32位应用程序的支持文件,32位程序使用TWAIN通讯必须使用该文件。 |
TWAIN.DLL |
16位应用程序的支持文件,16位程序使用TWAIN通讯必须使用该文件。 |
TWUNKER_32.EXE |
实现32位应用程序与32位数据源进行通讯,它运行时不可见。 |
TWUNKER_16.EXE |
实现32位应用程序与16位数据源进行通讯,它运行时不可见。 注意:在Windows NT 环境下16位数据源不能够正常工作。 |
在Windows 操作系统中(Windows 9x / 2000 / XP ),Microsoft已经把这些文件作为系统文件随同操作系统一起发布了。你可以在Windows安装目录中查找到这些文件。如果我们要编程来实现对TWAIN的访问,还需要最重要的头文件。你通过访问该http://www.twain.org/devfiles/twain.h 地址来获得TWAIN提供的头文件。
好了,现在就让我们来了解一下TWAIN的结构吧。
TWAIN的结构
TWAIN依靠三个组件协同完成与图像设备的通讯和数据传输工作,这三个组件就是 Application、Source Manager和Source。
组 件 |
说 明 |
Application |
就是你要编写的应用程序。 |
Source Manager |
是由TWAIN提供的一个Source的管理器,它不仅可以收集本地系统已经安装了的图像设备,还可以根据需要去加载设备。同时,它最重要的功能是担任Application 与Source通讯的桥梁。(其实,它就是我们前面提到的组成文件中的dll文件。) |
Source |
在这里可以看作是图像设备。事实上它是由设备厂家提供的一个dll文件。这个dll文件是支持twain接口的。(该文不讨论关于twain在Source中的应用。) |
它们的层次结构图如下:
从该图我们可以看到,Application要从Source获得图像数据,必须通过Source Manager传递来实现。Application与Source Manager 间的通讯是靠调用TWAIN提供的DSM_Entry( )函数实现。而Application不能直接与Source 通讯,Source Manager与Source 间的通讯是靠调用TWAIN提供的DS_Entry( )函数实现(在这里,我们不用关心Source Manager如何去调用DS_Entry函数。)。
TWAIN的用户界面
当我们使用TWAIN接口去获得图像数据的时候,会涉及到一些的用户界面,首先是我们的应用程序界面,然后是Source Manager提供的用户界面以及图像设备(Source)所提供的用户界面。
这些用户界面如下:
在我们的应用程序中,可以通过“选择设备”来打开Source Manager的标准用户界面。Source Manager的界面由Source Manager提供。在这个界面中可以让用户选择他想要使用的图像设备。选中想要的设备后,再通过“获取…”来打开图像设备(Source)提供的用户界面进行现应的操作。(注: