谈谈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( ) 和 DS_Entry( ). DSM 表示 Data Source Manager , DS 表示 Data Source.

 

 

 

The Application

Application的目的是为了从Source获得图像数据,然而,applications不能直接和Source对话。对Source所有操作(获得数据、性能信息、错误信息等…)必须通过Source Manager传递来实现。

在TWAIN中定义了大约140个操作消息。Application把这些消息发给Source Manager,以实现对选定的Source进行操作。

ApplicationSource Manager 通讯通过DSM_Entry( )函数实现。

 

 

DSM_Entry 函数参数列表内容:

 

l           An identifier structure providing information about the application that originated the

function call

l           作用对象是 (Source Manager 或 Source)

l           triplet操作描述。triplet 操作说明:

ü      Data Group for the Operation (DG_ )

ü      Data Argument Type for the Operation (DAT_ )

ü      Message for the Operation (MSG_ )

l           指向传输数据的指针

 

这个函数会返回一个值来表示操作是否成功。

 

在C中,函数调用如下:

 

On Windows

TW_UINT16 FAR PASCAL DSM_Entry

( pTW_IDENTITY pOrigin,    // 关于source 的信息;

pTW_IDENTITY pDest,         // 消息目标

TW_UINT32 DG,                // data group ID: DG_xxxx

TW_UINT16 DAT,               // data argument type: DAT_xxxx

TW_UINT16 MSG,               // message ID: MSG_xxxx

TW_MEMREF pData              // 数据指针

);

 

Note: 数据类型定义在TWAIN.H 文件中。以后对其详细介绍。

 

The Source Manager

Source Manager 为application 和 Source间的通讯提供了桥梁。用户可以选择一个Source,并且Source Manager可以加载用户选中的这个Source,让Application去访问这个Source。

 

ü             如果DSM_Entry 函数目标是 Source Manager - Source Manager就自己处理这个操作。

ü              如果DSM_Entry 函数目标是 Source - Source Manager 就把操作信息的写入到参数列表中,并且在 destination 参数中写入指定的Source。为了把信息传递到Source, Source Manager将调用Source的DS_Entry( ) 函数。TWAIN规定,每个Source都要有DS_Entry 这个函数接口。

 

在C中,函数调用如下:

 

On Windows TW_UINT16 FAR PASCAL DS_Entry

(pTW_IDENTITY pOrigin,           // 关于source 的信息;

TW_UINT32 DG,                      // data group ID: DG_xxxx

TW_UINT16 DAT,                     // data argument type: DAT_xxxx

TW_UINT16 MSG,                     // message ID: MSG_xxxx

TW_MEMREF pData                    // 数据指针

);

 

另外,Source Manager可以不需要Application发起,就开始三个操作。这些操作仅仅存在Source Manager与 Source通讯的时候,并且要在SourceManager显示选择Source对话窗体时才能执行。这些操作用于:查找操作系统中可用的Source、打开Source、关闭Source.

 

On Windows

在Windows操作系统中, Source Manager 是一个动态连接库 (DLL).

Source Manager 可以同时管理多个Applications和多个Sources的会话. Source Manager的线程被多个应用程序共享。

 

 

The Source

Source不直接接受Application的操作,而是通过Source Manager中转。Source也可能直接接受Source Manager操作。Source接受这些操作后,通过返回代码(返回代码以TWRC_为前缀)传递给Source Manager来表示处理的操作结果。

如果操作的发起方是Application, 这个返回代码通过DSM_Entry( )函数的返回值,被传回给Application。

如果,操作没有成功,Source会把一些失败信息写入到一个标记代码中(以TWCC_为前缀),但是,Source不会自动把这个代码传递给Application。如果Appliaction要想得到这个信息必须要发出个操作请求,才能得到这些信息。

 

On Windows 在Windows操作系统中, Source是一个动态连接库 (DLL).

 

后面我将陆续介绍。

The Application

Application的目的是为了从Source获得图像数据,然而,applications不能直接和Source对话。对Source所有操作(获得数据、性能信息、错误信息等…)必须通过Source Manager传递来实现。

在TWAIN中定义了大约140个操作消息。Application把这些消息发给Source Manager,以实现对选定的Source进行操作。

Application于Source Manager 通讯通过DSM_Entry( )函数实现。

 

 

DSM_Entry 函数参数列表内容:

 

l            An identifier structure providing information about the application that originated the

function call

l            作用对象是 (Source Manager 或 Source)

l             triplet操作描述。triplet 操作说明:

ü        Data Group for the Operation (DG_ )

ü        Data Argument Type for the Operation (DAT_ )

ü        Message for the Operation (MSG_ )

l           指向传输数据的指针

 

这个函数会返回一个值来表示操作是否成功。

 

在C中,函数调用如下:

 

On Windows

TW_UINT16 FAR PASCAL DSM_Entry

( pTW_IDENTITY pOrigin,    // 关于source 的信息;

pTW_IDENTITY pDest,         // 消息目标

TW_UINT32 DG,                // data group ID: DG_xxxx

TW_UINT16 DAT,               // data argument type: DAT_xxxx

TW_UINT16 MSG,               // message ID: MSG_xxxx

TW_MEMREF pData              // 数据指针

);

 

Note: 数据类型定义在TWAIN.H 文件中。以后对其详细介绍。

 

The Source Manager

Source Manager 为application 和 Source间的通讯提供了桥梁。用户可以选择一个Source,并且Source Manager可以加载用户选中的这个Source,让Application去访问这个Source。

 

ü             如果DSM_Entry 函数目标是 Source Manager - Source Manager就自己处理这个操作。

ü              如果DSM_Entry 函数目标是 Source - Source Manager 就把操作信息的写入到参数列表中,并且在 destination 参数中写入指定的Source。为了把信息传递到Source, Source Manager将调用Source的DS_Entry( ) 函数。TWAIN规定,每个Source都要有DS_Entry 这个函数接口。

 

在C中,函数调用如下:

 

On Windows TW_UINT16 FAR PASCAL DS_Entry

(pTW_IDENTITY pOrigin,           // 关于source 的信息;

TW_UINT32 DG,                      // data group ID: DG_xxxx

TW_UINT16 DAT,                     // data argument type: DAT_xxxx

TW_UINT16 MSG,                     // message ID: MSG_xxxx

TW_MEMREF pData                    // 数据指针

);

 

另外,Source Manager可以不需要Application发起,就开始三个操作。这些操作仅仅存在Source Manager与 Source通讯的时候,并且要在SourceManager显示选择Source对话窗体时才能执行。这些操作用于:查找操作系统中可用的Source、打开Source、关闭Source.

 

On Windows

在Windows操作系统中, Source Manager 是一个动态连接库 (DLL).

Source Manager 可以同时管理多个Applications和多个Sources的会话. Source Manager的线程被多个应用程序共享。

 

 

The Source

Source不直接接受Application的操作,而是通过Source Manager中转。Source也可能直接接受Source Manager操作。Source接受这些操作后,通过返回代码(返回代码以TWRC_为前缀)传递给Source Manager来表示处理的操作结果。

如果操作的发起方是Application, 这个返回代码通过DSM_Entry( )函数的返回值,被传回给Application。

如果,操作没有成功,Source会把一些失败信息写入到一个标记代码中(以TWCC_为前缀),但是,Source不会自动把这个代码传递给Application。如果Appliaction要想得到这个信息必须要发出个操作请求,才能得到这些信息。

 

On Windows 在Windows操作系统中, Source是一个动态连接库 (DLL).

 

注意: 在appcation 和 Sources 间的通讯中,Protocol 层是最重要的。这层就不介绍了。

posted on 2012-03-13 10:58  Juneson  阅读(3281)  评论(0编辑  收藏  举报

导航