CN102937940B - 连接设备的双向扩展 - Google Patents

连接设备的双向扩展 Download PDF

Info

Publication number
CN102937940B
CN102937940B CN201210331156.9A CN201210331156A CN102937940B CN 102937940 B CN102937940 B CN 102937940B CN 201210331156 A CN201210331156 A CN 201210331156A CN 102937940 B CN102937940 B CN 102937940B
Authority
CN
China
Prior art keywords
connection device
usb
usb connection
way
operating system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201210331156.9A
Other languages
English (en)
Other versions
CN102937940A (zh
Inventor
H.R.福里斯特三世
M.P.费内伦
G.E.吉伦
F.戈根伊
J.哈钦斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN102937940A publication Critical patent/CN102937940A/zh
Application granted granted Critical
Publication of CN102937940B publication Critical patent/CN102937940B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/387Information transfer, e.g. on bus using universal interface adapter for adaptation of different data processing systems to different peripheral devices, e.g. protocol converters for incompatible systems, open system

Abstract

描述了USB和/或其它类似总线/连线的双向扩展技术,其中提供允许与连接设备双向通信的接口。该接口可以实现成操作系统部件以便为来自许多不同独立硬件厂商(IHV)的设备处置双向通信。不同设备的设备驱动器可以依照双向通信的建立模式配置成包括扩展文件。扩展文件描述所支持的双向属性、设备的能力和如何调用设备。该接口操作来检测扩展文件和为双向通信安装相应设备。然后,应用通过该接口交互以便访问、检索和设置连接设备的配置和状态数据。扩展文件的使用允许创建可以不加实质改变而跨不同平台使用的架构无关设备驱动器。

Description

连接设备的双向扩展
背景技术
通用串行总线(USB)是用户可以将设备与他们的计算机连接的一种方式。对于USB连接设备,不存在在USB连接上定义、检索或提供丰富设备状态和配置信息的标准方式。结果,迫使硬件开发者创建被设计成个别地为设备处置状态和配置通信的定制设备特有软件(如端口监视器和语言监视器)。这样的设备特有软件传统上是使用复杂二进制编码开发的。此外,由不同硬件开发者进行重复工作以形成它们自己的定制解决方案。同样,许多不同定制解决方案的使用可能使开发成本增加,引起驱动器可靠性问题,并且成为计算平台不稳定的因素。
发明内容
提供该发明内容是为了介绍下面在具体实施方式中进一步描述的简化形式的一系列概念。该发明内容并非意图识别要求保护主题的关键特征或基本特征,也不是意图用作帮助确定要求保护主题的范围。
描述了USB和/或类似总线/协议的双向(bidi)扩展技术,其中提供允许与连接设备双向通信的接口。该接口可以配置成作为操作系统部件并入的双向扩展器。该双向扩展器被设计成支持计算设备与许多不同独立硬件厂商(IHV)的连接设备之间的双向通信。该双向扩展器实现访问和定义连接设备的状态和配置数据的架构无关扩展模式。在一种做法中,该双向扩展器依照该模式检测包含在设备驱动器内的扩展文件,并采用该文件为双向通信初始化设备。在至少一些实施例中,该双向扩展器支持使用像JavaScript和/或可扩展标记语言(XML)那样的基于脚本编程语言定义的扩展文件。然后,应用可以调用该双向扩展器来请求设备的数据,设置设备特有数据的值和/或注册来接收有关数据的变化通知。
附图说明
具体实施方式是参考附图来描述的。在这些图中,附图标记的最左边数字标识该附图标记第一次出现的图。在该描述和附图中在不同实例下使用相同标号可以指示相似或相同项目。
图1是依照一个或多个实施例的示范性实现中的环境的例示。
图2是更详细地示出图1的各方面的示范性实现中的系统的例示。
图3例示依照一个或多个实施例的打印环境。
图4是描述依照一个或多个实施例允许USB设备双向通信的示范性过程的流程图。
图5是描述依照一个或多个实施例初始化USB设备的示范性过程的流程图。
图6是描述依照一个或多个实施例为双向通信配置USB设备的示范性过程的流程图。
图7是描述依照一个或多个实施例向设备询问配置和状态数据的示范性过程的流程图。
图8例示可以用于实现本文所描述的各种实施例的示范性计算系统。
具体实施方式
概述
描述了双向扩展技术,其中提供允许与连接设备双向通信的接口。例如,USB双向扩展器可以作为打印子系统的部件来提供,以便为来自多个不同独立硬件厂商(IHV)的USB打印机处置双向通信。双向通信可以用于获取/设置所支持的配置和状态数据的双向值,在打印机的情况下,配置和状态数据可以包括像墨水液位、打印作业状态、纸盒类型、打印机功能等那样的项目。打印机的打印机驱动器可以依照USB双向通信的已建立扩展模式配置成包括一个或多个扩展文件。该扩展文件描述所支持的双向值、行为、和/或询问、设备的能力、以及如何对设备进行调用来操纵数据。USB双向扩展器操作来检测扩展文件和按照扩展文件为双向通信安装相应设备。然后,应用可以通过USB双向扩展器交互,以便访问、检索和设置USB连接设备的配置和状态数据。
尽管在这个文件中自始至终提供USB连接设备的例子,但双向扩展技术不局限于USB或USB连接设备。而是,该技术可同样应用于利用像传输控制协议(TCP)、直接串行连接和/或像Bluetooth                                                那样的无线技术那样的各种发送/接收协议与来自IHV的外围设备连接和通信的类似总线、连线和设备。因此,也可以为其它类似类型的总线、连线和设备配置和提供以与本文通过例子讨论的USB设备的USB双向扩展器相当的方式操作的双向扩展器。
在如下的讨论中,提供了标题为“操作环境”的部分,这个部分描述可以采用一个或多个实施例的示范性环境。接着,标题为“示范性USB双向扩展技术”的部分描述依照一个或多个实施例的双向扩展的示范性细节和过程。最后,标题为“示范性系统”的部分描述可以用于实现一个或多个实施例的示范性系统。
操作环境
图1在100总体例示了依照一个或多个实施例的操作环境。环境100包括通过通用串行总线(USB)连线104与一个或多个USB设备106连接的计算设备102。USB设备106的例子包括如例示的打印机、照相机和多媒体设备,以及典型地通过USB连线104与计算设备102连接的其它类型设备。USB设备106一般代表通过所例示的USB或使用其它相当的发送/接收协议、连线和/或技术在本地与计算设备102连接的设备。计算设备102可以具体化成,举例来说而非限制性地,像台式计算机、便携式计算机、平板计算机、像个人数据助理(PDA)那样的手持计算机、蜂窝式电话等那样的任何适当的计算设备。下面在图8中示出和描述了可以代表包括计算设备102的各种系统和/或设备的计算系统的一个例子。
计算设备102也可以在网络108上与服务提供者110连接,以便访问各种资源112并与各种资源112交互。资源112可以包括典型地由一个或多个提供者使其可在网络上可用的服务和/或内容的任何适当组合。这些服务的一些例子包括但不限于搜索服务、发送/接收消息的消息服务、网络打印服务和社交联网服务。内容可以包括文本、视频、广告、音频、多媒体流、动画、图像、网页、web应用、设备应用等的各种组合。
为了进一步例示示范性操作环境,现在考虑更详细地描绘图1的示范性计算设备102和示范性USB设备106的各个方面的图2。在这个例子中,USB设备106被例示成USB打印机,但是,本文所描述的技术可应用于各种不同类型的USB设备。
图2的计算设备102包括一个或多个处理器202、一个或多个计算机可读介质204、和驻留在计算机可读介质上和可被处理器执行的一个或多个应用206、操作系统208、USB双向扩展器210和一个或多个设备驱动器212。如下面所更详细讨论的,USB双向扩展器210代表允许在应用206与和设备驱动器212相对应的设备之间双向通信的接口。设备驱动器212提供操作系统208与硬件设备之间的接口,以便处理命令、将数据格式化、以及在其他方面允许以设备能够理解的方式与硬件设备交互。
USB设备106被描绘成含有一个或多个处理器214和一个或多个计算机可读介质216。另外,USB设备106还包括驻留在计算机可读介质上并且可以使用本文所述的USB双向扩展技术通过USB连线104提供给计算设备的配置数据218和状态数据220。配置数据218描述设备的各种功能能力。对于打印机设备,这可以包括纸盒的类型、打印功能、存储/处理能力等。状态数据220代表设备特有状态信息。对于打印机设备,这可以包括墨水液位、打印作业状态、纸盒状态、打印错误信息、连接数据等。
本文所使用的计算机可读介质,举例来说而非限制性地,可以包括典型地与计算设备相联系的所有形式的易失性和非易失性的存储器和/或存储介质。这样的介质可以包括只读存储器(ROM)、随机访问存储器(RAM)、闪速存储器、硬盘、可拆卸式介质等。计算机可读介质的一种这样的配置是信号承载“通信介质”,其配置成像经由网络那样,将计算机可读指令(例如,作为载波)发送给计算设备的硬件。计算机可读介质还可以配置成本身不包括信号的“计算机可读存储介质”。因此,计算机可读介质包括其进一步例子可以在图8的示范性计算系统的讨论中找到的“计算机可读存储介质”和“通信介质”。
在操作时,如下面更详细所述,计算设备102通过USB双向扩展器210实现扩展模式以便允许与USB设备106 的双向通信。为此,计算设备102可以显现USB 双向扩展器210,其代表为双向通信配置设备、处置来自应用的请求和使用本文所述的技术将来自USB连接设备的所请求数据提供给应用的功能。尽管分开描绘,但USB双向扩展器210可以作为操作系统208的组成部件来提供。例如,当被实现来为USB打印机处置双向通信时,USB双向扩展器210可以作为打印子系统的部件来提供。
已经描绘了示范性操作环境,现在考虑依照一个或多个实施例讨论示范性USB双向扩展技术。
示范性USB 双向扩展技术
这个部分讨论有关可以通过像图1和图2的示范性计算设备那样的适当配置设备实现的示范性USB双向扩展技术的细节。在如下的讨论中,结合图3来讨论示范性打印机实现。此后,结合图4到图7讨论USB 双向扩展的一些示范性过程。
示范性打印环境
考虑例示依照一个或多个实施例允许双向通信的示范性打印环境300的图3。这里,示范性打印环境300包括可以作为计算设备的操作系统的一部分提供的打印子系统302。打印子系统302进一步包括用于管理和排队来自应用206的打印作业的打印后台处理服务304和端口监视器306。另外,描绘了打印机驱动器308和通过USB连线104与打印子系统302连接的相应USB打印机310。其它适当发送/接收协议和技术也可以用于连接可以以与本文所述的USB设备/连线例子大致相同的方式实现双向扩展技术的其它类型设备。
端口监视器306被配置成与和端口连接的设备通信。端口监视器306还操作来管理多个端口,包括创建端口、打开/关闭端口、指定端口等。端口指的是像代表与特定设备的连接(比如网络地址(例如,TCP/IP地址),或在本例中对于USB打印机310的USB连线104)的逻辑名。一般说来,通过端口监视器306的数据以目的地设备可以理解的形式提供。在本例中,USB双向扩展器210作为监视器306的部件来提供。USB双向扩展器210也可以作为打印子系统302或操作系统208的部件,或甚至作为独立部件来提供。
USB双向扩展器210操作来为双向通信配置USB打印机310并为应用提供接口以便为打印机访问、使用和/或更新数据。USB双向扩展器210可以依照双向扩展模式这样做,该双向扩展模式建立可以在USB设备106与计算设备102之间传递和/或由USB设备和计算设备102采用的设备属性(例如,值/行为/询问)的分层结构。双向扩展模式定义不同属性以及扩展文件和/或用于实现双向通信的请求/响应格式。
在一种做法中,USB双向扩展器210被配置成检测和解释可以包括在设备驱动器212内的各种扩展文件。当硬件开发者将扩展文件包括在设备的驱动器中时,USB双向扩展器210知道为USB上的双向通信安装设备。一般说来,扩展文件被配置成提供所支持的双向属性(例如值/行为/询问)的列表、设备配置和能力信息和描述如何通过属性调用相应设备来访问状态和配置数据的信息。
于是,为了利用USB 双向扩展器210提供的双向通信功能,开发者可以将通过该模式定义的一个或多个扩展文件作为设备驱动器的一部分并入。使用通过该模式定义的格式,开发者创建USB 双向扩展器210用于安装相应设备的兼容扩展文件。
用于允许USB 双向扩展技术的扩展文件可以以任何适当方式配置。为了简化开发,可以将USB 双向扩展器210配置成支持使用基于脚本编程语言编写的扩展文件。可以用于实现扩展文件的适当脚本编写语言的例子包括但不限于JavaScript、欧洲计算机制造商协会(ECMA)脚本、可扩展标记语言(XML)或其它标记语言脚本和异步JavaScript和XML(AJAX)。使用脚本编写语言取代二进制代码使开发者可以迅速和廉价地创建与双向通信兼容的USB设备驱动器。另外,基于脚本扩展文件提供了访问和定义配置/状态数据的处理器-架构无关方式。因此,可以避免定制二进制代码和不同平台的独立二进制的开发。
举例来说,图3的打印机驱动器308被例示成包括双向扩展文件312和脚本扩展文件314。在本例中,双向扩展文件312代表描述相应打印机支持的属性的类型的列表。在一些实施例中,双向扩展文件312被配置成编码所支持的属性的列表的XML文件。脚本扩展文件314代表配置成描述设备的各种功能和能力和定义用于调用设备的入口点的基于脚本文件。入口点可以包括可被执行以从设备中获取适当数据的功能。在一个特定例子中,脚本扩展文件314使用JavaScript来实现。
USB 双向扩展器210可以检测和使用双向扩展文件312和脚本扩展文件314来为USB打印机310初始化双向通信。一般说来,为USB设备初始化双向通信涉及创建可以询问的属性(例如,所支持的属性)的表格或数据库,以及加载可以经由USB双向扩展器210执行的来自扩展文件的脚本以获取属性的当前值。在图3的例子中,USB双向扩展器210包括或以其他方式利用代表使用双向扩展文件312创建的属性的表格的双向模式对象316。USB打印机310的表格可以通过,例如,分析编码在双向扩展文件312中的XML属性列表来构成。另外,USB双向扩展器210包括或以其他方式利用脚本宿主对象318,其代表可以将脚本扩展文件314装载到其中供USB 双向扩展器210执行的宿主对象。此外,USB双向扩展器210可以创建端口访问对象320以促进经由适当端口与设备通信。一般说来,端口访问对象320是在需要时创建的,并且提供端口监视器306与USB 双向扩展器210采用的基于脚本代码之间的接口。有关USB双向扩展器210的操作以及USB双向扩展的技术的其它方面的另外细节将结合如下的示范性过程加以讨论。
示范性过程
现在描述有关可以使用前述系统和设备实现的USB双向扩展的过程。这些过程被显示成未必局限于所示的特定次序的若干组方框。这些过程可以结合任何适当硬件、软件、固件或它们的组合来执行。在至少一些实施例中,这些过程可以由像上述的那些计算设备那样的适当配置计算设备来执行。另外,或可替代地,这些过程可以通过像本文所述的USB双向扩展器210那样的操作系统接口来实现。
图4是描述依照一个或多个实施例提供与USB设备的双向通信的示范性过程400的流程图。显现配置成支持与多个USB连接设备的双向通信的操作系统接口(方框402)。例如,USB双向扩展器210可以由计算设备102上的操作系统208显现。USB双向扩展器210可以作为操作系统208的组成部件来提供。在一个例子中,USB双向扩展器210被实现成由端口监视器306提供的一个或多个应用编程接口(API)。USB双向扩展器210提供可以为像不同制造商制造的打印机那样来自多个IHV的设备处置双向通信的公用接口。
通过操作系统接口处置应用对USB连接设备的状态和配置数据的请求(方框404),以及响应该请求将所请求的状态和配置数据返给应用(方框406)。例如,USB双向扩展器210可以接收和处理来自应用206的请求。USB双向扩展器210可以代表应用206格式化USB连接设备和向USB连接设备提交询问。响应该询问获得的数据可以由USB双向扩展器210转换成适用应用206的格式,并返给应用206。这样,可以通过操作来安装与USB设备的双向通信的适当配置的USB 双向扩展器210,操纵不同的所支持的双向属性的值。
图5是描述依照一个或多个实施例为双向通信初始化设备的示范性过程500的流程图。为设备初始化USB端口(方框502)。例如,配置成为多个设备管理UBS端口的端口监视器306可以打开和对设备指定端口。在至少一些实施例中,端口监视器306可以设计成处置来自不同硬件制造商的打印机,并且可以包括USB双向扩展器210以促进与打印机的双向通信。
检查设备的驱动器以确定该驱动器是否包括支持双向通信的扩展文件(方框504),并根据该检查作出该驱动器是否支持双向的判定(方框506)。例如,USB双向扩展器210可操作来检测和处理驱动器中的各种扩展文件。包括像示范性双向扩展文件312和/或脚本扩展文件314那样的适当扩展文件表示支持双向通信。
如果不支持双向,则USB 双向扩展器210和/或端口监视器306可以在不支持双向的情况下配置USB端口(方框508)。在这种情况下,相应设备将不能通过本文所述的USB双向框架提供状态和配置数据。
另一方面,如果支持双向,则USB双向扩展器210和/或端口监视器306可以将USB端口配置成允许双向通信(方框510)。当这种情况发生时,使用驱动器内检测到的扩展文件来为双向通信安装指定给设备的端口。然后,相应设备将能够通过USB 双向框架提供状态和配置数据。
在一种做法中,USB双向扩展器210创建代表端口/设备的基于脚本对象以便为设备实现双向通信。一般说来,基于脚本对象操作为计算设备102与USB设备106之间的双向交互处置相应基于脚本请求、通信和数据的接口。此外,这些对象用于执行脚本和用作应用、操作系统和USB设备之间的中介。这可能涉及基于脚本格式、原生操作系统格式和不同应用和设备可理解的格式之间来回转换命令和数据。如上所述,USB 双向框架可以采用JavaScript或其它适当脚本编写语言来为双向通信初始化USB端口和相应设备。有关可以用于按方框510配置端口/设备的操作的一些示范性细节可以在如下图6的讨论中找到。
具体地说,图6描绘了描述示出依照一个或多个实施例为双向通信配置端口的示范性操作的过程600的流程图。在至少一些实施例中,示范性过程600由USB双向扩展器210按本文所述执行。为此,双向扩展器210可以参考和利用为兼容USB设备并入驱动器中的XML和/或JavaScript扩展文件。为设备创建双向端口对象(方框602)。例如,可以将端口监视器306配置成为端口监视器306管理的每种端口/设备组合生成双向端口对象。
例如,USB 双向扩展器210可以搜索设备的驱动器以发现如上面所讨论的扩展文件。如果存在一个或多个扩展文件,则设备支持USB 双向通信,USB 双向扩展器210为设备创建相应双向端口对象。双向端口对象被配置成为对于支持对模式值的询问的端口/设备管理该模式值的轮询。双向端口对象可以包含如双向扩展文件312中所定义的设备支持的扩展模式值的列表和对含有可执行对模式值轮询的脚本的脚本扩展文件314的链接。因此,双向端口对象用作应用206和其它实体可以调用/与之交互以便访问相应端口/设备的端口的抽象。
创建设备的脚本宿主对象(方框604),并装载描述设备的双向入口点的脚本扩展文件(方框606)。例如,双向端口对象可以为特定端口/设备创建脚本宿主对象318。更一般地说,为每个端口/设备组合创建不同脚本宿主对象318。脚本宿主对象318提供相应脚本的执行环境。因此,可以将脚本扩展文件314从设备驱动器装载到它被“寄生”的脚本宿主对象318中。当被调用时,装载到脚本宿主对象318中的JavaScript(或其它脚本)被配置成处置访问适当入口点(例如,功能、API、可执行代码)以获取、设置或以其他方式操纵特定模式值的处理。
发出询问以获取所支持的双向属性的列表(方框608),并且为所支持的双向属性生成模式对象(方框610)。例如,可以以任何适当方式处理包含在驱动器中的双向扩展文件312以获取所支持双向属性的列表,该列表包括所支持的模式值、行为和询问。双向属性代表可以使用本文所讨论的技术获得和/或操纵的设备的不同配置和状态数据,以及可以根据配置和状态数据执行的行为/询问。在一种做法中,装载到脚本宿主对象318中的JavaScript操作来调用适当功能(或其它合适入口点)以获取双向扩展文件312中定义的设备支持的双向属性的列表。在一些情况下,通过与双向扩展文件312的交互返回可以用于构建模式对象的阵列的基于XML列表。
然后,USB双向扩展器210可以通过基于XML列表来处理,以便为每个支持的属性创建模式对象。其结果是代表设备支持的双向属性的模式对象的表格或数据库。可以采用以这种方式创建表格或数据库的预处理来避免每个请求的按需处理。另外,所支持的属性的缓存列表允许USB双向扩展器210和/或应用206迅速地发现所支持的属性。模式对象还提供用于设置、获取、缓存或以其他方式操纵配置和状态数据的值的参数。
此刻,按方框602创建的双向端口对象被配置成支持双向模式行为/询问以操纵设备的配置和状态数据,包括通过创建的模式对象获取和/或设置模式值。应用206可以通过配置成如前所述为USB设备处置双向请求的USB双向扩展器210请求这样的数据。访问和利用刚描述过的示范性USB双向扩展器210和模式对象的示范性技术可以结合如下示范性过程找到。
具体地说,图7描绘了描述示出与USB连接设备的双向通信的示范性操作的过程700的流程图。获取来自应用的、对来自USB连接设备的配置/状态数据的请求(方框702)。例如,应用206可以调用USB双向扩展器210来启动获取所选模式对象的值的处理。在至少一些实施例中,该调用被配置成对USB双向扩展器210显现的API作出的API调用。另外或可替代地,USB双向扩展器210可以配置成周期性地轮询连接设备以获取配置/状态数据的更新。然后,USB双向扩展器210可以自动地将被轮询数据的通知提供返回给注册来接收特定设备的更新的应用。轮询和通知可以在没有应用启动的情况下发生。因此,对配置/状态数据的更新可以响应显性请求和/或通过USB双向扩展器210自动进行的周期性轮询而启动。
响应请求和/或当配置/状态数据要以其他方式提供给应用时,作出有关缓存模式数据是否可用的确定(方框704)。如果高速缓存了数据,则将缓存模式数据返给应用(方框706)。这里,USB双向扩展器210首先检查来看所请求数据的当前值是否可用。例如,最近可能结合另一个请求或根据USB双向扩展器210的轮询缓存了值。如果当前值可用,则USB双向扩展器210可以马上返回值,从而应用206不必等待处理来更新数据。然后,USB双向扩展器210可以接着更新配置/状态数据,以保证提供给应用的值没有发生变化。
因此,如图7所示,如果按方框704数据不可用,则该框架可以接着更新缓存数据或获取新数据。为此,如设备特有脚本扩展文件所定义,根据请求格式化双向模式询问(方框708)。例如,模式对象的表格或数据库(例如,支持的属性的XML列表)可以用于确定对于给定请求或轮询操作要更新哪些值。脚本宿主对象318包括可以为了调用设备的适当功能或其它合适入口点以便为所选双向模式对象获取当前值而行使的脚本。
于是,USB双向扩展器210可以操作来调用脚本,该脚本被装载到宿主对象318,而所选双向模式对象316以及端口访问对象320用于以原生方式与设备通信。换句话说,端口访问对象320可以在通过脚本宿主对象实现的基于脚本命令/操作与端口监视器306、操作系统208和/或USB设备106使用的通信格式之间转换。这样,可以询问设备来获取配置/状态数据的更新的模式对象值(方框710)。
使用响应询问而返回的更新值,对模式对象值中的任何变化作出确定(方框712)。如果值已变化,则可以将变化通知应用(方框714)。这涉及将更新值返给请求应用。否则,当前模式对象值被缓存(方框716),并且可以用于处置随后请求。
例如,可以采用应用的按需请求和/或USB双向扩展器210的周期性轮询的组合在USB连线104上获取USB设备106的更新的配置/状态数据。在至少一些实施例中,缓存数据如果可用的话,可以首先将其返给请求者以缩短停留时间。然后,USB双向扩展框架可以更新背景中的数据,并向应用提供任何变化的通知。每当轮询或更新相应数据时,也可以将通知提供给为特定USB设备106的配置/状态通知而注册的应用206。另外,可以缓存通过更新确定的数据的任何变化,以便可迅速地从USB双向扩展框架获取最近数据。通过更新与相应双向模式对象316相联系的值来缓存数据,以反映最近值。
在描述了有关USB 双向扩展技术的一些示范性细节之后,现在考虑依照一个或多个实施例实现所述技术的示范性系统的讨论。
示范性系统
图8在800总体例示了包括示范性计算设备802的示范性系统,该示范性计算设备802代表可以实现上述各种实施例的一个或多个这样的计算系统和/或设备。计算设备802可以是,例如,服务提供者110的服务器、与计算设备102相联系的设备(例如,客户端设备)、芯片上系统和/或任何其它合适的计算设备或计算系统。
示范性计算设备802包括一个或多个处理器804或处理单元、可以包括一个或多个存储器和/或存储部件808的一个或多个计算机可读介质806、输入/输出(I/O)设备的一个或多个输入/输出(I/O)接口810和允许各种部件和设备相互通信的总线812。计算机可读介质806和/或一个或多个I/O设备可以作为计算设备802的一部分包括进来,或可替代地,可以与计算设备802耦合。总线812代表几种类型总线结构的一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口和使用多种多样总线架构的任何一种的处理器或本地总线。总线812可以包括有线和/或无线总线。
一个或多个处理器804不受形成它们的材料或其中采用的处理机制限制。例如,处理器可以由半导体和/或晶体管(例如,电子集成电路(IC))组成。在这样的背景下,处理器可执行指令可以是电可执行指令。存储器/存储部件808代表与一种或多种计算机可读介质相联系的存储器/存储容量。存储器/存储部件808可以包括易失性介质(像随机访问存储器(RAM)那样)和/或非易失性介质(像只读存储器(ROM)、闪速存储器、光盘、磁盘等那样)。存储器/存储部件808可以包括固定介质(例如,RAM、ROM、固定硬盘驱动器等),以及可拆卸式介质(例如,闪速存储器驱动器、可拆卸式硬盘驱动器、光盘等)。
输入/输出接口810允许用户将命令和信息输入计算设备802中,并且还允许使用各种输入/输出设备向用户和/或其它部件或设备展示信息。输入设备的例子包括键盘、触摸屏显示器、光标控制设备(例如,鼠标)、麦克风、扫描仪等。输出设备的例子包括显示设备(例如,监视器或投影仪)、扬声器、打印机、网卡等。
本文可以在软件、硬件(固定逻辑电路)或程序模块的一般背景下描述各种技术。一般说来,这样的模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元件、部件、数据结构等。这些模块和技术的实现可以被存储在某种形式的计算机可读介质上或跨过某种形式的计算机可读介质传输。计算机可读介质可以包括计算设备可以访问的多种多样可用介质。举例来说,但非限制性地,计算机可读介质可以包括“计算机可读存储介质”和“通信介质”。
“计算机可读存储介质”可以指与单纯信号传输、载波或信号本身相比允许永久和/或非暂时存储信息的介质和/或设备。因此,计算机可读存储介质指的是非信号承载介质。计算机可读存储介质还包括以在一些实施例中可以用于实现所述技术的各个方面的硬件形式实现的含有指令、模块和/或固定设备逻辑的硬件元件。
计算机可读存储介质包括以适合存储像计算机可读指令、数据结构、程序模块、逻辑元件/电路或其它数据那样的信息的方法或技术实现的易失性和非易失性、可拆卸式和不可拆卸式介质和/或存储设备。计算机可读存储介质的例子包括但不限于RAM、ROM、EEPROM、闪速存储器或其它存储技术、CD-ROM、数字多功能盘(DVD)或其它光存储、硬盘、磁盒、磁带、磁盘存储或其它磁存储设备、集成电路或芯片的硬件元件(例如固定逻辑)或适合存储所希望信息并且计算机可以访问的其它存储设备、有形介质或制品。
“通信介质”可以指配置成像经由网络那样将指令发送给计算设备的硬件的“信号承载介质”。通信介质典型地可以以像载波、数据信号或其它传输机制那样的调制数据信号体现计算机可读指令、数据结构、程序模块或其它数据。通信介质还包括任何信息输送介质。术语“调制数据信号”意味着其一个或多个特征以将信息编码在信号中的方式设置或变化的信号。举例来说,但非限制性地,通信介质包括像有线网络或直接连线那样的有线介质,以及像声、RF、红外和其它无线介质那样的无线介质。
任何上述介质的组合也包括在计算机可读介质的范围内。于是,包括USB双向扩展器210、设备驱动器212、端口监视器306、操作系统208、应用206和其它程序模块在内的软件、硬件或程序模块可以实现成体现在某种形式的计算机可读介质上的一条或多条指令和/或逻辑。
于是,本文所述的特定模块、功能、部件和技术可以用软件、硬件、固件和/或它们的组合来实现。计算设备802可以配置成实现与在计算机可读介质上实现的软件和/或硬件模块相对应的特定指令和/或功能。该指令和/或功能可通过一个或多个制品(例如,一个或多个计算设备802和/或处理器804)来执行/操作,以实现USB双向扩展的技术以及其它技术。这样的技术包括但不限于本文所述示范性过程。因此,计算机可读介质可以配置成存储或以其他方式提供指令,当指令被本文所述的一个或多个设备执行时导致USB双向扩展的各种技术。
结论
依照上文的详细描述,可以提供允许与USB连接设备双向通信的接口。该接口可以配置成作为操作系统部件并入和设计成支持USB设备的双向通信的USB 双向扩展器。该USB 双向扩展器支持和采用使用基于脚本编程定义的扩展文件,以便为双向通信安装USB设备。然后,应用可以调用USB 双向扩展器来请求设备的数据,设置设备特有数据的值和/或注册来接收有关数据的变化通知。
尽管用结构特征和/或方法行为特有的语言对实施例作了描述,但要明白的是,限定在所附权利要求书中的实施例并不需要局限于所述的特定特征或行为。而是,该特定特征和行为是作为实现要求保护的实施例的示范性形式公开的。

Claims (11)

1.一种用于实现双向通信的方法,其包括:
显现配置成支持与多个通用串行总线(USB)连接设备的双向通信的操作系统接口,该操作系统接口被配置作为所述USB连接设备的公用端口监视器的部件,使得能够使用基于脚本的对象与多个USB连接设备进行双向交互,所述基于脚本的对象被创建以代表所述多个USB连接设备的每一个的端口/设备组合;
生成所述基于脚本的对象以代表所述USB连接设备的每一个以便公共地通过所述操作系统接口实现所述USB连接设备的双向交互;
使用所述基于脚本的对象通过所述操作系统接口处置来自应用的、对USB连接设备的状态和配置数据的请求;以及
响应所述请求将来自USB连接设备的所请求状态和配置数据返给应用。
2.如权利要求1所述的方法,其中所述被创建以代表端口/设备组合的基于脚本的对象包括双向模式对象、脚本宿主对象和对应于所述USB连接设备每一个的端口访问对象。
3.如权利要求1所述的方法,其中所述操作系统接口被配置成为来自多个不同独立硬件厂商(IHV)的设备处置双向通信。
4.如权利要求1所述的方法,其中所述操作系统接口包括操作来处置到USB连接打印机的打印的打印子系统的部件。
5.如权利要求1所述的方法,其中所述操作系统接口实现基于脚本扩展模式。
6.如权利要求1所述的方法,其中所述操作系统接口被进一步配置成:
依照基于脚本扩展模式检测包括在与多个USB连接设备相对应的设备驱动器中的基于脚本扩展文件;以及
根据检测的基于脚本扩展文件为双向通信配置多个USB连接设备。
7.如权利要求6所述的方法,其中每个特定设备的所述基于脚本扩展文件描述特定设备支持的状态和配置数据的双向值、行为和询问,以及用于访问来自特定设备的状态和配置数据的入口点。
8.如权利要求6所述的方法,其中为双向通信配置多个USB连接设备包括:
处理基于脚本扩展文件以创建USB连接设备支持的双向属性的表格;以及
装载可经由所述操作系统接口调用的来自所述基于脚本扩展文件的脚本以获取所支持的双向属性的当前值。
9.如权利要求1所述的方法,其中处置来自应用的、对USB连接设备的状态和配置数据的请求包括:
代表应用格式化USB连接设备和向USB连接设备提交询问。
10.如权利要求1所述的方法,其中处置来自应用的、对特定USB连接设备的状态和配置数据的请求包括:
装载来自与该特定USB连接设备相对应的驱动器的基于脚本的扩展文件,所述基于脚本的扩展文件可被执行来询问该特定USB连接设备的入口点,以更新代表该特定USB连接设备所支持的双向属性的双向模式对象的值。
11.一种被配置成实现双向通信的装置,其包括:
用于显现配置成支持与多个通用串行总线(USB)连接设备的双向通信的操作系统接口的单元,该操作系统接口被配置作为所述USB连接设备的公用端口监视器的部件,使得能够使用基于脚本的对象与多个USB连接设备进行双向交互,所述基于脚本的对象被创建以代表所述多个USB连接设备的每一个的端口/设备组合;
用于生成所述基于脚本的对象以代表所述USB连接设备的每一个以便公用地通过所述操作系统接口实现所述USB连接设备的双向通信的单元;
用于使用所述基于脚本的对象通过所述操作系统接口处置来自应用的、对USB连接设备的状态和配置数据的请求的单元;以及
用于响应所述请求将来自USB连接设备的所请求状态和配置数据返给应用的单元。
CN201210331156.9A 2011-09-08 2012-09-10 连接设备的双向扩展 Active CN102937940B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/228292 2011-09-08
US13/228,292 2011-09-08
US13/228,292 US8904048B2 (en) 2011-09-08 2011-09-08 Bidi extension for connected devices

Publications (2)

Publication Number Publication Date
CN102937940A CN102937940A (zh) 2013-02-20
CN102937940B true CN102937940B (zh) 2015-06-24

Family

ID=47696838

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210331156.9A Active CN102937940B (zh) 2011-09-08 2012-09-10 连接设备的双向扩展

Country Status (2)

Country Link
US (2) US8904048B2 (zh)
CN (1) CN102937940B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8904048B2 (en) * 2011-09-08 2014-12-02 Microsoft Corporation Bidi extension for connected devices
CN103488519B (zh) * 2013-09-27 2016-05-25 上海野火网络科技有限公司 一种交互式脚本语言解释器的实现方法
JP6468937B2 (ja) * 2015-02-27 2019-02-13 キヤノン株式会社 情報処理装置、制御方法、制御プログラム
JP2016177609A (ja) * 2015-03-20 2016-10-06 セイコーエプソン株式会社 印刷制御装置、印刷制御プログラム
US10419521B2 (en) * 2015-05-28 2019-09-17 Toshiba Memory Corporation Memory system
US9990209B2 (en) 2015-11-12 2018-06-05 Microsoft Technology Licensing, Llc Digital assistance device for facilitating multi-stage setup
JP6723025B2 (ja) 2016-02-22 2020-07-15 キヤノン株式会社 情報処理装置およびその制御方法、並びにプログラム
JP7110631B2 (ja) * 2018-03-09 2022-08-02 株式会社リコー 情報処理装置、情報処理システム、及びプログラム
WO2021118591A1 (en) * 2019-12-13 2021-06-17 Hewlett-Packard Development Company, L.P. Method and apparatus of bidirectional (bidi) communication of printer driver
CN112445576B (zh) * 2020-11-30 2024-04-16 中国人寿保险股份有限公司 一种屏蔽业务差异的设备调用方法及相关设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6094221A (en) * 1997-01-02 2000-07-25 Andersion; Eric C. System and method for using a scripting language to set digital camera device features
US7127678B2 (en) * 2000-12-21 2006-10-24 Microsoft Corporation System and method to specify device specific user interface information in the firmware of a USB device
US7296187B1 (en) * 2003-07-14 2007-11-13 Zilog, Inc. Hardware debug device having script-based host interface
US7590621B1 (en) * 2004-09-23 2009-09-15 Microsoft Corporation Systems for schema-facilitated device capability discovery

Family Cites Families (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5604843A (en) 1992-12-23 1997-02-18 Microsoft Corporation Method and system for interfacing with a computer output device
US5768583A (en) 1995-07-27 1998-06-16 Oki America, Inc. Method and system for network printer quick configuration
US5926775A (en) 1997-10-08 1999-07-20 National Instruments Corporation Mini driver software architecture for a data acquisition system
JP3408124B2 (ja) 1997-11-06 2003-05-19 シャープ株式会社 コンピュータシステムを利用した印刷処理装置
US6825941B1 (en) 1998-09-21 2004-11-30 Microsoft Corporation Modular and extensible printer device driver and text based method for characterizing printer devices for use therewith
US6538763B1 (en) 1999-04-26 2003-03-25 Hewlett-Packard Company Printer driver architectures and methods of providing adaptable printer driver architectures
US6549221B1 (en) 1999-12-09 2003-04-15 International Business Machines Corp. User interface management through branch isolation
US6938261B2 (en) * 2000-05-12 2005-08-30 Microsoft Corporation System and method employing script-based device drivers
JP3957998B2 (ja) 2000-08-08 2007-08-15 キヤノン株式会社 印刷システム、画像処理装置及び情報処理装置
US20020067504A1 (en) 2000-12-06 2002-06-06 Xerox Corporation Method and apparatus for automatic upgrade of a product's printer driver
US20020078200A1 (en) 2000-12-18 2002-06-20 Helms Janine L. Printer configuration service through a firewall
US20030093581A1 (en) 2001-11-09 2003-05-15 Adc Dsl Systems, Inc. Telecommunications system architecture
US20030103224A1 (en) 2001-12-04 2003-06-05 Johnson Bruce L. Adaptive print driver selection systems and methods
US20030160989A1 (en) 2002-02-25 2003-08-28 Xerox Corporation System for installing a printer driver on a network
US7689673B2 (en) 2002-04-23 2010-03-30 Canon Kabushiki Kaisha Remote creation of printer instances on a workstation
US7284246B2 (en) 2002-04-23 2007-10-16 Canon Kabushiki Kaisha Extensible device driver
US8582139B2 (en) 2002-11-19 2013-11-12 Hewlett-Packard Development Company, L.P. Driver upgrading
US7353373B2 (en) 2003-03-31 2008-04-01 Sharp Laboratories Of America, Inc. Intelligent printer installation
US7522299B2 (en) 2003-06-30 2009-04-21 Microsoft Corporation System and method for automatic configuration
US20050028172A1 (en) 2003-07-30 2005-02-03 Matsushita Electric Industrial Co., Ltd. Method and apparatus for installing software
JP4481800B2 (ja) 2003-12-02 2010-06-16 キヤノン株式会社 情報処理装置、情報処理方法及びプログラム
US20060017948A1 (en) 2004-07-22 2006-01-26 Sharp Laboratories Of America, Inc. Open source printer driver
JP2006079138A (ja) 2004-09-07 2006-03-23 Ricoh Co Ltd ステータス取得方法、プリンタドライバ及び情報処理装置
US7903272B2 (en) 2004-11-15 2011-03-08 Canon Kabushiki Kaisha Data processing apparatus, print setting adjusting method, recording medium storing computer-readable program therein, and program
US20060106775A1 (en) 2004-11-18 2006-05-18 Microsoft Corporation Multilevel device capabilities hierarchy
US20060146353A1 (en) 2004-12-30 2006-07-06 Microsoft Corporation Strategies for rendering job information using a multi-personality driver device
WO2006073137A1 (ja) 2005-01-05 2006-07-13 Seiko Epson Corporation 分散印刷システムおよび分散印刷制御装置
JP4533780B2 (ja) 2005-03-18 2010-09-01 株式会社リコー 画像形成システム、画像形成装置、端末装置及び端末装置のドライバの更新方法
US7921420B2 (en) 2005-04-29 2011-04-05 Sharp Laboratories Of America, Inc. Systems and methods for updating imaging device drivers on one or more computer systems
US7505170B2 (en) 2005-07-13 2009-03-17 Microsoft Corporation Conversions between spool files and PDL within a pipeline of modular filters
US8572672B2 (en) 2005-07-15 2013-10-29 Microsoft Corporation Management of document content processing using bi-directional communication
US20070067499A1 (en) 2005-09-08 2007-03-22 Honeywell International Inc. Systems and methods for satellite payload application development
US7603669B2 (en) 2005-09-27 2009-10-13 Microsoft Corporation Upgrade and downgrade of data resource components
US8014025B2 (en) 2005-12-05 2011-09-06 Lexmark International, Inc. System and method for outputting a job
US20070233834A1 (en) 2006-03-31 2007-10-04 Tomoki Hattori Printer driver with print search function
JP4795076B2 (ja) 2006-03-31 2011-10-19 キヤノン株式会社 印刷機能制限方法及び印刷制御装置
CN101114229A (zh) 2006-07-25 2008-01-30 国际商业机器公司 辅助安装软件的系统和方法
US8817295B2 (en) 2006-08-31 2014-08-26 Brother Kogyo Kabushiki Kaisha Communication system and printer therefor
GB0624582D0 (en) 2006-12-08 2007-01-17 Visible Computing Ltd USB autorun devices
US8164767B2 (en) 2007-01-26 2012-04-24 Ricoh Company, Ltd. Print driver with processed print data management capability
US20080250430A1 (en) 2007-02-07 2008-10-09 Xerox Corporation Method and corresponding apparatus for creation of print drivers in a network
JP4764376B2 (ja) 2007-05-01 2011-08-31 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、及びプログラム
US8549144B2 (en) 2007-08-31 2013-10-01 International Business Machines Corporation Common configuration framework for applications to configure database objects and resources
JP4942198B2 (ja) 2007-11-15 2012-05-30 キヤノン株式会社 印刷システム、クライアント端末装置及び印刷制御方法
US20090190150A1 (en) 2008-01-24 2009-07-30 Selvaraj Senthil K On-Demand Print Driver
US8365164B1 (en) 2008-02-21 2013-01-29 T-APP Ltd. Portable software applications
JP5086837B2 (ja) 2008-02-22 2012-11-28 キヤノン株式会社 印刷制御装置、印刷制御方法、及び、印刷制御プログラム
JP2009252039A (ja) 2008-04-08 2009-10-29 Canon Inc 配信装置、配信方法、及びコンピュータプログラム
US8243294B2 (en) 2008-04-10 2012-08-14 Eastman Kodak Company Simplified walk-up print driver installation
KR20090124718A (ko) 2008-05-30 2009-12-03 삼성전자주식회사 유니버셜 프린터 드라이버를 이용한 화상형성방법 및 이를수행하는 장치
WO2009154227A1 (ja) 2008-06-20 2009-12-23 キヤノン株式会社 プラグインソフトウェアプログラムおよび機能拡張方法および機能拡張装置
US20100097635A1 (en) 2008-10-17 2010-04-22 Infoprint Solutions Company Llc Printer upgrade mechanism
JP5487801B2 (ja) 2009-01-09 2014-05-14 セイコーエプソン株式会社 印刷装置
US8314950B2 (en) 2009-01-26 2012-11-20 Ricoh Company, Ltd. Approach for using settings mismatch tolerance levels to handle mismatches between print job settings and printing device settings
US8427675B2 (en) 2009-01-27 2013-04-23 Ricoh Company, Ltd. Automatically updating a printer driver with new printing device features
US8891111B2 (en) 2010-12-13 2014-11-18 Microsoft Corporation Adaptable printer driver
US9182930B2 (en) 2010-12-13 2015-11-10 Microsoft Technology Licensing, Llc Printer driver and application decoupling using event centric registration model
US8493600B2 (en) 2010-12-14 2013-07-23 Microsoft Corporation Multi-layered printer driver model
US8904048B2 (en) * 2011-09-08 2014-12-02 Microsoft Corporation Bidi extension for connected devices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6094221A (en) * 1997-01-02 2000-07-25 Andersion; Eric C. System and method for using a scripting language to set digital camera device features
US7127678B2 (en) * 2000-12-21 2006-10-24 Microsoft Corporation System and method to specify device specific user interface information in the firmware of a USB device
US7296187B1 (en) * 2003-07-14 2007-11-13 Zilog, Inc. Hardware debug device having script-based host interface
US7590621B1 (en) * 2004-09-23 2009-09-15 Microsoft Corporation Systems for schema-facilitated device capability discovery

Also Published As

Publication number Publication date
CN102937940A (zh) 2013-02-20
US20130067120A1 (en) 2013-03-14
US8904048B2 (en) 2014-12-02
US20150089090A1 (en) 2015-03-26
US9223733B2 (en) 2015-12-29

Similar Documents

Publication Publication Date Title
CN102937940B (zh) 连接设备的双向扩展
JP4580417B2 (ja) ウェブサービスと相互作用するための方法および装置
Song et al. Semantic middleware for the internet of things
US9734465B2 (en) Distributed workflow-enabled system
CN105144077A (zh) 云服务平台
CN101151608A (zh) 开发人员容易地找出或扩展系统上周知位置的能力
CN100474228C (zh) 管理成像设备驱动器的服务器驱动器及使用它的打印方法
CN101395572A (zh) 适用于分布式内容的辅助显示小配件
CN110297635A (zh) 页面的显示方法、装置、设备以及存储介质
JP2011514586A (ja) デジタル電子デバイス上の複数のアプリケーションおよびサービスを制御するためのシステム、方法、ならびに装置
CN103842957A (zh) 经由nfc到云打印机的打印
WO2006005655A1 (en) Application splitting for network edge computing
JP2015510644A (ja) サブ・デバイスの発見および管理
US20100057827A1 (en) Extensible Network Discovery Subsystem
JP5819203B2 (ja) 多機能装置に接続する大容量記憶装置にネットワークアクセスを可能にするシステム及び方法
CN102693270A (zh) 用于内容管理和组件测试的可发布元数据
EP2341692B1 (en) Communication between integrated device and mobile application client on mobile personal communication device
CN104871126A (zh) 终端装置、输出系统和输出方法
CN105453097A (zh) 受约束驱动程序平台在用户模式下在沙箱中运行驱动程序
RU2580079C2 (ru) Инфраструктура активации приложений
US8886703B2 (en) Advertising and facilitating management access to added capabilities of intelligent devices in a system
CN104396219A (zh) 用户专用漫游设置
US20070083660A1 (en) Amorphic Computing
US9684610B2 (en) Platform neutral device protocols
KR101871025B1 (ko) 디바이스들의 애플리케이션들로의 제시 기법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150707

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150707

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.