Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1256704
  • 博文数量: 135
  • 博客积分: 10588
  • 博客等级: 上将
  • 技术积分: 1325
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-18 11:12
文章分类

全部博文(135)

文章存档

2013年(6)

2012年(3)

2011年(11)

2010年(7)

2009年(14)

2008年(6)

2007年(42)

2006年(46)

分类:

2008-10-29 10:03:36

WAIN 数据源管理程序 (DSM) 工业标准的库,用于从静态图像设备提取图像。绝大部分的扫描仪和数码相机都提供了 TWAIN 程序,利用统一的 TWAIN 接口,应用程序可以非常方便地从这些设备中获取图像。

Windows 系统中存在一个 TWAIN_32.dll,所有的 TWAIN 操作都是通过这个 DLL 导出的 DSM_Entry 函数来实现的 (说实在话,我个人觉得 TWAIN 接口设计得太差了,看看 MS WIA,逻辑上非常清晰)。这个函数的声明如下:

        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
            );

1. 打开 DSM (Data Source Manager: 数据源管理器)

    TWAIN 是一个数据源管理程序,应用程序首先要使用 MSG_OPENDSM 消息,打开数据源管理器。这里需要指定一个窗口句柄,应用程序应该在此窗口的消息循环中处理 TWAIN 消息 (MSG_PROCESSEVENT)

2. 选择 DS (Data Source: 数据源)

    因为一个系统中可能存在多个 TWAIN 设备,因此必须选择一个数据源。选择数据源通常有两种方式选择默认数据源 (MSG_GETDEFAULT) 和显示选择数据源对话框,由用户来选择数据源 (MSG_USERSELECT)

3. 打开 DS

    使用 MSG_OPENDS 消息打开数据源。

4. 设置参数

    消息为 MSG_SET,设置各种参数,如获取方式、图像数量等。有些参数由设备支持才有效。

5. 显示扫描界面

    使用 MSG_ENABLEDS 消息,显示设备提供的用户界面 (UI)

6. 获取图像

    如果用户选择扫描什么的,可以在窗口的消息循环中获取到这个事件 (MSG_XFERREADY)。此时,应用程序可以通过 DAT_SETUPFILEXFER 设置文件名,然后用 DAT_IMAGEFILEXFER 获取图像到文件中。

7. 关闭扫描界面

    在窗口的消息循环中获取到 MSG_CLOSEDSREQ MSG_CLOSEDSOK 消息,可以关闭扫描界面 (MSG_DISABLEDS)

8. 关闭 DS

    消息为 MSG_CLOSEDS

9. 关闭数据源
        
消息为 MSG_CLOSEDSM

 

本程序来源于codeproject一个经典的c#调用twain的例子,别人已经有写好的类(老外就是慷慨),稍加改动,将扫描得到的结果先保存为一个文件,然后在picturebox中显示出来。

原文及代码可参考以上连接。
 
本文下载地址:C#Twain
阅读(14530) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

guojieflying2009-01-07 22:01:33

对的,必须安装扫描仪的驱动,

chinaunix网友2009-01-06 10:07:43

哥们.是不是得试先安装上扫描仪呀.不然怎么操作???对不对

chinaunix网友2008-11-17 14:46:42

很有帮助,理解的比较深刻啊!