CN1737779A - 一种扩展外设的方法及*** - Google Patents
一种扩展外设的方法及*** Download PDFInfo
- Publication number
- CN1737779A CN1737779A CN 200510102547 CN200510102547A CN1737779A CN 1737779 A CN1737779 A CN 1737779A CN 200510102547 CN200510102547 CN 200510102547 CN 200510102547 A CN200510102547 A CN 200510102547A CN 1737779 A CN1737779 A CN 1737779A
- Authority
- CN
- China
- Prior art keywords
- peripheral hardware
- interface
- final drive
- development interface
- configuration file
- 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.)
- Granted
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及计算机技术,具体的讲是一种扩展外设的方法及***。为了能够扩展终端机的使用外设能力,本发明的方法特征在于,包括以下步骤:应用***通过终端驱动开发接口加载终端驱动的步骤;业务软件通过挂接外设驱动开发接口向逻辑外设发出宏指令功能请求的步骤;根据业务软件的宏指令功能请求,查找确定与所述逻辑外设相对应的物理外设驱动的步骤;外设驱动调用存储的完成宏指令的物理外设指令,以操作物理外设完成功能请求的步骤。本发明的有益效果在于,标准的外设操纵宏指令集,统一的驱动程序接口,为外设的扩展,新类型设备的使用提供了一条方便快捷的接入途径。
Description
技术领域
本发明涉及计算机技术,具体的讲是一种扩展外设的方法及***。
背景技术
一个典型的UNIX应用10物理图如图1所示。UNIX服务器11提供应用软件的运行环境,实际的用户界面是通过连接在服务器上的终端展现的。终端通常有哑终端12和仿真终端13形式,终端上通过自身的串、并口或其它I/O通讯口,可以连接许多不同的外设14。UNIX操作***不会为连接在服务器上的终端或连接在终端上的设备提供驱动程序,终端和终端上的设备的驱动程序需要由应用软件自身提供。各种不同的类型的设备驱动程序用于控制硬件设备。本领域技术人员可以预见,还有一些其它的终端连接到UNIX服务器上,还有一些其它的终端设备可以连接到终端上。
目前,在UNIX的许多应用***中,应用软件调用外设都是在应用软件中根据特定的设备的指令写到程序中。因此每个应用***能够支持的外设都是预先定义好的,这样的设计模式不适合在外设种类繁多,功能日新月异的变化。特别是在银行的前端应用***中,通常需要在软件***中使用外设,银行前端应用***使用以下常用外设:终端、存折打印机、磁条读写器、密码小键盘、宽行打印机等,进行存折、凭条的打印,磁条读写、用户密码输入及报表打印等;还有IC卡读写器进行相关的IC卡业务。
***中使用的设备的类型种类繁多,同类型设备也经常有多个厂商的产品;而且随着业务的发展,不断会有新设备(如USB扫描仪等)增加到应用软件***中,给***带来大量的开发工作,而且给维护特别是扩展上带来很大的挑战。另外,从成本角度考虑,还要求一些设备兼做其它功能或改变接口配置模式等变化。
一般的应用***,使用外设都是有针对性的,说明只能够支持的设备列表。这样的应用***对外设类型支持有限,谈不上可扩展。一旦新的设备或新型号需要***软件支持,那就需要等待应用软件***升级才能够支持;而且,还可能需要修改过相关的业务应用程序,***才可以支持新设备。
发明内容
本发明为了实现方便业务应用程序开发,屏蔽同类型设备不同厂家产品之间的开发差异,容易扩展新类型设备的目的,提出应用软件使用外设的一种灵活多变的技术解决方法,能够支持丰富类型设备的使用,支持设备的灵活接入,解决了***软件在支持外设上的可扩展问题,屏蔽业务应用程序使用外设中的开发差异。
一种扩展外设的方法,包括以下步骤:
应用***通过终端驱动开发接口加载终端驱动的步骤;
业务软件通过挂接外设驱动开发接口向逻辑外设发出宏指令功能请求的步骤;
根据业务软件的宏指令功能请求,查找确定与所述逻辑外设相对应的物理外设驱动的步骤;
外设驱动调用存储的完成宏指令的物理外设指令,以操作物理外设完成功能请求的步骤。
在应用***通过终端驱动开发接口加载终端驱动的步骤中还包括,应用***通过读取一配置文件加载终端驱动的步骤。
所述的配置文件包括终端名称和终端驱动程序字段。
在挂接外设驱动开发接口根据业务软件的宏指令功能请求,查找确定与所述逻辑外设相对应的物理外设驱动的步骤中还包括,根据一配置文件加载与所述逻辑外设相对应的物理外设驱动的步骤。
所述配置文件包括接口类型、波特率、数据位、停止位、连接口、校验位、超时、外设驱动程序字段。
在操作物理外设完成功能请求的步骤之后还包括,释放终端驱动开发接口资源和挂接外设驱动开发接口资源。
应用***和业务软件通过外设驱动开发接口与终端驱动开发接口、挂接外设驱动开发接口传递数据。
一种扩展外设的***,包括:
终端驱动开发接口,应用***通过终端驱动开发接口加载终端驱动;
挂接外设驱动开发接口,终端驱动开发接口用于接收业务软件宏指令功能请求数据,分析出功能请求对应的逻辑外设;
外设匹配单元,与所述挂接外设驱动开发接口相连接,用于查找所述逻辑外设所对应的物理外设驱动;
宏指令编译单元,与所述外设匹配单元相连接,用于在查找出来的所述对应的物理外设驱动中查找完成所述宏指令功能请求的物理外设驱动指令集;
物理外设接口,一端与所述宏指令编译单元相连接,另一端与物理外设相连接,接收宏指令编译单元的物理外设驱动指令,传送给物理外设使之完成业务软件的功能请求。
还包括一配置文件单元,与所述终端驱动开发接口相连接,所述业务软件的宏指令功能请求通过配置文件单元中存储的终端配置文件,通过规定的终端驱动开发接口进行数据通信。
所述的配置文件包括终端名称和终端驱动程序字段。
所述配置文件单元与所述外设匹配单元相连接,所述外设匹配单元在配置文件单元中查找与所述逻辑外设对应的物理外设驱动。
所述配置文件包括接口类型、波特率、数据位、停止位、连接口、校验位、超时、外设驱动程序字段。
所述物理外设接口包括:串行接口,并行接口,USB接口,网络接口。
还包括一外设驱动开发接口,用于接收应用***和业务软件的数据信号,传送给终端驱动开发接口和挂接外设驱动开发接口。
本发明的有益效果在于,完全屏蔽了具体外设与业务应用程序的关系;同一类型外设提供统一的外设操纵宏指令集,使外设的使用对业务应用程序来讲都是一致的,实现不同厂商同一类型外设无缝的接入到***中。标准的外设操纵宏指令集,统一的驱动程序接口,为外设的扩展,新类型设备的使用提供了一条方便快捷的接入途径。
附图说明
图1为本发明***结构图;
图2为设备的业务逻辑定义分类及与物理设备关系示意图;
图3为逻辑密码小键盘和逻辑磁条读写器的宏指令集示意图;
图4为本发明应用***配置文件示意图;
图5为本发明扩展外设结构的应用***结构图;
图6为本发明方法流程图;
图7为本发明服务器、终端和挂接外设的结构图;
图8为图7***部件结构图。
具体实施方式
下面结合附图说明本发明的具体实施方式。
为了实现本发明的目的,需要进行如下工作:
1.根据业务应用实际需求,对业务应用软件的外设进行逻辑定义。
对实际物理外设进行逻辑定义的结果是得到一个逻辑设备集合。逻辑设备是指概念上的设备,一个逻辑设备完成一定的功能。一种逻辑设备一般与一种实际的设备对应,完成的功能可以是实际设备提供的,也可以是在驱动中软件实现的。一个逻辑设备对应一个实际设备与相应驱动,但一个实际设备与不同的驱动是对应不同的逻辑设备。如LQ1600宽行打印机,结合它相应的报表驱动,可以定义为报表打印机;与业务驱动一起,可以定义为业务打印机。简而言之,逻辑设备是根据业务应用的实际需求,定义出来的完成一组功能的概念上的设备。
图2是设备的业务逻辑定义分类及与物理设备关系示意图。图中给出了一个应用***使用的部分逻辑设备定义,并给出了逻辑设备与物理设备关系。业务应用***100的业务应用程序101需要使用外设来完成数据的输入或输出工作,如打印凭条,读入存折信息等。业务应用程序是实际上完成业务的程序,如银行***中存款业务对应的程序,一般仅指完成整个业务的客户端程序,以下所指的业务应用程序都是这一类型程序。分析业务应用程序使用外设的情况,其实是一个逻辑的使用,如在银行***中使用的外设常有逻辑存折打印机102、逻辑磁条读写器103、逻辑业务宽行打印机104和逻辑报表打印机105。业务应用程序只是关心逻辑外设完成的业务功能,而并不关心逻辑存折打印机是串口存折打印机106还是并口存折打印机107;逻辑业务打印机与逻辑报表打印机都可以使用宽行打印机。所以业务应用程序只关心可以用来完成相应业务功能的逻辑外设,而并不关心是具体实现逻辑设备的物理设备。
调查应用***使用的外设情况,根据业务应用的实际需求来定义***使用的逻辑设备是本发明的第一步工作。
2.定义每种逻辑设备的宏指令集。
宏指令是逻辑设备能够完成的一个功能的动作概括。宏指令集就是一种逻辑设备能够实现的所有功能的动作概括的集合。宏指令集是业务应用程序操控外设的指令接口。每种宏指令集定义的主要依据是外设自身的指令集合,同时还要结合业务应用程序的需求。每条宏指令对应零到多条外设指令,例如一个逻辑打印机,进纸宏指令与某物理打印机的清除错误、检查状态、进纸几个实际指令对应,而查看打印机名字宏指令则与物理打印机的实际指令没有对应关系,仅是驱动程序实现的逻辑功能。逻辑设备宏指令是对逻辑设备功能使用的完整操控接口描述,业务应用程序通过逻辑设备的宏指令集使用逻辑外设所有功能。
图3是逻辑密码小键盘和逻辑磁条读写器的宏指令集示意图。逻辑密码小键盘201有输入密码和请再输入密码的功能,因此有请输入密码202、请再输入密码203是两条宏指令,这两条宏指令构成了逻辑设备密码小键盘的宏指令集。同样的,逻辑磁条读写器301的宏指令集有以下几条宏指令:读二磁道数据302、读三磁道数据303、读二三磁道数据304、写二磁道数据305、写三磁道数据306和写二三磁道数据307。从业务应用***上看,要求密码小键盘提供的就是输入一个密码和再次输入进行确认这两条宏指令功能请求。一个物理密码小键盘,它实际的外设指令有指示灯亮、提示语音一、提示语音二、指示灯灭四条实际指令。逻辑设备的宏指令:请输入密码,对应物理密码小键盘的外设指令为:指示灯亮、提示语音一和指示灯灭;而宏指令:请再输入密码,对应物理密码小键盘的实际指令为:指示灯亮、提示语音二、指示灯灭。
对于其它业务上使用的逻辑设备,根据业务使用的功能,我们也需要为它们定义合适的宏指令集。
3.定义业务应用程序开发接口。
对于每种逻辑设备,在应用软件***中都有一个唯一的标识。***是通过该标识来区分逻辑设备,把宏指令发送到实际实现逻辑设备的物理设备的驱动程序中。为支持业务应用程序开发,需要定义业务应用程序开发接口,通过该接口业务应用程序需把要对外设操纵的宏指令、参数发送到相应的驱动中。接口定义形式有以下示例可作参考:
接口名称(逻辑设备标识,宏指令,参数)——返回值表示成功失败;
或者:
逻辑设备对象=取逻辑设备对象接口(逻辑设备标识),
接口名称(宏指令,参数)——返回值表示成功失败;
每一具体类型的外设为实现一种逻辑外设,都有一个相应的驱动程序。例如:南天存折打印机作为逻辑存折打印机时,有一个相应的驱动程序A;东南的存折打印机作为逻辑存折打印机时,它也有它相应的驱动程序B。不同驱动程序的存在主要是实际的外设提供的实际外设指令有差异造成的。
实际外设的驱动程序是要实现一种逻辑外设的功能,所以同一逻辑外设的不同实际外设的驱动程序,实现的功能是完全一致的。如逻辑外设密码键盘,而无论它们的实际外设指令如何差异,逻辑指令“请输入密码”就是请用户输入一次密码。
在应用***中,所有的逻辑外设都有相应的标识,一般使用集合来管理。业务应用程序通过业务应用程序开发接口,统一对逻辑外设进行使用,以实现通过一种统一的格式屏蔽不同外设,不同功能请求的目的。
4.为设备的驱动程序定义驱动程序开发接口
应用***需要定义一套完整的驱动程序开发接口,外设驱动程序只要是根据接口编写的,就可以方便的嵌入到***中。本发明的驱动程序是指对实际物理外设发出实际外设指令,完成宏指令功能的程序。本发明中的驱动程序与操作***的驱动程序是不同的。本发明的驱动程序是在应用***中嵌入的,根据自定义的接口实现宏指令的功能,一个操作***下驱动程序驱动的外设通常每个终端都会接一套外设。我们经常提到的驱动程序是操作***的驱动程序,如windows上打印机驱动程序,这些驱动程序是厂家或操作***提供的。
为了便于应用***的扩展,驱动程序定义为动态库模式。驱动程序开发接口按照以下方面设计:
在应用软件***中,外设分为两种类型:终端设备和挂接设备。如图1中的哑终端12和图形终端/PC13,都是终端设备;而***设备14则属于挂接设备,它们是连接在终端上而不是服务器上,如存折打印机、磁条读写器等都是挂接设备。
终端直接连接到服务器上,为挂接设备提供连接接口,可以是一台平时使用的个人电脑、哑终端或其它终端。终端之所以称为终端,是前端***中它们所处的位置来定的,它自身并不处理业务逻辑,只作为前端***输入、输出(显示结果)来使用。UNIX下的哑终端并不运行程序,是纯粹的终端,而linux终端和PC终端还兼起UNIX服务器运行应用***、执行业务软件的功能。从应用软件来看,终端自身也是一个外设,提供了应用软件***程序到外设的通信通道。由于不同物理终端提供的通信接口的实际指令是有区别的,因此需要区分对待。终端提供给挂接外设使用的物理外设接口目前主要有两类:串口与并口。逐渐也开始使用USB口或其它通信接口。终端的驱动程序提供终端通讯口的打开、关闭、清除、读写等功能。终端驱动程序与应用软件程序是在一起的,哑终端模式下是在UNIX服务器上运行,linux与PC终端模式下分别在linux终端与pc上运行。
挂接设备是连接到终端的真实物理设备,为业务应用程序提供实际的外设服务功能。挂接设备的驱动程序主要使用终端驱动提供的外设通讯接口与实际的外设通讯,实现外设逻辑指令要求的功能。
业务应用程序使用的逻辑设备,对应的是挂接在终端上的某个物理设备,所以业务应用程序关心的挂接设备而不是终端设备。在应用***实现上,终端也是当作是***的一类外设来对待,主要目的是屏蔽各种终端的差异,让驱动程序只做针对特定物理设备的工作。因此外设驱动在***软件中区分为终端驱动和挂接外设驱动。通常把挂接外设驱动直接称为外设驱动。它们的关系如图4所示。终端驱动和挂接外设驱动都是应用***的外设驱动,由应用软件加载的,挂接外设驱动通过***间接使用终端驱动的通信通道接口,与外设进行通讯。
外设驱动开发接口定义相应的分为两种:终端驱动开发接口定义和挂接外设驱动开发接口定义。
终端驱动接口定义如下:
打开串口(串口号,波特率,数据位,停止位,奇偶校验标志)——返回值表示成功或出错代码;
关闭串口(串口号)——返回值表示成功或出错代码;
清空串口函数(串口号)——返回值表示成功或出错代码;
读串口数据(串口号,结果数据存储缓冲区,数据长度,超时)——返回值成功表示实际读到的数据长度,失败表示错误代码;
写数据到串口(串口号,数据缓冲区,数据长度)——返回值成功表示实际写出的数据长度,失败表示错误代码。
打开并口(并口号)——返回值表示成功或错误代码;
关闭并口(并口号)——返回值表示成功或错误代码;
读并口数据(并口号,结果数据缓冲区,数据长度,超时)——返回值表示实际读到数据长度或错误代码;
清空并口(并口号);
写数据到并口(并口号,数据缓冲区,数据长度)——返回值表示实际写的数据长度或错误代码。
终端驱动还可以附加以下两个接口:
获取终端驱动版本号(存放驱动版本号缓冲区)——返回值表示成功或出错代码;
获取终端相关信息(存放信息的缓冲区)——返回值表示成功或出错代码。
挂接外设驱动接口定义如下:
初始化(终端驱动函数指针结构体,连接端口,波特率,数据位,停止位,奇偶校验标志,超时)——返回值表示成功或错误代码;
通信(宏指令,输入参数缓冲区,输入参数长度,输出参数缓冲区,输出参数数据长度缓冲区)——返回值表示成功或错误代码;
释放()——释放该驱动程序申请的资源,返回值表示成功或错误代码。
同样,挂接外设驱动接口可以附加以下两个接口:
获取挂接外设驱动版本号(版本数据缓冲区)——返回值表示成功或错误代码;
获取挂接外设信息(信息数据缓冲区)——返回值表示成功或错误代码。
这里给出的挂接外设驱动开发接口是一个总体的描述,还有可能具有其它形式定义的终端驱动接口和挂接外设驱动接口,在实际的实现当中,每种逻辑外设都对应一套接口,***才能够同时加载不同类型的驱动程序并加以区分。实际的形式为:终端驱动开发接口、逻辑外设1驱动开发接口、……、逻辑外设n驱动开发接口。
进一步,为方便各种不同外设在***中使用,应用软件加载驱动程序的工作中还需要一外设配置文件,该文件描述了一个终端使用的终端驱动和各种挂接外设驱动的类型,并描述了各种挂接外设接口、接口形式、接口参数配置和驱动程序名等。配置文件可以采用各种形式,下面给出的是一种外设配置文件,也可用xml文件等形式进行描述。
表1挂接外设配置文件
逻辑外设 | 接口类型(0串/1并)Integer | 波特率Integer | 数据位(Byte) | 停止位(Byte) | 连接口Integer | 校验位(Byte) | 超时(秒)Integer | 驱动String |
密码小键盘 | 0 | 9600 | 8 | 1 | 11 | 0 | 10 | PinKeyDrv |
磁条读写器 | 0 | 9600 | 8 | 1 | 12 | 0 | 10 | MsfDrv |
表2终端配置文件
终端外设 | 驱动string |
终端名称 | MYTERM |
经过以上4步,应用***中增加了可扩展的外设结构,构成了一个使用扩展外设的应用***。使用扩展外设结构的应用***结构如图5所示:可扩展的外设应用***400中,业务应用程序401调用应用软件提供的外设业务应用程序开发接口403进行向逻辑外设402发送宏指令,应用软件***通过设备驱动开发接口404(一种统一的规范),可以接受逻辑终端驱动开发接口405开发的终端驱动程序407,也可以接受挂接外设驱动开发接口406定义的外设驱动程序408。不同终端驱动程序可以驱动不同的终端设备409,不同的外设驱动程序可以驱动不同的挂接设备410。
在应用***的运行中,业务应用程序调用应用***提供的接口,使用业务逻辑外设提供的宏指令集进行外设操控。应用***定义了统一的挂接外设驱动开发接口进行外设驱动扩展,所有的外设驱动程序按照挂接外设驱动开发接口开发。每一个具体类型的外设都有一个对应的驱动程序,实现一个业务逻辑外设的所有外设驱动的功能。在应用***的运行中,所有的挂接外设是作为一个集合管理起来的。整个工作流程如下:
应用***启动,读配置文件,并根据终端驱动的配置文件加载终端驱动。
业务应用程序运行,使用(通过应用***接口调用)某个逻辑外设(如逻辑密码小键盘),应用***到配置文件中寻找相应的配置参数,如果找到则加载相应的驱动,否则错误处理。
应用***调用挂接外设驱动程序的初始化函数,进行挂接外设驱动程序初始化,并进行版本信息检查等相关处理。
应用***使用业务应用程序的宏指令及相关参数调用挂接外设驱动程序,挂接驱动程序解释宏指令和相关参数,执行相关外设操作(向实际的物理设备发送实际的外设指令,该指令是直接在驱动程序根据实际的物理指令写到驱动程序中)。
应用***在退出时,调用所有已加载的***挂接外设驱动程序的释放接口进行资源释放。
应用***的整个详细工作流程如图6所示。图中详细描述了扩展外设结构在应用***中的详细工作流程,一个真正的应用***当然还会包括其它有关的工作流程。步骤601,应用***启动;步骤602,读取终端配置文件;步骤603,根据终端配置文件的参数,加载终端驱动,并进行其它初始化工作;步骤604,运行业务应用程序;步骤605,调用外设驱动接口,如果成功进入步骤606,否则进入步骤616,进行出错处理;步骤606,从挂接外设配置文件的外设驱动集合中寻找与逻辑外设标识对应的逻辑外设;步骤607,判断是否有相应的配置,有则进入步骤108,否则进入步骤616,进行出错处理;步骤608,加载挂接外设驱动;步骤609,初始化挂接外设驱动;步骤610,***调用挂接驱动程序的宏指令处理,传递宏指令及相应参数;步骤611,挂接外设驱动程序将宏指令所对应的物理设备完成功能请求的物理外设指令通过终端驱动接口初始化后的物理外设接口(串口、并口等)传送给物理外设;步骤612,业务应用程序执行其它业务逻辑;步骤613,应用***是否退出,如果不退出则进入步骤404,否则进入步骤614;步骤614,调用挂接外设驱动释放终端驱动接口和外设驱动接口,以释放***资源;步骤615,***退出。
每种类型的逻辑设备对应的挂接外设驱动要求实现的功能是一致的,而且必须一致,这样就可以屏蔽业务应用程序开发使用与不同的外设之间的差异。
不同的物理设备有不同的外设指令,为了实现相同的逻辑设备功能请求,在***中是以不同的挂接外设驱动实现。
新型号设备的使用仅是新的物理设备驱动的开发和配置的改变,对业务应用程序发出的宏指令功能请求毫无影响。
新类型设备的增加对***软件来说是一个逻辑外设的增加,定义相关的宏指令集,定义相关的逻辑设备ID编写相应的驱动程序就可以增加到***中。对业务应用程序也是毫无影响的。
下面以一个简化的银行前端***作为模型,建立一个使用扩展外设体系结构的银行前端应用***。
首先定义前端应用***的逻辑设备。根据该银行业务的需求,在该银行的前端应用***中,支持存折或卡的磁条读写,并且用户需要使用密码器输入用户的密码。因此,可以定义该***使用两个逻辑外设:逻辑磁条读写器和逻辑密码小键盘,在***中的标识分别为MSFRW和PINKEY。这两个逻辑设备对应的实际物理设备配置参数如下表所示。
表3逻辑外设为密码小键盘与磁条读写器的配置文件
逻辑外设 | 接口类型(0串/1并)Integer | 波特率Integer | 数据位(Byte) | 停止位(Byte) | 连接口Integer | 校验位(Byte) | 超时(秒)Integer | 外设驱动String |
密码小键盘(PINKEY) | 0 | 9600 | 8 | 1 | 11 | 0 | 10 | PinKeyDrv |
磁条读写器(MSFRW) | 0 | 9600 | 8 | 1 | 12 | 0 | 10 | MsfRWDrv |
宏指令集的定义。在实际的磁条读写器中,其指令是很丰富的,各个厂家的指令也不相同(表4为某厂家某型号磁条读写器命令集样例),但功能都基本一致。
表4读命令
命令 | 功能 | 数据返回格式 |
ESC] | 读第2磁道 | ESC s TK2data?FS |
ESCT] | 读第3磁道 | ESC s A TK3data?FS |
ESCB] | 读2-3磁道 | ESC s TK2data A TK3data?FS |
若读磁道数据出错,则返回DEL(7f)
表5写命令
命令 | 功能 |
ESC t TK2data GS ESC | 读第2磁道 |
ESC t A TK3data GS ESC | 读第3磁道 |
ESC t TK2data A TK3data GS ESC | 读2-3磁道 |
读写操作状态回送命令:ESC j
表6状态码
磁道 | 返回状态码 |
第2磁道 | ESC rp/q |
第3磁道 | ESC T rp/q |
2-3磁道 | ESC B rp/q |
注:返回码最后一位p表示成功,q表示失败;ESC j命令可跟在读/写命令后发出,若无读/写操作,该命令无效。
热复位命令:ESC 0
一般磁条读写器有以下几个功能:读2磁道、读3磁道、读2-3磁道、写2磁道、写3磁道、写2-3磁道。业务上对磁条的数据格式也不超过这个范围,因此可以定义逻辑磁条读写器的宏指令集与物理功能相对应,其宏指令集为{读2磁道、读3磁道、读2-3磁道、写2磁道、写3磁道、写2-3磁道}。同样地对密码小键盘,可以定义其宏指令集为{输入密码、再输入密码}。
该银行前端***为业务应用程序定义以下业务应用程序开发接口:
接口名称(逻辑设备标识,宏指令,参数)——返回值表示成功失败;
业务应用程序通过该业务应用程序开发接口,把逻辑设备标识、逻辑设备的某宏指令和宏指令需要的参数作为该业务应用程序开发接口的参数,就可以使用***配置的实际物理设备。
该银行应用前端***为外设驱动程序的编写提供如前面步骤4所提供的所有接口。终端的驱动程序是根据实际的终端的串口,并口或者USB接口等编写的,实现步骤4中的相关函数接口,用于实现宏指令功能请求物理外设驱动程序的编写也是根据实际的设备编写。
上面某厂家密码小键盘硬件指令集如下表所示:
表4某厂家密码小键盘硬件指令集
硬件指令 | 功能描述 |
ESC I | 绿灯亮,语音一“您好!请输入密码”,允许输入,按“确认”键后打包送*** |
ESC E | 绿灯亮,语音二“请再输入一次”,允许输入,按“确认”键后打包送*** |
x88(表示16进制字节88) | 提示灯灭,禁止输入 |
该厂家小键盘驱动接口定义如下:
初始化(终端驱动函数指针结构体,连接端口,波特率,数据位,停止位,奇偶校验标志,超时),其中在初始化中保存终端驱动函数指针,保存连接端口,保存波特率,保存数据位,保存停止位,保存奇偶校验标志,保存超时;
通信(宏指令,输入参数缓冲区,输入参数长度,输出参数缓冲区,输出参数数据长度缓冲区),其中在通信接口中宏指令分别为输入密码,再输入密码两条。
输入密码宏指令中具体的物理外设硬件指令为:调用终端驱动接口中的打开串口函数,传递波特率等相应参数;调用终端驱动接口中的写串口函数,发送语音一指令(ESC I);调用终端驱动读接口中的串口函数,读密码小键盘的输入;调用终端驱动接口中的写串口函数,发送关闭密码小键盘指令(\x88);调用终端驱动接口中的关闭串口函数,关闭串口。
再输入密码宏指令中具体的物理外设硬件指令为:调用终端驱动接口中的打开串口函数,传递波特率等相应参数;调用终端驱动接口中的写串口函数,发送语音二指令(ESC E);调用终端驱动接口中的读串口函数,读密码小键盘的输入;调用终端驱动接口中的写串口函数,发送关闭密码小键盘指令(\x88);调用终端驱动接口中的关闭串口函数,关闭串口。
如果出错则返回出错代码,否则把读到的数据拷贝到输出参数缓冲区,把输出参数长度拷贝到输出参数数据长度缓冲区。
释放(),释放资源接口在本例中没有特别参数,因为没有申请特别的资源,不用作特别的清理工作。
还另外提供两个特殊的驱动接口,获取挂接外设驱动版本号和获取挂接外设信息,其中:
获取挂接外设驱动版本号(版本数据缓冲区),拷贝物理外设硬件驱动指令版本号到版本数据缓冲区。
获取挂接外设信息(信息数据缓冲区),拷贝物理外设硬件信息到信息数据缓冲区。
分别指定这两个挂接外设密码小键盘的驱动程序为PinKeyDrv,磁条读写器驱动程序为MsfRSDrv。这时,一个使用扩展外设结构的银行前端应用***就建立起来了。
下面介绍它是如何运作的。在该***中,***有一配置文件配置外设的情况、逻辑磁条读写器的驱动程序和逻辑密码小键盘的驱动程序。应用***根据配置把这些外设的驱动程序加载到***中。如一个业务应用程序通过该***提供的业务程序开发接口,“输入密码”宏指令作为参数,就可以使用密码小键盘的输入密码功能了。
如果有另外一个厂家提供的新型号密码小键盘设备,为了在该银行前端***中使用,只需要编写相应的密码小键盘设备驱动程序命名为OPinKeyDrv,在该银行前端应用***的配置文件中把密码小键盘的驱动修改为新的设备驱动OPinKeyDrv,银行前端***不需要修改,业务应用程序也不需要作修改,但却能够使用另外厂家的新型号密码小键盘设备了。如果新型号的设备有新的功能,我们只需要定义新功能的宏指令,在驱动程序添加新功能宏指令的实现,在业务程序中使用新的宏指令,这样就可以使用新的外设功能了,银行前端应用***完全不需要修改。扩展设备结构体系对于不同的外设连接方式的使用更是显得游刃有余,只需要修改应用***的配置文件的连接类型、连接方式等参数即可。
由于业务发展的需要,我们需要在***中使用存折打印机。在银行前端***中,我们需要定义一个逻辑存折打印机,并定义它的标识为PRT,相应的定义逻辑存折打印机的宏指令集,并根据实际使用的存折打印机开发手册编写完成宏指令的功能的物理外设硬件驱动程序。这样,就可以在业务程序中使用存折打印机了。而银行前端应用***并不需要作任何修改,只是在配置文件中增多了一个存折打印机的配置而已。
图7是该银行前端应用***物理连接示意图。银行前端应用***在UNIX服务器上运行,驱动程序也放在UNIX服务器并在上面运行。
图8为图7应用***在远端UNIX服务器上运行的***结构图。如图所示,在应用***中读取配置文件,在该配置文件中具有图中终端的配置情况文件,应用***通过外设驱动开发接口的终端驱动开发接口调用终端驱动程序,业务软件向外设驱动开发接口发出宏指令功能请求,该功能请求中包括逻辑外设标识和相应的参数信息,外设驱动开发接口将宏指令功能请求发送给某个相应的挂接外设驱动开发接口,该挂接外设驱动开发接口分析出与所要求使用的逻辑外设,由外设匹配单元通过配置文件单元查找与逻辑外设相对应的物理外设驱动,宏指令编译单元根据物理外设和宏指令查找相对应的完成该宏指令功能的物理外设驱动指令,将该物理外设驱动指令传送给终端,终端再根据物理外设接口的规定,按照串口或者并口或者USB接口规则传送给物理外设,以完成业务软件的功能请求。
本发明的有益效果在于,屏蔽了业务应用程序使用外设与具体外设差异的影响,同时给应用***的维护和扩展带来极大的方便,实现不同厂商同一类型外设无缝的接入到***中。标准的外设操纵宏指令集,统一的驱动程序接口,为外设的扩展,新类型设备的使用提供了一条方便快捷的接入途径。
以上具体实施方式仅用于说明本发明,而非用于限定本发明。
Claims (14)
1.一种扩展外设的方法,其特征在于包括以下步骤:
应用***通过终端驱动开发接口加载终端驱动的步骤;
业务软件通过挂接外设驱动开发接口向逻辑外设发出宏指令功能请求的步骤;
根据业务软件的宏指令功能请求,查找确定与所述逻辑外设相对应的物理外设驱动的步骤;
外设驱动调用存储的完成宏指令的物理外设指令,以操作物理外设完成功能请求的步骤。
2.根据权利要求1所述的一种扩展外设的方法,其特征在于,在应用***通过终端驱动开发接口加载终端驱动的步骤中还包括,应用***通过读取一配置文件加载终端驱动的步骤。
3.根据权利要求2所述的一种扩展外设的方法,其特征在于,所述的配置文件包括终端名称和终端驱动程序字段。
4.根据权利要求1所述的一种扩展外设的方法,其特征在于,在挂接外设驱动开发接口根据业务软件的宏指令功能请求,查找确定与所述逻辑外设相对应的物理外设驱动的步骤中还包括,根据一配置文件加载与所述逻辑外设相对应的物理外设驱动的步骤。
5.根据权利要求4所述的一种扩展外设的方法,其特征在于,所述配置文件包括接口类型、波特率、数据位、停止位、连接口、校验位、超时、外设驱动程序字段。
6.根据权利要求1所述的一种扩展外设的方法,其特征在于,在操作物理外设完成功能请求的步骤之后还包括,释放终端驱动开发接口资源和挂接外设驱动开发接口资源。
7.根据权利要求1所述的一种扩展外设的方法,其特征在于,应用***和业务软件通过外设驱动开发接口与终端驱动开发接口、挂接外设驱动开发接口传递数据。
8.一种扩展外设的***,其特征在于,
终端驱动开发接口,应用***通过终端驱动开发接口加载终端驱动;
挂接外设驱动开发接口,终端驱动开发接口用于接收业务软件宏指令功能请求数据,分析出功能请求对应的逻辑外设;
外设匹配单元,与所述挂接外设驱动开发接口相连接,用于查找所述逻辑外设所对应的物理外设驱动;
宏指令编译单元,与所述外设匹配单元相连接,用于在查找出来的所述对应的物理外设驱动中查找完成所述宏指令功能请求的物理外设驱动指令集;
物理外设接口,一端与所述宏指令编译单元相连接,另一端与物理外设相连接,接收宏指令编译单元的物理外设驱动指令,传送给物理外设使之完成业务软件的功能请求。
9.根据权利要求8所述的一种扩展外设的***,其特征在于还包括一配置文件单元,与所述终端驱动开发接口相连接,所述业务软件的宏指令功能请求通过配置文件单元中存储的终端配置文件,通过规定的终端驱动开发接口进行数据通信。
10.根据权利要求9所述的一种扩展外设的***,其特征在于,所述的配置文件包括终端名称和终端驱动程序字段。
11.根据权利要求8所述的一种扩展外设的***,其特征在于,所述配置文件单元与所述外设匹配单元相连接,所述外设匹配单元在配置文件单元中查找与所述逻辑外设对应的物理外设驱动。
12.根据权利要求11所述的一种扩展外设的***,其特征在于,所述配置文件包括接口类型、波特率、数据位、停止位、连接口、校验位、超时、外设驱动程序字段。
13.根据权利要求8所述的一种扩展外设的***,其特征在于,所述物理外设接口包括:串行接口,并行接口,USB接口,网络接口。
14.根据权利要求8所述的一种扩展外设的***,其特征在于还包括一外设驱动开发接口,用于接收应用***和业务软件的数据信号,传送给终端驱动开发接口和挂接外设驱动开发接口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101025473A CN100367253C (zh) | 2005-09-08 | 2005-09-08 | 一种扩展外设的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101025473A CN100367253C (zh) | 2005-09-08 | 2005-09-08 | 一种扩展外设的方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1737779A true CN1737779A (zh) | 2006-02-22 |
CN100367253C CN100367253C (zh) | 2008-02-06 |
Family
ID=36080580
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101025473A Active CN100367253C (zh) | 2005-09-08 | 2005-09-08 | 一种扩展外设的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100367253C (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102289416A (zh) * | 2011-07-12 | 2011-12-21 | 信雅达***工程股份有限公司 | 基于虚拟硬件设备的影像采集方法 |
CN102656584A (zh) * | 2009-12-16 | 2012-09-05 | 皇家飞利浦电子股份有限公司 | 通用医疗设备驱动器适配器 |
CN102831707A (zh) * | 2012-08-09 | 2012-12-19 | 北京南天软件有限公司 | 一种通用外设驱动接口 |
CN103136583A (zh) * | 2013-03-07 | 2013-06-05 | 中国工商银行股份有限公司 | 一种联机点钞设备及*** |
CN103257894A (zh) * | 2012-02-20 | 2013-08-21 | 联想(北京)有限公司 | 一种管理程序的方法及电子终端 |
CN107491304A (zh) * | 2017-08-07 | 2017-12-19 | 浪潮金融信息技术有限公司 | 一种基于ipsm和io控制板实现siu驱动功能的方法 |
CN108255757A (zh) * | 2018-01-02 | 2018-07-06 | 中国工商银行股份有限公司 | 外设的集中调用方法、装置以及*** |
CN109032677A (zh) * | 2018-07-13 | 2018-12-18 | 中国建设银行股份有限公司 | 银行柜面外设管理方法以及装置 |
CN110362354A (zh) * | 2019-07-18 | 2019-10-22 | 国网四川省电力公司 | Rfid读码器外部接口统一驱动管理***及方法 |
CN113190261A (zh) * | 2020-01-14 | 2021-07-30 | 深圳怡化电脑股份有限公司 | 设备驱动配置方法、设备驱动方法、装置及终端设备 |
CN113296747A (zh) * | 2021-07-27 | 2021-08-24 | 南京理控物联技术有限公司 | 一种智慧灯杆***中软件高效对接各类挂载设备的方法 |
CN113918132A (zh) * | 2021-12-13 | 2022-01-11 | 珠海市新德汇信息技术有限公司 | 设备标准化管理方法、***、工作方法、装置及存储介质 |
TWI769696B (zh) * | 2020-02-14 | 2022-07-01 | 日商三菱電機股份有限公司 | 驅動控制裝置及驅動控制系統 |
CN115277778A (zh) * | 2022-07-29 | 2022-11-01 | 平安科技(深圳)有限公司 | 物联网***的配置方法及装置、电子设备、存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5910180A (en) * | 1995-11-21 | 1999-06-08 | Diamond Multimedia Systems, Inc. | Context virtualizing device driver architecture |
US5991822A (en) * | 1997-03-17 | 1999-11-23 | International Business Machines Corporation | System for modifying functions of static device driver using a registered driver extension extended dynamically by providing an entry point for the driver extension |
US6694378B1 (en) * | 1998-12-22 | 2004-02-17 | Intel Corporation | Extension of device driver objects |
US6553223B1 (en) * | 1999-12-30 | 2003-04-22 | Qualcomm Incorporated | Virtual device architecture for mobile telephones |
US7533214B2 (en) * | 2002-02-27 | 2009-05-12 | Microsoft Corporation | Open architecture flash driver |
US7284246B2 (en) * | 2002-04-23 | 2007-10-16 | Canon Kabushiki Kaisha | Extensible device driver |
US7106472B2 (en) * | 2002-10-31 | 2006-09-12 | Hewlett-Packard Development Company, L.P. | Print driver for an extended printing device |
CN1225689C (zh) * | 2003-01-09 | 2005-11-02 | 清华大学 | 开放式结构机器人控制器 |
CN1303542C (zh) * | 2003-10-24 | 2007-03-07 | 英业达股份有限公司 | Linux操作***下对USB设备即插即用的方法 |
-
2005
- 2005-09-08 CN CNB2005101025473A patent/CN100367253C/zh active Active
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102656584A (zh) * | 2009-12-16 | 2012-09-05 | 皇家飞利浦电子股份有限公司 | 通用医疗设备驱动器适配器 |
CN102656584B (zh) * | 2009-12-16 | 2016-01-27 | 皇家飞利浦电子股份有限公司 | 通用医疗设备驱动器适配器 |
CN102289416B (zh) * | 2011-07-12 | 2015-03-04 | 信雅达***工程股份有限公司 | 基于虚拟硬件设备的影像采集方法 |
CN102289416A (zh) * | 2011-07-12 | 2011-12-21 | 信雅达***工程股份有限公司 | 基于虚拟硬件设备的影像采集方法 |
CN103257894A (zh) * | 2012-02-20 | 2013-08-21 | 联想(北京)有限公司 | 一种管理程序的方法及电子终端 |
CN103257894B (zh) * | 2012-02-20 | 2018-08-10 | 联想(北京)有限公司 | 一种管理程序的方法及电子终端 |
CN102831707A (zh) * | 2012-08-09 | 2012-12-19 | 北京南天软件有限公司 | 一种通用外设驱动接口 |
CN102831707B (zh) * | 2012-08-09 | 2015-04-22 | 北京南天软件有限公司 | 一种通用外设驱动接口 |
CN103136583A (zh) * | 2013-03-07 | 2013-06-05 | 中国工商银行股份有限公司 | 一种联机点钞设备及*** |
CN103136583B (zh) * | 2013-03-07 | 2016-03-23 | 中国工商银行股份有限公司 | 一种联机点钞设备及*** |
CN107491304B (zh) * | 2017-08-07 | 2021-04-09 | 浪潮金融信息技术有限公司 | 一种基于ipsm和io控制板实现siu驱动功能的方法 |
CN107491304A (zh) * | 2017-08-07 | 2017-12-19 | 浪潮金融信息技术有限公司 | 一种基于ipsm和io控制板实现siu驱动功能的方法 |
CN108255757A (zh) * | 2018-01-02 | 2018-07-06 | 中国工商银行股份有限公司 | 外设的集中调用方法、装置以及*** |
CN109032677A (zh) * | 2018-07-13 | 2018-12-18 | 中国建设银行股份有限公司 | 银行柜面外设管理方法以及装置 |
CN110362354A (zh) * | 2019-07-18 | 2019-10-22 | 国网四川省电力公司 | Rfid读码器外部接口统一驱动管理***及方法 |
CN113190261A (zh) * | 2020-01-14 | 2021-07-30 | 深圳怡化电脑股份有限公司 | 设备驱动配置方法、设备驱动方法、装置及终端设备 |
CN113190261B (zh) * | 2020-01-14 | 2024-03-29 | 深圳怡化电脑股份有限公司 | 设备驱动配置方法、设备驱动方法、装置及终端设备 |
TWI769696B (zh) * | 2020-02-14 | 2022-07-01 | 日商三菱電機股份有限公司 | 驅動控制裝置及驅動控制系統 |
CN113296747A (zh) * | 2021-07-27 | 2021-08-24 | 南京理控物联技术有限公司 | 一种智慧灯杆***中软件高效对接各类挂载设备的方法 |
CN113296747B (zh) * | 2021-07-27 | 2021-10-15 | 南京理控物联技术有限公司 | 一种智慧灯杆***中软件高效对接各类挂载设备的方法 |
CN113918132A (zh) * | 2021-12-13 | 2022-01-11 | 珠海市新德汇信息技术有限公司 | 设备标准化管理方法、***、工作方法、装置及存储介质 |
CN115277778A (zh) * | 2022-07-29 | 2022-11-01 | 平安科技(深圳)有限公司 | 物联网***的配置方法及装置、电子设备、存储介质 |
CN115277778B (zh) * | 2022-07-29 | 2023-09-15 | 平安科技(深圳)有限公司 | 物联网***的配置方法及装置、电子设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN100367253C (zh) | 2008-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1737779A (zh) | 一种扩展外设的方法及*** | |
CN1767453A (zh) | 自动测试方法和*** | |
CN1106609C (zh) | 在一个计算机***中配置多个媒体的方法和设备 | |
CN1904873A (zh) | 嵌入式实时操作***中多核处理器的核间通信方法及装置 | |
CN1716325A (zh) | 打印机、pos***、无线通信控制方法和信息记录媒体 | |
CN1722092A (zh) | Vex-虚拟扩展框架 | |
CN1873626A (zh) | 一种自动生成桩和驱动函数的单元测试***及方法 | |
CN1841298A (zh) | 信息处理装置和方法,程序以及存储介质 | |
CN1804799A (zh) | 单片机在线加载升级方法及*** | |
CN1725177A (zh) | 嵌入式设备集成开发***及其使用方法 | |
CN101042645A (zh) | 统一软件开发环境的方法、设备及*** | |
CN105511936A (zh) | 测试***、方法和装置 | |
CN1851681A (zh) | 对usb接口设备进行操作的装置及方法 | |
CN1906598A (zh) | 信息处理设备、存储区管理方法和计算机程序 | |
CN1294501C (zh) | 控制***中装置的控制方法 | |
CN1645372A (zh) | 一种实时内存数据库通用约束的实现方法 | |
CN1255744C (zh) | 智能卡通用高速发卡机及其发卡方法 | |
CN100337204C (zh) | 软件在线升级的方法 | |
CN1734412A (zh) | 状态信息处理器 | |
CN1949176A (zh) | 用于管理试探特性的方法和*** | |
CN1091842A (zh) | 包括用户接口的中断***和方法 | |
CN1245685C (zh) | 基于构件的操作***动态设备驱动的方法 | |
CN1777124A (zh) | 协议测试的装置及其实现协议测试的方法 | |
CN1659513A (zh) | 把数据写入非易失性存储器的方法和设备 | |
CN1622312A (zh) | 一种验证芯片硬件行为与软件模拟行为的一致性的方法 |
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 |