TWAIN学习笔记

更新时间:2023-05-18 20:58:17 阅读: 评论:0

2008-10-06
TWAIN学习笔记(壹)
TWAIN,定义了一套标准的软件协议(software protocol)和应用程序编程接口 (application programming interface(API))。使用它实现软件应用程序和图象获取设备(扫描仪)之间的通讯。我们见到的情况是:从FILE菜单下选取ACQUIRE就弹出了扫描软件。
 
四层:
ApplicationProtocolAcquisitionDevice
用户层,用户的应用程序,界面之类的东西
协议层,把用户的请求转换成TWAIN明白的内容
请求层,向下请求内容,可以是硬件也可以是数据库
硬件层,数据的来源
 
TWAIN之间通讯通过两个入口,DSM_EntryDS_Entry
 
Application
 所有的应用不能直连到数据层,只能通过SourceManager,通过DSM_Entry()方法。
DSM_Entry()方法有下面的参数:
标识符构造,identifier structure
目标(SourceManager或者Source
三个描述
o 数据组(Data Group DG_
o 工程造价开题报告Data Argument TypeDAT_
o MessageMSG_
用于传数据的指针域
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. ); 
TW_UINT16 FAR PASCAL DSM_Entry(
    pTW_IDENTITY pOrigin,  // source of message
    pTW_IDENTITY pDest,    // destination of message
    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        // pointer to data
);
 
高薪职位
 
 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.
TW_UINT16 FAR PASCAL DS_Entry(
    pTW_IDENTITY pOrigin,    // source of message
    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        // pointer to data
)
 
Source
返回值前缀TWRC_,如果出问题,设置一个前缀为TWCC_的状态码,但是不会自动返回。
 
SMSWin下都是DLL形式实现。
 
Source返回给Application,需要4步:
通知应用层,已经准备好了有东西要返回了。MSG_XFERREADY用于Source通知App
禁用Source的用户接口,MSG_CLOSEDSREQ
抑郁症是怎么引起的通知应用层,按下了OK按钮,应用更改,用于SourceDG_CONTROL /DAT_USERINT
ERFACE / MSG_ENABLEDSUIONLY.打开的情况,MSG_CLOSEDSOK
设备发生动作,只有在应用层给数据层这个优先权,单独传回来。MSG_DEVICEEVENT
DSM_Entry()和DS_Entry()用于通讯,一个操作和一个应用或者SM关联。通常,但不绝对,用传进来的最后一个参数(pData)来描述。
appSM,设为NULL,appS(通过SM),设为目标id,从SMS,设为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
打开对话框,让用户可以选择SourceDG_CONTROL/DAT_IDENTITY/MSG_USERSELECT
导一个图像到文件上:DG_IMAGE/DAT_IMAGEFILEXFER/MSG_GET
 
协议层被分为7个阶段:
[123]在且只在SM阶段,[4567]在且只在S阶段。
举例说:
1.Pre-Session  ---->    2.SM Loaded    ---->    3.SM Opened    ---->    4.Source Open    ---->
SM not loaded     App:Get Entry point          Ur:Select Source      Capability Negotiation
 
5.Source Enable    ---->    6.Transfer Ready    ---->    7.Transferring
Source:Show Ur        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。音频文件只支持nativedisk 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)用信息标识各个缓存和正确识别位图。于NativeDisk File的一个动作结束传输相比,这种模式可能要多次循环。
 
应用层实现:
TWAIN的实现层次:
最小实现:使用TWAIN默认的,只在Native本机模式,请求单独一个图片。
基本实现:
最大实现:
 安装SMSource Manager)软件:
TWAIN Working GroupTWG)给Win提供四个包:

本文发布于:2023-05-18 20:58:17,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/914181.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   应用   用户   应用层
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图