具体实施例方式
图1为示出可实施例本发明的系统的环境的方框图。多个客户机200通过网络500被连接到网络打印机300。客户机200和网络500可以是类似于以上参照以下的附图2进行描述的。也可以将打印机服务器400通过网络500与客户机200和打印机300连接。在显示的环境中,打印机300可用于通过网络500为客户机200服务。除了网络打印机300之外还可以包括诸如:网络扫描仪之类的附加的网络装置。
图2示出可实施例本发明的合适的计算系统环境100的例子。特别是,可以在该计算系统环境100中实施例图1所示的客户机200。计算系统环境100只是合适的计算环境的一个例子,并不意味着对本发明的使用和功能性的范围的限定。不应将计算环境100解释成依赖于或需要示例性操作环境100中所示的功能部件中的任何一个或其组合。
可以在计算机可执行指令(例如:由计算机执行的程序模块)的总的背景下对本发明进行描述.程序模块通常包括执行特定任务或实施例特定的抽象数据类型的例行程序、程序、对象、组件、数据结构等等.另外,本领域的技术人员将会理解可以用其它计算机系统配置(包括:手提装置、多处理器系统、基于微处理器的或可编程的消费电子产品、小型机、大型主计算机等等)实施例本发明.本发明也可以应用于由通信网络链接的远程处理装置执行任务的分布式计算环境.在分布式计算环境中,程序模块可位于包括存储器装置在内的本地的和远程的计算机存储媒体.
参见图2,用于实施例本发明的示例性系统100包括以计算机110形式的通用计算机装置,包括:处理单元120、系统存储器130、和将包括系统存储器在内的多种系统功能部件耦合到处理器单元120的系统总线。
计算机110通常包括多种计算机可读媒体。作为示例而非限定,计算机可读媒体可包括计算机存储器媒体和通信媒体。系统存储器130包括以诸如:只读存储器(ROM)131和随机存取存储器(RAM)132之类的易失性和/或非易失性存储器形式的计算机存储器媒体。基本输入/输出系统133(BIOS),包括如在启动时,帮助在计算机110内的元件之间传送信息的基本程序,通常被存储在ROM131中。RAM132通常包括可以立即由处理单元120访问和/或当前由它操作的数据和/或程序模块。作为示例而非限定,图1示出操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110还可包括其它可移除/不可移除的,易失性/非易失性的计算机存储器媒体。仅作为示例,图1示出硬盘驱动器141,从不可移除的非易失性磁媒体读出或写入信息,磁盘驱动器151,从可移除非易失性磁盘152读出或写入可移除非易失性磁盘152,和光盘驱动器155,从可移除非易失光盘156读出或信息(例如:CDROM或其它光媒体)。其它可用于示例性操作环境的可移除/不可移除的,易失性/非易失性的计算机存储器媒体包括,但不限定于,盒式磁带、闪存卡、数字通用盘、数字视频带、固态RAM、固态ROM等等。硬盘驱动器141通常通过诸如接口140之类的不可移除的存储器接口连接到系统总线121,而磁盘驱动器151和光盘驱动器155通常通过诸如接口150之类的可移除存储器接口连接到系统总线121。
以上讨论的及图2示出的驱动器和与之相关联的计算机存储器媒体提供计算机可读指令、数据结构、程序模块和其它用于计算机110的数据的存储器。在图2中,例如:示出硬盘驱动器141存储操作系统144、应用程序145、其它程序模块146和程序数据147。注意这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同或与之不同。这里给操作系统144、应用程序145、其它程序模块146和程序数据147标以不同的标号是为了说明它们至少是不同的副本。用户可通过诸如键盘162和点击装置161(通常指鼠标、跟踪球或触摸输入板)之类的输入装置将命令和信息输入到计算机110。其它输入装置(未示出)可包括麦克风、操纵杆、游戏板、圆盘式卫星电视天线、扫描仪等等。这些和其它输入装置通常由耦合至系统总线的用户输入接口160连接到处理单元120,但也可由诸如:并行端口、游戏端口或通过通用串行总线(USB)连接。监视器191或其它类型的显示装置也通过诸如视频接口190之类的接口连接到系统总线121。除了监视器之外,计算机还可包括其它外围输出设备,如扬声器197和打印机196,它们可以通过输出外围接口195连接。
本发明中的计算机110可以使用到一个或多个如远程计算机180那样的远程计算机逻辑连接,在联网的环境中操作。该远程计算机180可以是个人电脑,并通常包括上述与计算机110相关的全部或许多元件,尽管图2仅示出了存储器装置181。图2示出的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也能包括其它网络。
当用于LAN的网络环境中时,计算机110通过网络接口和适配器170连接到LAN171.当用于WAN的网络环境中时,计算机110通常包括调制解调器172和用于在WAN173(例如:因特网)上建立通信的其它装置.该调制解调器172(是内置的或外接的)可以通过用户输入接口160或其它合适的机制连接到系统总线121.在联网的环境中,相对所述的与计算机110画出的程序模块或其一部分可以存储在远程存储器装置.作为示例而非限定,图2示出在存储器装置181上的远程应用程序185.我们将会理解所示的网络连接是示例性的,还可以用其它在计算机之间建立通信链路的方法.
尽管没有示出计算机110其它的内部功能部件,那些本领域的普通技术人员将理解这些部件和互连是公知的。因此,不需结合本发明公开有关计算机110的内部结构的另外细节。
图3为示出本发明的系统的功能部件的方框图。这些功能部件可以合并到上述参照图1和图2描述的环境中。所显示的功能部件包括具有与UI20通信的驱动器30、应用程序10和打印机使用说明文件40。所述功能部件还包括:独立硬件厂商插件程序50(IHV)、打印假脱机系统60、端口监视器70和打印装置300,它们可以安装在以上参照附图1描述的功能部件之一中。所述打印机使用说明文件40通常在驱动器30中。所述驱动器30、UI20、应用程序110通常与图1所示的客户机200相关联。在接收到打印请求时,驱动器30可以从打印机使用说明文件40检索功能部件。所述打印假脱机系统60与驱动器30和端口监视器70通信。所述端口监视器70直接与打印装置300通信。IHV插件程序50可以在驱动器30和打印假脱机系统60之间进行操作。下面将对上述所有的功能部件和在上述功能部件之间进行的通信作进一步的描述。
图4示出包含在本发明的一个实施例中的驱动器30中的工具。驱动器30通常包括打印机使用说明文件40和驱动器映射扩展文件34。驱动器30通过UI20向用户提供一可用打印性能的指示。驱动器映射扩展文件34提供在驱动器30和打印机300之间建立映射的机制,以下将对其进行更加详细的描述。打印机使用说明文件40包括:提供可用打印选项的说明的通用程序说明(GDP)和/或通用描述语言(GDL)文件。GDP是用于说明装置性能的基于文本的格式,且易于改变或更新。GDL是具有帮助描述打印机性能的关键字的内部开发的语言。打印机使用说明文件40包括用于向驱动器30描述需要何种信息向用户通知有关打印装置300性能的工具。打印机使用说明文件40可包括诸如:双工选项、进纸箱的个数、纸盒、颜色、存储器的大小、订书机及其它可能的选项。还可在购买后改变打印机选项,这样就使更新变得重要了。保持对打印机300的正确配置的认识对优化的性能是很重要的,对使用户能利用打印机300的所有性能的优点也很重要。
例如:客户机200也许知道网络打印机300有双工机,但并不一定知道怎样在页的两面打印。为了在一页的两面打印,通常需要客户机横越多个层将双工器从“未安装”变为“已安装”。在网络环境中,通常将这一任务委托给管理器。本发明的功能部件使这一过程可以自动进行。
在公开实施例中,正如以下将描述的,驱动器30将在安装诸如打印机300之类的网络装置时,搜索当前的配置。驱动器30可以连续地监视打印机300,以查找配置更新。驱动器30可在用户机第一次使用打印机300时,和之后每一次启动打印机300时搜索更新。因此,如果打印机300需要另外的功能特性,系统将自动进行更新。
为了自动配置性能,驱动器30需要自动将选项与客户机200的问题连接的性能.假设客户机200想知道双工机是否存在.驱动器30需要解释来自打印机300的响应.因此,打印机使用说明文件40包括用于描述双向(双向)信息的语法.该语法包括对预先存在的GDL文件的扩展.该扩展使客户机200能定义一个要问的问题,和如何解释答案.
该语法至少包括两个新的结构。该新的结构包括:(1)双向查询和(2)双向响应。它们都是用可用特性的知识预先确定的。双向查询封装了查询信息,双向响应封装了响应信息。包含在打印机使用说明文件40中的语法将双向响应和双向查询与打印机使用说明文件40中的特性相关联。
该语法还包括多个关键字。查询串关键字是用于双向查询结构的关键字,并将双向模式串说明为查询串。响应类型的关键字是用于双向响应结构的关键字,并说明对查询的响应的类型。
响应数据关键字也是用于双向响应结构的关键字。该响应数据关键字说明响应的特性。该响应数据关键字可用来映射响应,它映射到其它特性而不是在其中启动查询的特性。作为使用响应数据关键字的例子,在“进纸盒”特性中的查询能生成有关“纸尺寸”特性的响应。该响应数据关键字用作“进纸盒”特性和“纸尺寸”特性之间的关联。
双向值关键字是用于与可用选项相关联的双向响应结构的关键字。它说明对每个选项的预计的双向响应。双向值关键字是代表预期响应的字符串,其中该响应被映射到特性选项中的一个。这个双向值关键字可以结合响应数据关键字一起使用,以将响应映射回特性和选项的对。表1示出关键字类型的例子。
*BidiQuery:Instance
{
*QueryString:““
*%The string is expected to be translated to Unicode
}
*BidiResponse:Instance
{
*ResponseType:BIDI_INT-Indicates bidi data is an integer
BIDI_BOOL-Indicates that the bidi data is either TRUE or FALSE
BIDI_STRING-Indicates that the bidi data is a Unicode string
*ResponseData:ENUM_OPTION(*Feature))
*%Feature represents the name of the feature for responses.
}
表1
作为示例,打印机的一个特性是“进纸箱”。“信封送纸器”代表与进纸箱相关联的选项。另一特性是“纸尺寸”。与“纸尺寸”相关联的选项可包括“信”和“合法的。因此,上述打印机使用说明文件40的结构和关键字可用于GDL中的三个层次,包含:(1)全局层;(2)功能部件层;或(3)选项层。
表2提供在全局层使用结构和关键字的例子。
*BidiQuery:Manufacturer
{
*QueryString:“\Device:Manufacturer”
}
*BidiResponse:Manufacturer
{
*ResponseType:BIDI_STRING
}
表2
通过这一查询和响应过程,客户机200能确定网络打印装置的制造商。
表3提供用于在功能部件层操作结构和关键字的例子。
*Feature:DuplexUnit
{
*BidiQuery:DuplexInstalled
{
*QueryString:“\Printer.DuplexUnit:CurrentValue”
}
*BidiResponse:DuplexInstalled
{
*ResponseType:BIDI_BOOL
*ResponseData:ENUM_OPTION(DuplexUnit)
}
*Option: NotInstalled
{
*BidiValue:FALSE
}
*Option: Installed
{
*BidiValue:TRUE
}
}
表3
通过在以上显示的例子中使用结构和关键字,客户机能保证双工单元被安装。
表4提供在选项层使用结构和关键字的例子。
*Feature:InputBin
{
*Option:EnvelopeFeeder
{
*BidiQuery:MediaSize
{
*QueryString:“\Printer.Input.Envelope:MediaSize”
}
*BidiResponse:MediaSize
{
*ResponseType:BIDI_STRING
*ResponseData:ENUM_OPTION(papersize)
*BidiQuery:MediaType
{
*QueryString:“\Printer.Input.Envelope:MediaType”
}
*BidiResponse:MediaType
{
*ResponseType:BIDI_STRING
*ResponseData:ENUM_OPTION(MediaType)
}
*BidiQuery:MediaLevel
{
*QueryString:“\Printer.Input.Envelope:Level”
}
*BidiResponse:MediaLevel
{
*ResponseType:BIDI_STRING
*ResponseData:ENUM_OPTION(MediaLevel)
}
}
表4
通过使用上述结构,客户计算机200能保证信封送纸器功能部件的请求的选项被安装。
另外,IHV插件程序50可包含双向查询和双向响应结构的范例的扩展。例如:*BidiQuery:HPSuperStapling,*BidiResponse:HPSuperstapling.上述查询和响应描述了专用于由给定制造商提供的功能部件的功能部件。另外,IHV插件程序50可扩展双向查询和双向响应结构的属性。例如:BidiQuery:SuperDuperFeature{*QueryString:”“*HPSuperQuery:””}.在此例子中,查询字符串涉及搜索可用在由给定制造商提供的装置上的专用功能部件组。
图5示出图3中介绍的假脱机系统60的更详细的视图。假脱机系统包括一组双向应用程序界面(APIs)62和通知工具64。该通知工具64包括驱动器打印机事件机制65和查找下一个打印机变化通知66。下面将进一步描述这些组件。
为了处理上述双向查询和响应,驱动器30通过双向APIs62发送它的查询字符串。打印机300和端口监视器70接着在一个可能是真,假或其它字符串的响应中返回信息。每个新的双向API 62定义一个用于执行双向查询和一个基于可扩展标记语言(XML)的方案的API功能。
由双向APIs支持的动作包含:“取得(Get)”、“枚举(Enum)”和“设置(Set)”。该“取得”动作需要具有寻址属性或值的模式字符串的自变量。如果该自变量寻址一属性,双向API将检索在此属性下的所有的值。所述“枚举Enum”动作需要具有寻址属性或值的模式字符串的自变量。对一属性,双向API检索在这个属性下的模式的列表。“设置”动作需要包含寻址一个值和一个新的数据值的模式字符串的两个自变量。
通过双向API62的请求可由以下所示的代表。该请求包含一个诸如:“设置(Set)”,“取得(Get)”“取得所有(GetAll)”和“枚举模式(EnumSchema)”和一个或多个模式或查询字符串之类的双向动作。该请求是XML字符串,它定义一个动作以及将要处理的双向模式的列表。
<?xml version-“1.0”?
<bidi:Request xmlns:bidi=”bidi_ns”>
<Get schema=”\Printer.DuplexUnit:Installed’?>
<Get schema=”\Printer.InputBin.TopBin”/>
</bidi:Request>
表5
在表5的例子中,客户机200请求与双工单元和进纸箱功能部件有关联的可用选项.
表6中示出的XML字符串代表对请求的响应。该响应是一个XML字符串,它包含请求的动作的结果:
<?xml version=”1.0”?>
<bidi:Response xmlns:bidi=”bidi_ns”>
<Get schema=”\Printer.duplexunit:Installed”status=“0”>
<Schema name=”\Printer.duplexunit.installed”>
<bidi:Bool value=”false’/>
</schema>
</Get>
<Get schema=”\Printer.Inputbin.topbin”status=”0”>
<schema name=”\printer.inputbin.topbin:installed”>
<bidi:bool value=”true”/>
</schema>
<schema name=”\printer.inputbin.topbin:level>
<bidi:Int value=”45”/>
</schema>
<schema name=”\Priner.Inputbin.topbin.mediasize”>
<bidi:string value=”letter”/>
</schema>
<schema name=”\Priner.Inputbin.topbin.mediatype”>
<bidi:string value=”stationery”/>
</schema>
</Get>
</bidi:Response>
表6
图3所示的端口监视器70通过从双向模式映射到打印机专用协议提供装置专用协议的摘要。为了能响应于双向请求,端口监视器70需要以下性能;(1)从打印机数据库检索需要的数据,(2)计算和/或变换数据和(3)通过双向APIs62返回数据。上述映射可以专用于标准传输控制协议/网际协议(TCP/IP)端口监视器(SPM)。SPM使用简单网络管理协议(SNMP)作为打印机专用协议来检索存储在打印机的管理信息库(MIB)内的数据。
一些在标准双向模式中定义的数据值并不直接与来自打印机的MIB的数据相关。在这一例子中,驱动器30利用描述双向和MIB值之间的映射的相关联的扩展文件34。以下在表7中所示的范例扩展文件中涉及MIB和双向值。
?xml version=”1.0’?>
<tcpbidi;Root xmlns;tcpbidi=”temporary Bidi namespace”.
<Schema>
<property name=’printer”>
<property name=”layout”>
<property name=”Inputbin”>
<inputbin name=”manual bin”>
mibname=”manualpaper”/>
<inputbin name=”envelopemanual”
mibname=”manualenvelope”/>
<inputbin name=”bottombin”
mibname=”tray 1”/>
</property>
</property>
<property name=”output”>
<propertyname=”outputbin”>
<outputbin name=”topbin”mibname=”standard bin”/>
</property>
</property>
</property>
</schema>
</tcpbidi:Root>
表7
另外,扩展文件34可包含标准双向模式的扩展。使用扩展文件34描述的数据值是驱动器专用的。客户机可请求从扩展文件34来的IHV扩展,并当它们改变时接收通知。下面的表8示出这一概念。
<?xml version=”1.0”?>
<tcpbidi:Root xmlns:tcpbidi=”temporary bidi namespace”>
<schema>
<property name=”printer”>
<property name=”system”>
<value name=”name”oid=”1.3.6.1.2.1.1.5”
type=”BIDI_TEXT”/>
<value name=”descr”oid=”1.3.6.1.2.1.1.1”
type=”BIDI_TEXT”/>
</property>
</schema>
</tcpbidi:Root>
表8
端口监视器70包括一个利用假脱机系统通知机制64建立异步通知信道的通知结构。该端口监视器70提供将数据从打印机300发送到驱动器30的机制。该端口监视器70按照上述的双向模式将数据作为XML文件发送。这种通知是作为双向通知全局唯一的标识符(BIDI_NOTIFICATION_GUID)公布的,因此任何应用程序都可以登录侦听它。当发生变化时,端口监视器70按照公布的双向通知模式建立通知报文。每个通知报文可包含一个或多个与端口相关的段,且每个端口段可包含一个或多个模式变化。端口段是通知报文的一部分,包括用于特定端口的双向模式变化。端口监视器70可以建立多个端口共用的一个通知报文。每个端口部分通过端口名寻址特定端口。通知路由器利用端口段信息来将模式变化路由至合适的打印机。
假脱机系统60在BIDI_NOTIFICATION_GUID信道的反面建立一个特殊的听众对象。该对象从端口监视器70接收信息,并根据在每个模式变化中指定的标志在一个合适的方向路由它们。只有在模式变化指定了标志“drive printerevent(驱动打印机事件)”时,才使用驱动器打印机事件机制65将通知路由到驱动器30。不管模式变化中的标志是什么,假脱机系统60都会使用查找下一个打印机变化通知66将通知路由到任何登记了的应用程序。
表9提供由通知工具64提供的示样通知。
<?xml version=”1.0”?>
<bidi:Notification xmlns:bidi=”bidi_ns”>
<port name=”port 1”>
<schema name=”\printer.duplexunit:Installed”drvprinterevent=”true”>
<bidi:Bool value=”true”/>
</schema>
<schema name=”\printer.alerts.alert001.code”>
<bidi:string value=”low toner”/>
</schema>
</port>
</bidi:Notification>
表9
这个通知将指示出现色粉不足的打印机警告信息提供给驱动器30。
如果端口监视器70估计变化的数量是如此大,以至于一个一个的通知会难于负担的,它将发送一个共同的通知信号,而不是模式变化。共同通知提供一指示几个双向模式已改变的信号。在以下的表10中提供了一个示样通知报文。
<?xml version=”1.0”?>
<bidi:Notification xmlns:bidi=”bidi_ns”>
<Port name=”port_1>
<Event/>
</port>
</bidi:Notification>
表10
图6为示出在安装网络打印机时,或在添加打印机功能部件时自动更新系统配置的过程的流程图。在打印机安装时间,或当打印机配置改变时,驱动器30通过驱动器API(驱动器打印机事件(drvprinterevent))从假脱机系统/端口监视器取得通知,以执行一系列的自动配置的步骤。在步骤A中,驱动器30实施例一个操作以从打印机使用说明文件32得到可安装功能部件及相应的双向请求的列表。在步骤B中,驱动器30从假脱机系统60调用双向APIs62以查询功能部件的当前配置。在步骤C中,端口监视器70将双向模式映射到一打印机专用协议。在步骤D中,端口监视器70为那些已改变的模式生成一双向通知。在步骤E中,使用通知工具64的端口监视器70使用驱动器打印机事件机制65将双向通知路由至驱动器30。在步骤F中,端口监视器70使用查找下一个打印机变化通知66将双向通知路由至应用程序10。在步骤G中,驱动器30使用双向响应结构将双向响应映射到打印机使用说明文件40中的一个功能部件。驱动器30查看响应数据以寻找该功能部件,并对用于映射的相应的选项查看它的双向值。在步骤H中,驱动器30用当前的配置对UI和系统进行更新。
图7为示出在本发明一实施例中的配置更新期间上述组件之间相互作用的方框图。打印机300使用打印机专用协议与端口监视器70通信。端口监视器70建立一个双向通知信道,且假脱机系统60用通知工具64将通知路由到应用程序10和驱动器30。端口监视器70从存储在与打印机300相连的MIB数据库中的XML文件得到数据。端口监视器70用双向模式将MIB值转换成期望的值,并建立一个响应。
总之,以下功能部件在这里是作为相互作用以提供网络装置性能的自动更新揭示的。本发明包括:(1)用于表示双向请求和响应并通过打印机使用说明文件40将其与一功能部件相关联的语法(2)通过一组双向APIs62得到的装置专用协议的摘要(3)扩展文件34中的双向APIs的模式和(4)通知基础结构64。
尽管为了充分利用打印性能,以上本发明是结合系统的自动配置进行描述的,本发明的特性也可以用于另外的目的。例如:上述组件可以用于打印验证。如果作业通知单和打印机配置之间存在冲突时,自动配置组件可通知用户,或执行自动方案以避免装置处于错误状态。
使用上述组件,出现打印验证.在打印验证后,假脱机系统60从APIs62组调用打印验证API.如果IHV插件程序50阻止使用打印验证API,IHV50可执行一个当前配置和当前作业的打印验证核查.无论哪一种情况下,假脱机系统60都将结果返回给驱动器30,且驱动器30确保向用户显示正确的用户界面20.用户界面20应该指令用户如何继续作业.用户可作出推荐的变化或请求系统执行自动配置.
另外,上述组件可用来促进资源管理。资源管理方案涉及打印时间查询以便跟踪可用于字体管理的资源或形成管理。在自动配置方案之前,驱动器30通常猜测哪些资源是可用的。当猜测错误时,打印机300内存溢出,并出现输出错误。
这里描述的自动配置系统和方法有许多优点。本发明消除了在装置安装后,为得到正确的功能部件组而人工进行的配置步骤。另外,上述的组件使配置变化得以自动更新。对UI20的改变也是自动进行的,并且系统自动响应以反映变化。因此,如果管理员增加和去除可安装的选项时,UI自动察觉该变化。
结合特定实施例对本发明进行了描述,无论从哪方面来看,它都旨在示例而非限定。另选的实施例对那些本发明所属领域的技术人员来说是显而易见的,它们不偏离本发明的范围。
从上文可以看出本发明非常适于得到以上枚举的所有目标和对象,以及其它本系统和方法固有的,显而易见的优点。可以理解某些特性和子组合都是具有实用性的,并可在不参照其它功能特性和子组合的情况下被使用。这是考虑的并在权利要求书的范围内。