TWain接口规范概述及其应用
- 格式:pdf
- 大小:204.93 KB
- 文档页数:10
TWain接口规范及其应用概述目录目录 (1)一、前言 (2)二、TWAIN的组成和作用 (2)1、TWAIN的组成 (2)2、使用TWAIN的好处 (3)三、基于TWAIN的应用体系结构 (4)1、体系结构层次图 (4)2、层次说明 (5)四、TWAIN的用户接口说明 (5)1、用户接口图示: (5)2、接口函数据及使用规范说明 (6)五、TWAIN应用程序实例 (7)六、在Windows终端服务环境中使用TWAIN接口扫描仪 (9)一、 前言随着各种扫描仪、数码相机和其他图像获取设备的出现和普及使用,相当多客户的业务系统将扫描仪等引入作为系统外设。
为了全面满足客户的应用需求,我司产品在经过与扫描仪厂家合作后,现已能支持较大一部分型号的扫描仪及数据相机。
然而市场上扫描仪、数据相机类型众多,客户应用程序如何来使用这些扫描仪和数据相机。
早期支持显示和光栅数据处理的应用程序针对每种图象获取设备都需要单独设计用户界面、设备驱动程序,在这种情况下,当设备不断升级时,应用程序也要进行相应的修改,使用维护难度增大,维护成本升高。
在这种前提下,扫描仪及数据相机等图像获取设备的开发商和应用软件开发商都意识到需要在设备和应用之间定义一个标准的通信协议,使设备能被更多的应用程序支持,同时使应用程序不需要修改就能支持更多的设备或设备的更新。
TWAIN就是在这种追求一致性和简单性的背景下产生的。
TWAIN是一个非赢利组织(注:TWAIN不是名称的缩写),最初的工作组由以下几个公司的代表组成:Aldus,Caere,Eastman,Hewlett-Packard和Logitech,另外Adobe, Howtek 和Software Architects对其也有重要的贡献。
目前该组织的成员已不断增加,如Canon、 Fujitsu Computer Products of America、Intel、Ricoh Corporation、and Xerox等。
另外,在1998五月,Microsoft和TWAIN组织达成协议,将在Win98和NT5.0的数据源管理器中包含TWAIN的数据源管理器,并在后续的Windows 2000/XP及Windows Server 2003中包含TWAIN的数据管理器,使得基于Windows的应用程序中以轻松地通过访问图像处理设备厂家提供的数据源来获取图像。
到目前为止,已有相当多的图像处理设备支持TWAIN。
我们在工作过程中遇到的客户的很多系统在使用扫描仪时都是通过TWAIN来扫描。
日常工作过程中,我们常在客户终端服务环境中安装扫描仪,常遇到“要将*.DS文件拷到用户目录下的Windows目录下的Twain_32目录中”等工作。
在您进行这项工作时,您是否知道.DS是什么文件?其中包含了什么?接下来就让我们来拨开这层面纱。
二、 TWAIN的组成和作用1、TWAIN的组成TWAIN定义了一组标准的软件协议和API(application programming interface),通过这种协议和API来规范图像处理设备和应用程序之间的通信,它主要有三部分组成,如下图所示:图1 TWAIN的组成应用软件:应用软件在开发时要遵循TWAIN协议;数据源管理器:管理应用软件和数据源之间的信息交互,由TWAIN组织开发 并免费提供给设备开发商和应用开发商,在TWAIN开发工具有可以找到。
当我们的应用程序使用TWAIN接口时,就必须装载该管理器。
数据源:设备开发商开发的符合TWAIN协议的设备驱动程序。
2、使用TWAIN的好处(1)应用程序开发商的受益:A、用户通过简单的方式在任何兼容的图像处理设备上处理图像,不用离开当前的应用程序(因为在应用程序中直接调用图像处理设置的标准TWAIN接口数据源)B、不再需要为图像获取设备编写、支持或移植设备驱动程序C、应用程序能够访问任何符合TWAIN规范的图像外设,只要简单地通过高给TWAIN应用程序 接口修改一次程序代码即可,可不需要产品的自定义。
D、由开发商决定一个图像获取设备能提供的性能参数,然后应用程序能够限制此图像源, 以提供只符合应用程序需求和能力的那些性能。
E、应用程序开发商不需要提供用户界面来控制图像获取过程,用户界面由每一个符合TWAI N规范的图像源设备来处理。
当然,开发商也可以为获取过程提供一个用户界面。
(2)图像源开发商的受益A、使用其产品的人将增多,同时产品的支持将增多。
更多的应用程序将使用图像,这是由 TWAIN提供的简易实现和更广的设备集成带来的结果。
B、开发商能为他们的设备提供一个专用的用户接口,它允许设备向用户显示最新的特性,而 不用等待应用程序在他们的接口中处理这些特性。
C、实现费用的减少就意味着节省了开支,与其通过创建和支持设备控 制软件的各种不同版本来对应用程序进行集成到不如只创建一个简单的TWAIN规范的图像源(3)最终用户的受益A、用户获得了一中种简单的处理文档中图像的方式,他们能以更少的步骤来存取图像,因为 不用离开应用程序。
三、 基于TWAIN的应用体系结构通过前面的介绍,我们已经知道,TWAIN软件系统通过应用程序、数据源管理器和数据源三部分协同工作来完成图像处理的请求、扫描、传输过程,这一过程可以用下图所示的体系结构来描述:1、体系结构层次图TWAIN的应用包括4个层次,分别如下:图2 TWAIN应用的体系结构2、层次说明TWAIN的应用包括4个层次,分别如下:A、应用程序层:用户应用程序在这个层次执行,TWAIN中概述了用户程序如何来使用TWAIN,如何选择数据源。
B、协议层其实协议是规定了各个层次之间如何进行交互的语言和语法。
协议层包括3个部分◆作为应用软件一部分的应用程序与TWAIN之间的接口◆TWAIN提供的源管理◆作为源设备一部分的接收数据源指令和返回图像数据和处理结点代码接口。
C、图像获取层通常这个层次是以一个标准的接口展现在应用程序面前,由图像处理设备厂商开发完成,用户使用该接口来获取图像数据。
当然如果客户端需要,也可以修改该接口。
D、物理设备层这属于最底层的硬件设备驱动,它完成将用户动作转换成设备可以识别的指令,完成原始数据的采集。
在使用TWAIN的应用程序中,不再需要直接与设备驱动交互,因为在这种模式中,设备驱动已经成为数据源的一部分,用户直接使用数据源即可。
四、 TWAIN的用户接口说明1、用户接口图示:当用户应用程序使用TWAIN接口来获取图像数据时,对最终用户来说,TWAIN工作流程中的几个环节必须是可见的。
如下图所示:2、接口函数据及使用规范说明在上图中TWAIN的三个组成部分(应用、数据源管理器和数据源)中,可以并且仅可以通过两个接口(函数)进行通信,它们分别是DSM-Entry(),DS-Entry()。
应用程序为了得到图像,不能和数据源直接交互,所有的请求、属性等信息必须先交给数据源管理器,再由数据源管理与数据源进行交互。
TWAIN定义了100多种操作,应用程序可以根据具体情况进行组合,以满足各种图像分辨率、色彩等性能要求。
(1)、DMS-Entry()在Windows环境下的调用格式为:TW-UINT16FAR PASCAL DSM-Entry(pTW-IDENTITY pOrigin //消息的发出地pTW-IDENTITY pOest //消息的目的地,数据源或数据源管理器TW-UINT32 DG, //数据组标识(lD),格式为:DG-xxxxTW-UINT16 DAT,//数据变量类型,格式为:DAT-xxxxTW-UINT16 MSG,//message ID,格式为:MSG-xxxxTW-MEMREF pData// 存放图像数据的缓存取指针)数据源管理器是应用程序和数据源之间通信的桥梁,提供界面让用户选择数据源、装载数据 源,当DSM-Entry(()指明的目的地是自己时,则由自己处理:当目的地是数据源时,数据源 管理器通过DS-Entry()调用,将有关参数传递给数据源,由数据源进行处理。
(2)、DS-Entry()在Windows环境下的调用格式为TW-UINT16FAR PASCAL DS-Entry(pTW-IDENTITY pOrigin //消息的发出地TW-UINT32 DG,//数据组标识(lD),格式为:DG-xxxxTW-UINI16 DAT, //数据变量类型,格式为:DAT-xxxxTW-UINT16 MSG,//message ID,格式为:MSG-xxxxTW-MEMREF pData// 存放图像数据的缓存取指针)(3)、TWAIN获取图像的步骤获取图像的整个过程共有以下几步:A、装载数据源管理器使DSM-Entry()有效,可以通过动态调用(*.dll)或静态连接(*lib)B、打开数据源管理器(通过调用DSM-Entry()实现,以下类同)C、选择数据源D、打开数据源E、就有关特性、图像质量等和数据源进行协商F、向数据源发出数据请求G、确认数据已准备就绪,开始传输数据H、确认传输成功I、和数据源断开。
五、 TWAIN应用程序实例本实例的开发环境和工具是:Windows,VC6.0,Twain-32.dll如果想在原有应用程序中增加图像获取功能的话,要对源程序作一修改,增加两个菜单项, 分别是“选择数据源”、“获取图像”,添加相应的处理函数。
首先,用户必须点击“选择 数据源”在数据源管理器提供的界面上选择可用的数据源,如扫描仪或数字相机,然后,点击“获取图像”在数据源提供的界面上选择一些参数,按“确定”后,设备开始工作,最后图像数据由数据源经由数据源管理器传到应用程序,由应用程序进行处理(显示、存盘等)。
以下是部分程序片断,大家还可以参考CXImage的源代码。
void CDlgImgDlg::OnSelect(){//用户点击“选择数据源”CDlgImgDlg*dlg=this;erSelect(dlg->m-hWnd);//m-Scanner是CScanner类的一个实例,全局 量}void CDlgImgDlg::OnAcpuire(){//用户点击“获取图像”CDlgImgDlg*dlg=this;m-Scanner.SetPixe1Params(USER-SELECTION);m-Scanner.StartAcquire((dlg->m-hWnd);}BOOL CScanner::UserSelect(HWND hWnd){//UserSelect()是CScanner类的一个方法 //打开数据源管理器rs=DSM-Entry(&mAppId,NULL,DG-CONTROL,DAT-PARENT,MSG-OPENDSM.(TW-MEMREF)&mWnd);if(rc==TWRC-FAILURE)return(FALSE);mDSMOpened=TRUE;………………//让用户选择数据源,会弹出一个对话框memset(&mSourceId,O,sizeof(TW-IDENTITY));rc=DSM-Entry(&mAppId,NULL,DG-CONTROL,DAT-IDENTITY,MSG-USERSELECT,(TW-M EMREF) &mSourceId)………………//打开数据源,准备获取图像rc=DSM-Entry(&mAppId,NULL,DG-CONTROL,DAT-IDENTITY,MSG-OPENDS,&mSourceId);…………}BOOL CScanner:;StartAcquire(HWND hWnd){……………if(!mDSMOpened)//获取图像之前一定要先打开数据源{AfxMessageBox("You must choice a Data Source at first!");return FALSE}//设置参数DSM-Entry(&mAppId,&mSourceId,DG-CONTROL,//将参数传到数据源DAT-CAPABILITY,MSG-SET(TW-MEMREF)&Caps);DAT-Entry(&mAppId &mSourceId,DG-IMAGE,DAT-IMAGELAYOUT,MSG-SET,(TW-MEMREF)&Image)rc=DSM-Entry(&mAppId,&mSourceId,DG-CONTROLDAT-USERINTERFACE,MSG-ENABLEDS,(TW-MEMREF)&mUserInterface); //使数据源有效//获取图像数据rc=DSM-Entry(&mAppId,&mSourceId,DG-IMAGE,DAT-IMAGENATIVEXFER,MSG-GET,(TW-MEMREF)&bitmap}六、 在Windows终端服务环境中使用TWAIN接口扫描仪当前全国各地的行业用户都在验印系统等系统中使用扫描仪、数码相机等图像处理设备。