介绍 Introduction

一致性需求(Need for Consistency)

对于扫描仪,数字摄像仪,以及其他图像获取设备,用户渴望发现将图像合并到他们的文档以及其他工作的价值。然而,支持展示和操作这些图像数据将会让开发者付出高昂的代价。他们需要为了广泛种类的图像设备构造用户接口以及内建的设备控制程序。当他们的应用程序已经被准备好支持一个已有的设备的时候,他们又面临着令人沮丧的现实,那就是设备将会持续地以提供新功能和特性的方式进行升级更新。应用程序开发者发现他们不得不持续地校正他们的产品来保持当前的最新版本。

图像获取设备的开发者和软件应用程序的开发者逐渐意识到在图像设备和应用程序之间需要有一种统一的通讯标准。该标准将会对产品的开发团队以及他们的用户产生有利的价值。该标准允许设备提供商的产品能够被更多的应用程序所访问控制以及应用程序提供商能够从这些设备中获取数据而不关心这些设备是什么类型,或是由谁提供。TWAIN基于上述一致性以及简化需求而被开发出来。

TWAIN的组成元素(Elements of TWAIN)

TWAIN为了在软件应用和图像获取设备(数据源)之间通讯而定义了一套标准的软件协议以及API(application programming interface,应用程序接口)。

在TWAIN中,有3样关键元素:

  • 应用软件(Application software)

一个应用应该被修改以用于使用TWAIN。

  • 数据源管理器软件(Source Manager software)

该软件管理应用与数据源之间的交互。该模块的代码由TWAIN开发者工具包来提供并且对于任何基于TWAIN协议的应用和数据源的分发都是免费的。

  • 数据源软件(Source software)

该软件控制了图像获取设备。它由设备开发者在遵循TWAIN规范的情况下编写提供。传统的设备驱动在现在的情况下被包含在数据源软件中,并且无须分发给应用。

使用TWAIN规范的好处(Benefits of Using TWAIN)

对于应用开发者

  • 允许你为你的应用用户提供一个简单的方式来合并来自任何兼容的图像设备而不用切换应用程序。

  • 节约时间和金钱。如果你现在正为扫描仪等提供底层的设备驱动。因为遵循TWAIN规范的图像获取设备将会提供数据源软件模块,所以你不再需要编写,支持或是分发这些驱动。

  • 允许在你使用了高层封装的TWAIN应用程序接口后通过简单修改你的应用来访问来自任何遵循TWAIN规范的图像外围设备的图像数据。当然如果你愿意,你也可以提供你自己的用户界面来获取数据。

对于数据源开发者

  • 提高你的产品的可使用性和支持性。更多的应用程序将会因为设备集成TWAIN后的实现便携性以及通用性而成为图像的消费者。

  • 允许你为你的设备提供专有的用户界面。这将使你提供最新的特性给用户而不需要等待应用程序合并这些特性到他们的界面。

  • 通过减少你的开发实现来节约金钱耗费。你只需要创建一个简单的遵循TWAIN规范的数据源,而不是创建和支持各种各样版本的设备控制软件来集成到各种各样的应用中。

对于终端用户

  • 为用户获取使用图像到他们的文档中提供一个简单的方式。他们可以只凭借简单的几个步骤便可访问到图像因为他们他们不会进行各种软件的切换。

注意:TWAIN同时支持所有版本的Microsoft Windows以及Mac OS X。在TWAIN 2.x以及更高的版本中,也支持Linux和64位的操作系统。关于TWAIN支持16位操作系统和Apple Macintosh OS等旧版本操作系统的信息将不会在本TWAIN说明中提及。请参考说明1.9版本的TWAIN说明来获取关于更早版本操作系统使用TWAIN的信息。

TWAIN的创始(Creation of TWAIN)

TWAIN是在图像工业说明计划的需求之后由一些软件和硬件公司所组成的小团队所创建。这个工作团队的目标是提供一个开放的,多平台的解决方案来将图像输入设备和应用软件连接起来。最初的工作团队由五家代表公司所组成,它们分别是:Aldus,Caere,Kodak Alaris,Hewlett-Packard,以及Logitech。三家其他的公司,Adobe,Howtek以及Software Architects也参与了较多的构建。

TWAIN的设计始于1991年1月。关于TWAIN开发者工具包的代码检视从1991年4月开始,持续到了1992年1月。最初的工具包由TWAIN联盟来进行代码检视。这个联盟包含了代表200多家公司的大约300位个人开发者,他们也将继续影响以及指导TWAIN的未来走向。

当前版本的TWAIN由Adobe,Kodak Alaris, Inc.,Fujitsu Computer Products of Aerica,Hewlett-Packard Company,JFL Peripheral Solution Inc.,Ricoh Corporation, Xerox Corporation,以及Lizardtech Corporation等公司所组成的TWAIN工作团队成员编写。

在1998年的5月,微软与TWAIN工作组宣布了一项协议,该协议规定将在Microsoft Windows 98和Microsoft Windows NT 5.0中包含TWAIN数据源管理器。

在TWAIN的创建中,以下的结构目标将会始终坚持:

  • 易使用(Ease of Adoption)。允许应用提供者以合理的开发和测试量来构建遵循TWAIN规范的应用。TWAIN的基础特性仅仅需要对应用进行适量的修改就可以被实现。而想要使用更多完整的功能和设备控制,则能够在可控的范围内增加开发量。

  • 可扩展(Extensibility)。构建必须要包含足够的灵活性以拥抱横跨各种宿主平台的窗口环境(Mac OS X,Microsoft Windows,使用KDE或是Gnome的Linux等)以及促进来自数据源设备与目标应用之间的各种类型数据的交换。在当前的版本下,只能够支持图像数据,但是在未来还将建议支持包含文本,传真,矢量图等数据。

  • 可集成(Integration)。TWAIN实现中的关键元素“属于”操作系统。微软与TWAIN工作团队所宣布的协议表明集成到操作系统中正进行中。TWAIN必须要实现向后兼容(可扩展性)以及平滑地迁移到操作系统中。最大限度地减少使用平台特殊性机制的实现将会提高软件寿命以及可可复用性。

  • 简化应用与数据源之间的交互(Easy Application <-> Source Interconnect)。一种简单直观的数据源验证和选择机制将被应用。应用程序将通过一个简单的API来驱动这种机制。这个机制也会在应用程序和数据源之间建立数据和控制链接。它将会支持应用程序和数据源之间的能力、配置的通讯和协商。

  • 封装用户界面(Encapsulated Human Interface)。设备原生的用户界面在任何一个数据源软件中都要求有实现。应用程序能够以可选的方式来重写原生的用户界面来让数据源控制物理设备。

TWAIN-v2.4-说明文档翻译(1)介绍的更多相关文章

  1. ComponentSpace SAML v2.0 for .NET 使用介绍

    下载地址:http://samlsso.codeplex.com/ 以下描叙参考版本为其官网最新版本2.5.0.6.相对2.4版本,2.5有了很大改进,很多接口方法都变了.使用起来更方便,易懂. 广告 ...

  2. GrapeCity Documents for Excel 文档API组件 V2.2 新特性介绍

    GrapeCity Documents for Excel 文档API组件 V2.2 正式发布,本次新版本包含诸多重量级产品功能,如:将带有形状的电子表格导出为 PDF.控制分页和电子表格内容.将Ex ...

  3. Pywinauto在Windows Twain Driver自动化测试中的应用研究

    摘  要: 以Python为基础,结合对Twain Driver测试工具的具体需求,将Pywinauto引入到Twain Driver的自动化测试中.介绍了Pywinauto的基本概念,通过测试用例说 ...

  4. Atitit.java jna  调用c  c++ dll的原理与实践  总结  v2  q27

    Atitit.java jna  调用c  c++ dll的原理与实践  总结  v2  q27 1. Jna简单介绍1 2. Jna范例halo owrld1 3. Jna概念2 3.1. (1)需 ...

  5. kong插件官方文档翻译

    kong插件官方文档翻译 目录 介绍 文件结构 编写自定义逻辑 存储配置 访问数据存储 自定义实体 缓存自定义实体 扩展Admin API 编写测试 (卸载)安装你的插件 插件开发 - 介绍 什么是插 ...

  6. 最牛逼android上的图表库MpChart(三) 条形图

    最牛逼android上的图表库MpChart三 条形图 BarChart条形图介绍 BarChart条形图实例 BarChart效果 最牛逼android上的图表库MpChart(三) 条形图 最近工 ...

  7. 【转载】正则表达式学习 & ASCII码表

    文章原地址: http://www.jb51.net/tools/zhengze.html <正则表达式30分钟入门教程> 其中有几个地方可以有笔记: \s 匹配任意的空白符 \b 匹配单 ...

  8. 正则表达式30分钟入门教程<转载>

    来园子之前写的一篇正则表达式教程,部分翻译自codeproject的The 30 Minute Regex Tutorial. 由于评论里有过长的URL,所以本页排版比较混乱,推荐你到原处查看,看完了 ...

  9. 正则表达式(来源http://deerchao.net/tutorials/regex/regex.htm)

    目录 跳过目录 本文目标 如何使用本教程 正则表达式到底是什么东西? 入门 测试正则表达式 元字符 字符转义 重复 字符类 分枝条件 反义 分组 后向引用 零宽断言 负向零宽断言 注释 贪婪与懒惰 处 ...

  10. 更新k8s镜像版本的三种方式

    一.知识准备 更新镜像版本是在k8s日常使用中非常常见的一种操作,本文主要介绍更新介绍的三种方法 二.环境准备 组件 版本 OS Ubuntu 18.04.1 LTS docker 18.06.0-c ...

随机推荐

  1. 2018.7.31-2018.8.2记:关于maven

    maven的使用,用得好,则省力省事,但是用不好则会造成一堆莫名其妙的错误,maven在使用的时候,jar包下载异常终止尤为需要注意,很容易就终止了,并且会出现一些下载出空jar包的情况,即:jar包 ...

  2. 由struts2中配置使用servlet引发的思考和复习

    Struts2拦截器到底拦截了什么? 关于struts2中的拦截器,首先再次理解其实只能过滤其中访问的action的映射!再者,因为struts中的action其实就是起到替代servlet作用的,所 ...

  3. Java编码的问题

    <转> 由于JDK是国际版的,在编译的时候,如果我们没有用-encoding参数指定我们的Java源程序的编码格式,则javac.exe首先获得我们操作系统默认采用的编码格式,也即在编译j ...

  4. linux备份恢复命令

    dump 发行版不自带,需要 yum 或 apt 安装.安装时 restore 也会自动安装. 支持分区和增量备份(仅支持分区增量,目录备份不支持增量).(第一次完全备份,第二次及以后只备份增加和修改 ...

  5. 关于ES6中Promise的应用-顺序合并Promise,并将返回结果以数组的形式输出

    1.Promise 基础知识梳理 创建一个Promise实例 const promise = new Promise(function(resolve, reject) { if (success){ ...

  6. C++之常指针,指针常量,函数指针,const用法总结

    1.const char *p,char const *p,char * const p 对于C++而言,没有const * 修饰符,所以,const只可以修饰类型或者变量名.因而const char ...

  7. OpenCV 之 透视 n 点问题

    透视 n 点问题,源自相机标定,是计算机视觉的经典问题,广泛应用在机器人定位.SLAM.AR/VR.摄影测量等领域 1  PnP 问题 1.1  定义 已知:相机的内参和畸变系数:世界坐标系中,n 个 ...

  8. MongoDB 常见问题 - 解决 brew services list 查看 MongoDB 服务 status 显示 error 的问题

    问题背景 将 MongoDB 作为服务运行 brew services start mongodb-community@4.4 也显示运行成功了,但是查看服务列表的时候,发现 MongoDB 服务的还 ...

  9. css对角渐变

    html: <div class="hh"> </div> css: .hh{ width: 500px; height: 500px; backgroun ...

  10. MySQL高级语句(一)

    一.MySQL高级进阶SQL 语句 1.SELECT 2.DISTINCT 3.WHERE  4.AND.OR 5.IN 6.BETWEEN 7.通配符.LIKE 8.ORDER BY 9.| | 连 ...