- 444
- 0
- 约6.4万字
- 约 16页
- 2017-07-29 发布于河南
- 举报
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位数据源进行通讯,它运行时不可见。
注意:在WindowsNT环境下16位数据源不能够正常工作。
在Windows操作系统中(Windows9x/2000/XP),Microsoft已经把这些文件作为系统文件随同操作系统一起发布了。你可以在Windows安装目录中查找到这些文件。如果我们要编程来实现对TWAIN的访问,还需要最重要的头文件。你通过访问该/devfiles/twain.h地址来获得TWAIN提供的头文件。
好了,现在就让我们来了解一下TWAIN的结构吧。
TWAIN的结构
TWAIN依靠三个组件协同完成与图像设备的通讯和数据传输工作,这三个组件就是Application、SourceManager和Source。
组件
说明
Application
就是你要编写的应用程序。
SourceManager
是由TWAIN提供的一个Source的管理器,它不仅可以收集本地系统已经安装了的图像设备,还可以根据需要去加载设备。同时,它最重要的功能是担任Application与Source通讯的桥梁。(其实,它就是我们前面提到的组成文件中的dll文件。)
Source
在这里可以看作是图像设备。事实上它是由设备厂家提供的一个dll文件。这个dll文件是支持twain接口的。(该文不讨论关于twain在Source中的应用。)
它们的层次结构图如下:
从该图我们可以看到,Application要从Source获得图像数据,必须通过SourceManager传递来实现。Application与SourceManager间的通讯是靠调用TWAIN提供的DSM_Entry()函数实现。而Application不能直接与Source通讯,SourceManager与Source间的通讯是靠调用TWAIN提供的DS_Entry()函数实现(在这里,我们不用关心SourceManager如何去调用DS_Entry函数。)。
TWAIN的用户界面
当我们使用TWAIN接口去获得图像数据的时候,会涉及到一些的用户界面,首先是我们的应用程序界面,然后是SourceManager提供的用户界面以及图像设备(Source)所提供的用户界面。
这些用户界面如下:
在我们的应用程序中,可以通过“选择设备”来打开SourceManager的标准用户界面。SourceManager的界面由SourceManager提供。在这个界面中可以让用户选择他想要使用的图像设备。选中想要的设备后,再通过“获取…”来打开图像设备(Source)提供的用户界面进行现应的操作。(注:Source提供的界面会因为你使用的图像设备不同而有差异。)
对于这些界面,TWAIN提供了非常灵活的处理方法。对于SourceManager提供的用户界面以及图像设备(Source)所提供的用户界面,我们可以选择是否显示它们,甚至我们还可以按自己的要求去改写这些用户界面。
TWAIN的接口函数
要编写应用程序实现与支持TWAIN标准的图像设备通讯,只需要了解上面提到的DSM_Entry()接口函数。TWAIN定义了大约140个操作消息。你只要把这些消息通过DSM_Entry()函数发给SourceManager,就可以实现对选定的Source进行相应的操作。SourceManager会分辨那些消息属于自己,那些消息是该转发给Source。
在介绍DSM_Entry()前,我们先来了解一下的TWAIN定义的消息格式。TWAIN把它定义的操作称为Triplets操作,就是每个操作用三个定义的参数来表示。这个三个参数用不同前缀名来区分。每个Triplets操作都是唯一的,不会有歧意,它们代表一个特定的操作行为。这三个参数类型分别是DataGroup(前缀名DG_)、DataArgument(前缀名DAT_)和MessageID(前缀名MSG_),每个参数都包含有各自的信息。比如:DG_CONTROL/DAT_PARENT/MSG_OPENDS
原创力文档

文档评论(0)