第一范文网 - 专业文章范例文档资料分享平台

TWAIN学习笔记

来源:用户分享 时间:2020-06-08 本文由我要当女子汉 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

2008-10-06

TWAIN学习笔记(壹)

?

TWAIN,定义了一套标准的软件协议(software protocol)和应用程序编程接口 (application programming interface(API))。使用它实现软件应用程序和图象获取设备(扫描仪)之间的通讯。我们见到的情况是:从FILE菜单下选取ACQUIRE就弹出了扫描软件。

四层:

Application,Protocol,Acquisition,Device

用户层,用户的应用程序,界面之类的东西

? 协议层,把用户的请求转换成TWAIN明白的内容 ? 请求层,向下请求内容,可以是硬件也可以是数据库 ? 硬件层,数据的来源

?

TWAIN之间通讯通过两个入口,DSM_Entry,DS_Entry

Application:

所有的应用不能直连到数据层,只能通过SourceManager,通过DSM_Entry()方法。

DSM_Entry()方法有下面的参数:

标识符构造,identifier structure ? 目标(SourceManager或者Source) ? 三个描述

o 数据组(Data Group : DG_) o Data Argument Type(DAT_) o Message(MSG_)

? 用于传数据的指针域

?

Win下,C代码类似于: C代码

1. TW_UINT16 FAR PASCAL DSM_Entry(

2. pTW_IDENTITY pOrigin, // source of message

3. pTW_IDENTITY pDest, // destination of message 4. TW_UINT32 DG, // data group ID: DG_xxxx

5. TW_UINT16 DAT, // data argument type: DAT_xxxx

6. TW_UINT16 MSG, // message ID: MSG_xxxx 7. TW_MEMREF pData // pointer to data 8. );

Source Manager:

SM提供应用层和数据层之间的通讯,支持用户选取数据源,应用层读取数据源。如果用DSM_Entry()的时候,调用的是SM,那直接就操作它本身。如果调用的是S,那再调用DS_Entry()。 Win下面,C代码类似于: C代码

1. TW_UINT16 FAR PASCAL DS_Entry(

2. pTW_IDENTITY pOrigin, // source of message

3. TW_UINT32 DG, // data group ID: DG_xxxx 4. TW_UINT16 DAT, // data argument type: DAT_xxxx

5. TW_UINT16 MSG, // message ID: MSG_xxxx 6. TW_MEMREF pData // pointer to data 7. ) Source:

返回值前缀TWRC_,如果出问题,设置一个前缀为TWCC_的状态码,但是不会自动返回。

SM和S在Win下都是DLL形式实现。

从Source返回给Application,需要4步:

通知应用层,已经准备好了有东西要返回了。MSG_XFERREADY用于Source通知App

? 禁用Source的用户接口,MSG_CLOSEDSREQ

? 通知应用层,按下了OK按钮,应用更改,用于Source被DG_CONTROL /DAT_USERINTERFACE / MSG_ENABLEDSUIONLY.打开的情况,MSG_CLOSEDSOK ? 设备发生动作,只有在应用层给数据层这个优先权,单独传回来。MSG_DEVICEEVENT

?

DSM_Entry()和DS_Entry()用于通讯,一个操作和一个应用或者SM关联。通常,但不绝对,用传进来的最后一个参数(pData)来描述。

从app到SM,设为NULL,从app到S(通过SM),设为目标id,从SM到S,设为DS_Entry。

传进来的三个参数DG,DAT,MSG表示的意思如下: DG_XXXX:

DG_CONTROL 用于TWAIN操作动作,例如打开SM ? DG_IMAGE 用于操作图形图像操作 ? DG_AUDIO 用于操作声频数据

?

DAT_XXX:

传进来的参数,可以引用一个结构体或者变量,例如DAT_IDENTITY,还有类似于TW_XXX的声明。 MSG_XXX:

用于确定动作,都是类似于MSG_GET,MSG_SET的有前缀MSG_开始的。 三个例子:

打开SM模块:DG_CONTROL/DAT_PARENT/MSG_OPENDSM 打开对话框,让用户可以选择Source:

DG_CONTROL/DAT_IDENTITY/MSG_USERSELECT

导一个图像到文件上:DG_IMAGE/DAT_IMAGEFILEXFER/MSG_GET

协议层被分为7个阶段:

[1,2,3]在且只在SM阶段,[4,5,6,7]在且只在S阶段。 举例说:

1.Pre-Session ----> 2.SM Loaded ----> 3.SM Opened ----> 4.Source Open ---->

SM not loaded App:Get Entry point User:Select Source Capability Negotiation

5.Source Enable ----> 6.Transfer Ready ----> 7.Transferring

Source:Show User App:Inquire Image Source: Transfer Data

Interface or Audio Information

看英文资料精疲力竭??还阳中??

TWAIN学习笔记(贰)

TWAIN

能力分成三组:

?

CAP_XXX:适用于一般的数据源 ? ICAP_XXX:适用于图形图像源 ? ACAP_XXX:适用于声音数据源

能力容器分成四类:

?

TW_ONEVALUE:单值 ? TW_ARRAY:多值 ? TW_RANGE:范围值

? TW_ENUMERATION:枚举值

<上面数据类型很烦,自己看说明去吧>

有三种方法将Source传递到应用程序。native, disk file, buffered memory。音频文件只支持native和disk file。

Native:所有的Source都必须支持的模式,但是有限制性(例如限制于DIB或者PICT格式,受可用内存的限制),Win下,DIB格式(Device-Independent Bitmap),Source给文件分配一个内存块,将指针返回给应用,应用负责转换数据之后释放这块内存。

Disk File:推荐Source支持这种模式,应用程序创建一个Source支持格式的文件,易于读写,尤其是可以避免遇到内存问题。稍微比之后讨论的Buffered模式慢,但比他好操作,并且之后应用程序要操作清理这个文件。

Buffered Memory:所有的Source必须支持该模式。

MD,被关闭了,没保存。

通过一个或多个缓存来实现传输,应用层来分配内存的使用和释放。数据以一无格式位图(unformatted bitmap)传输,应用需要在传输过程中

(TW_IMAGEINFO&TW_IMAGEMEMXFER)用信息标识各个缓存和正确识别位图。于Native和Disk File的一个动作结束传输相比,这种模式可能要多次循环。

应用层实现: TWAIN的实现层次:

最小实现:使用TWAIN默认的,只在Native本机模式,请求单独一个图片。

? 基本实现: ? 最大实现:

?

安装SM(Source Manager)软件:

TWAIN Working Group(TWG)给Win提供四个包:

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新IT计算机TWAIN学习笔记 全文阅读和word下载服务。

TWAIN学习笔记 .doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1075938.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top