欢迎来到雅狐站长网!
兔子CDN

C#教程

当前位置:主页 > 软件教程 > C#教程 >

C#基于Twain协议调用扫描仪,设置多图像输出模式(Multi image output)

时间:2021-05-03 08:53:50|栏目:C#教程|点击:

出处:https://www.cnblogs.com/SunSpring

Twain

随着扫描仪、数码相机和其他图像采集设备的引入,用户热切地发现了将图像整合到他们的文档和其他工作中的价值。然而,支持这种光栅数据的显示和操作成本很高,应用程序开发人员需要创建用户界面并内置设备控制各种各样可用的图像设备。
一旦他们的应用程序准备好支持给定的设备,他们就会面临一个令人沮丧的现实:设备不断地升级新的功能和特性。应用程序开发人员发现他们不断地修改他们的产品,以保持最新图像采集设备和软件应用程序的开发人员都认识到需要图像设备和应用程序之间的标准通信。一个标准有利于使用他们产品的用。它将允许更多的应用程序访问设备供应商的产品,而应用程序供应商可以访问来自这些设备的数据,而不需要关心提供这些数据的是哪种类型的设备或特定的设备。
TWAIN的开发正是出于对一致性和简化的需要。

Twain 开发简介

TWAIN定义了一个标准的软件协议和API(应用程序编程接口),用于在软件应用程序和图像采集设备(数据的来源)之间进行通信。

Twain的三个关键要素是:

必须修改应用程序才能使用TWAIN。

该软件管理应用程序和源程序之间的交互。这段代码在TWAIN开发者的工具包中提供,每个TWAIN应用程序和源代码都应该免费提供。

该软件控制图像采集设备,由设备开发人员按照TWAIN规范编写。传统的设备驱动程序现在包含在源软件中,不需要由应用程序提供。

C#基于Twain协议调用扫描仪,设置多图像输出模式(Multi image output)

关于这几要素是什么关系呢?通俗的说就是Twain是一个协议,这个协议不需要我们自己去实现和设备(我这里是扫描仪)的通讯,这个通讯是由一个叫做Data Source Manager的来提供,我们的应用程序只需要调用Data Source Manager对应的功能,然后由Data Source Manager去负责和支持Twain协议的设备通讯(准确的说应该是设备的驱动)。

C#基于Twain协议调用扫描仪,设置多图像输出模式(Multi image output)

这个Data Source Manager 在windows里面就是由twain_32.dll实现。

C#基于Twain协议调用扫描仪,设置多图像输出模式(Multi image output)

Twain协议PDF https://ask.qcloudimg.com/draft/7651952/jhzuki5dnp.pdf

Twain通讯过程

TWAIN元素之间的通信可以通过两个入口点实现。他们是DSM_Entry()和DS_Entry()。DSM指数据源管理器(也就是twain_32.dll),DS指数据源(驱动程序)。

C#基于Twain协议调用扫描仪,设置多图像输出模式(Multi image output)

应用程序的目标是从源获取数据。但是应用程序不能直接调用源。所有对数据、功能信息、错误信息等的请求都必须通过源管理器处理。

Twain定义了大约140个操作。应用程序将它们发送到源管理器进行传输。应用程序指定哪个元素(源管理器或源)是每个请求操作的最终目的地。
应用程序通过源管理器唯一的入口点DSM_Entry()函数与源管理器通信。DSM_Entry函数的参数列表包含:

操作的数据组(DG_)
操作的数据参数类型(DAT_)
操作的消息(MSG_)

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

Twain状态

应用程序、源管理器和源必须通信来管理数据的获取。这个过程必须以特定的顺序发生,这是合乎逻辑的。例如,在加载源管理器并准备好进行请求通信之前,应用程序无法成功地请求来自源的数据传输。为了保证序列的正确执行,TWAIN协议定义了在TWAIN会话中存在的七种状态。会话是应用程序通过源管理器连接到特定源的时间段。
应用程序连接到源管理器的期间是一个唯一的会话,Source Manager和Source的TWAIN元素都占据一个特定的状态。到新状态的转换是由应用程序或源请求的操作引起的,转换可以向前或向后进行。大多数转换都是单状态转换。
转换状态图如下:

C#基于Twain协议调用扫描仪,设置多图像输出模式(Multi image output)

State 1 to 2 -加载source manager 获取 DSM_Entry接口
State 2 to 3 - 打开source manager
State 3 - 选择 Source
State 3 to 4 - 打开 Source
State 4 - 设置source的Capabilities
State 4 to 5 - 请求从source获取数据
State 5 to 6 - 数据可以准备消息
State 6 to 7 - 开始数据传输
State 7 to 6 to 5 - 完成传输
State 5 to 1 - 断开连接

C# 调用

应用程序调用Source Manager,使用NTwain进行操作,在nuget里面添加引用。

C#基于Twain协议调用扫描仪,设置多图像输出模式(Multi image output)

上一篇:c# 使用谷歌身份验证GoogleAuthenticator的示例

栏    目:C#教程

下一篇:c# 连接池的设置与使用

本文标题:C#基于Twain协议调用扫描仪,设置多图像输出模式(Multi image output)

本文地址:http://www.cnzzww.cn/ccjiaocheng/56530.html

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ: | 邮箱:111#qq.com(#换成@)

Copyright © 2015-2020 雅狐站长网 版权所有 苏ICP备20040415号