现在使用扫描仪、数码照相机、以及其他图像获得设备的应用越来越多了,用户越来越希望把这些获得的图像加入到自己的文件或其他工作中。然而,要显示并操作这些图像的光栅数据需要应用程序开发人员进行较大的工作。
一种比较简单的实现是通过是KODAK提供的控件,但是这种方法局限性太多,很多设备的功能都不能使用,比如设置设备扫描的分辨率,设置数据传输方式等等...(以扫描仪器为例子)。我将介绍利用TWAIN来实现对光栅图像输入设备(扫描仪、数码相机...)的控制,
谈谈TWAIN
TWAIN是什么?TWAIN Working Group 是一个致力于光栅图像输入设备通讯的非盈利的组织。Twain就是它们提供的开发包,并且大多数的设备厂家都遵循该接口。Microsoft也把该开发接口作为系统文件发布在了windows中(9x/nt/2000/xp)。
TWAIN 结构
它们由的三个软件组件构成( application, Source Manager, 和 Source.)
你的程序可以通过这些组件实现与设备的通讯。
TWAIN结构由下面四个层次组成:
ü Application
ü Protocol
ü Acquisition
ü Device
Application
这一层是用户可执行应用程序软件所在的地方。
TWAIN 提供了一个用户接口规则,可以让应用程序开发人员访问TWAIN函数以及让用户选择一个指定的数据Source.TWAIN不参与应用程序的实现工作。TWAIN不对该层由可能用到的应用程序间的通讯产生影响。
Protocol
这个协议就是使用TWAIN对话的语法。它通过准确的指令实现数据传输的通讯工作。
这个协议层包括:
ü TWAIN 和用户应用程序接口
ü TWAIN提供的Source Manager
ü Source device 与 SourceManager 间的数据传输以及返回代码
该层更详细的说明将在后面的介绍。
Acquisition
Acquisition设备可能是物理设备(扫描仪、数码相机)或者逻辑设备(图像数据库)。Source为应用
程序传输数据。它使用这个格式在Source和Application间实现传输机制。
Source通常提供一个内建的用户接口去控制Source代表的设备。
Device
这层就不介绍了。
注意: 在appcation 和 Sources 间的通讯中,Protocol 层是最重要的。
TWAIN组件间通讯
TWAIN组件间通讯有两个函数指针入口,分别是DSM_Entry( ) 和