自动测试系统的仪器模块驱动实现方法

文档序号:6565767阅读:764来源:国知局
专利名称:自动测试系统的仪器模块驱动实现方法
技术领域
本发明涉及自动测试领域,尤其是一种自动测试系统的仪器模块驱动实现方法。
于是,就提出了一种程序指令标准命令SCPI,该标准命令是从程控仪器器件消息的角度出发来进行标准化的,或者说它是从命令内容的角度来进行规范化的,而在仪器程序驱动模块接口的角度则没有做规范。这样,该命令虽然从一定程度上规范了仪器命令的格式与内容,简化了仪器编程的复杂度,但是由于各生产厂家生产的仪器在编程方式上有很大的不同,依然难以达到仪器互换的目的。
我们把测试系统的结构分为测试程序(或叫测试代码)、仪器驱动或产品驱动、仪器或产品三个层次,如

图1所示。其中产品本身可以看作是一台仪器,因此我们可以把这三个层次叫做测试程序、仪器驱动和仪器。为了达到仪器之间的互换,就必然要达到仪器驱动实现互换,因为仪器驱动与仪器本身是紧密相连的,可以看作是一体。当我们将具体的仪器及其驱动更换后,不需要修改或者重新编译测试代码,系统就可以完成预定的功能。只有在这种情况下,当仪器升级或者采购其他厂家的仪器以后,我们可以非常轻松地构造我们所需要的测试系统,而不要开发人员重新从头到尾编写、调试代码。
为达到上述目的,本发明的解决方案是一种自动测试系统的仪器模块驱动实现方法,在一个具有测试程序、仪器驱动、仪器的自动测试系统中,a、将测试程序分为两个层次完成基本的用户界面及整体结构的测试程序框架层、和仪器驱动进行通信的测试命令序列层;将仪器驱动分为两个层次提供和测试程序的测试代码通信的仪器上层驱动部分、提供和仪器通信的仪器下层驱动部分;b、定义在测试命令序列层和仪器上层驱动部分之间的基本仪器接口,将仪器驱动所提供的各种功能放在基本仪器接口中,并设立接口指针;c、测试程序装载仪器驱动模块,得到基本仪器接口的接口指针,按该接口指针访问基本仪器接口,实现仪器驱动的功能。
在步骤b中,将能产生仪器驱动的初始化、自检、关闭、获取系统当前状态和最近错误信息的基本驱动操作的命令放在该基本仪器接口中。并可以在基本仪器接口中设置同步调用函数,将测试程序与仪器驱动之间进行通信需要用到的操作命令放在该同步调用函数中。
在步骤b中,我们还可以以定义好的基本仪器接口为基础,加进具体测试操作命令,在仪器驱动模块的上层驱动部分定义抽象仪器接口。
在步骤b中,定义基本仪器接口和抽象仪器接口是采用.H文件的文件形式来定义。
在本发明中,在步骤c前,可以将仪器驱动模块放在动态连接库里;在步骤c中,装载仪器驱动模块是从动态连接库中取出仪器驱动模块进行装载。
在步骤c中,测试程序是通过微软的装载库函数来装载仪器驱动模块的。
我们在本发明的步骤c前,可以定义一个创建项目模块,它能创建所需要的仪器驱动实例,并返回一个基本仪器接口的接口指针;在步骤c中,测试程序装载仪器驱动模块之后,调用该创建项目模块,得到基本仪器接口的接口指针。
由于本发明利用了分层的思想,将仪器驱动分为上层驱动模块和下层驱动模块的层次结构,并定义了基本仪器接口和根据具体仪器功能在上面进一步定义的功能接口,测试命令序列只需要该接口文件,就可以完成编码工作,这样,仪器上层驱动部分不发生变化,当仪器更换时,测试代码不需要修改就可以完成正常工作,实现了仪器驱动的互换,使得将具体的仪器及其驱动更换后,不需要修改或者重新编译测试代码,系统就可以完成预定的功能。
另外,由于本发明是将仪器驱动模块放在动态连接库里,测试程序通过微软Microsoft的装载库LoadLibrary函数直接来从动态连接库中装载仪器驱动模块,省去了查找注册表寻找模块的过程,大大提高软件的运行速度,编码简单,不需理解很多复杂的协议。
由于本发明的基本仪器接口以及在此基础上扩充的功能接口是自定义的,它的实现过程不依赖于微软Microsoft的机制,因此提高了适用的普遍性,有利于进行扩充和发展。
图2是本发明的方法流程图。
图3是本发明的测试系统结构分层示意图。
(1)将测试程序分为两个层次完成基本的用户界面及整体结构的测试程序框架层、和仪器驱动进行通信的测试命令序列层;将仪器驱动分为两个层次提供和测试程序的测试代码通信的仪器上层驱动部分、提供和仪器通信的仪器下层驱动部分。
关于这一部分可以在图3中清楚地看到。图3的上部是测试程序,这在我们背景技术的介绍中已经介绍得比较清楚了。它分成两个部分一部分是测试程序框架,完成基本的用户界面及整体结构,并且基本上不发生变化;另一部分是测试命令序列,该部分主要用来和各种测试仪器进行通信,下发测试命令,接收仪器返回来的结果,并对结果进行分析。测试程序的开发基本上就是测试命令序列的开发。测试程序框架可以认为是程序开发的项层的开发,测试命令序列的开发则是具体的开发。
图3的中部是仪器驱动,它可以进一步划分成两个部分一部分是提供和测试代码通信的仪器上层驱动部分;一部分是提供和具体仪器通信的仪器下层驱动部分。我们对仪器驱动作这样的层次划分后,就会发现,只要仪器上层驱动部分不发生变化,就可以保证当仪器更换时,测试代码不需要修改就可以完成正常工作,实现即插即用。
我们在开头已经提过,测试装备由工控机、各种测试仪器以及被测物组成。关于这一部分的测试程序和仪器驱动,以及它们各自的两个层次,实际上都是在工控机内部的软件处理的层次,不是一个真正的物理实体。我们采用这种分层的处理方法,是实现本发明目的的第一步。
(2)在上面的叙述中我们已经提过,只要仪器上层驱动部分不发生变化,就可以保证当仪器更换时,测试代码不需要修改就可以完成正常工作,实现即插即用。那么,如何保证仪器上层驱动部分不发生变化呢?我们在测试命令序列层和仪器上层驱动部分之间定义一个基本仪器接口IDevice,将仪器驱动所提供的各种功能放在基本仪器接口IDevice中,并设立接口指针。测试命令序列层调用仪器上层驱动部分都是通过该接口及在其基础上的其他功能接口进行的。通过这些接口,测试命令序列只需要仪器驱动模块所定义的各接口文件,通过该接口文件,就可以完成编码工作,测试命令序列与仪器驱动模块在运行时刻绑定,在不调用仪器驱动的时候,测试命令序列和仪器驱动是独立的,仪器驱动的变化不会给测试命令序列的测试命令造成影响,从而实现仪器驱动模块的即插即用。
如何定义基本仪器接口IDevice呢?将能产生仪器驱动的初始化、自检、关闭、获取系统当前状态和最近错误信息的基本驱动操作的命令放在该基本仪器接口IDevice中。还可以在该基本仪器接口IDevice中设置同步调用函数,将测试程序与仪器驱动之间进行通信需要用到的操作命令放在该同步调用函数中。
现在举一个例子。
我们通过这样的过程定义一个基本仪器接口Idevice首先初始化模块,提供系统所需要的一些初始化参数;然后模块开始工作;使模块进行自检,检查模块本身是否出现故障;
复位,上述过程其实与计算机的开机过程是十分类似的;模块停止工作;卸载模块程序;获取模块的名称;获取模块的描述信息;获取模块的版本信息;判断是否在线;获取系统当前状态,0表示该设备坏;1表示该设备正常;其他用户可以自己定义;获取最近的错误信息,这一条和上一条是我们自动测试系统进行自动测试的关键;如果有子模块,获取子模块的个数。在模块中可以设置一些子模块,对于每个子模块的调用,其实也要遵循与母模块同样的过程;获取某子模块的接口。
在本接口中设置了同步调用函数1)读函数,包括接收缓冲区指针;欲读取的字节数;实际读取的字节数指针;同步读。
2)写函数,包括发送缓冲区;欲发送的字节数;实际发送的字节数指针;同步写。
3)安装回调函数的函数,包括设置事件代码ID;发生事件后,事件处理回调函数;安装回调函数。
4)卸载回调函数的函数,包括设置事件代码ID;发生事件后,事件处理回调函数;卸载回调函数。
当然,在实际过程中,上述过程都是以源代码的形式进行的。我们可以仿照上述过程进行设置。
我们还可以以定义好的基本仪器接口IDevice为基础,加进具体测试操作命令,在仪器驱动模块的上层驱动部分定义抽象仪器接口。比如说我们可以定义SDH测试仪接口(例如传输设备ISdh接口),可以在该接口定义“抖动测试”、“误码测试”等具体测试操作命令,由于这些功能是SDH测试仪都拥有的功能,所以通过该接口,就可以操作所有的SDH测试仪。当SDH测试仪升级增加了新的测试功能,则可以再定义测试仪接口(例如传输设备ISdh2接口),对于新的SDH测试仪的驱动模块,不但要实现传输设备ISdh接口,以便支持以前定义的功能,还要实现传输设备ISdh2接口,用来支持测试仪新增加的功能。这样,用新的测试仪就可以非常平滑地用于以前使用旧测试仪所开发的测试系统。
基本仪器接口IDevice和抽象仪器接口的接口定义是采用Microsoft定义的格式,接口定义文件采用.H文件的形式。
(3)测试程序装载仪器驱动模块,得到基本仪器接口IDevice的接口指针,按该接口指针访问基本仪器接口IDevice,实现仪器驱动的功能。
在此步骤前,可以将仪器驱动模块放在动态连接库DLL里,在微软的体系中,仪器驱动软件模块是既可以放在动态连接库中作为文本文件执行,也可以作为带有.exe的可执行文件执行的,结果造成程序执行的速度下降,在动态连接库中程序的执行是相对比较快的。在本步骤执行时,装载仪器驱动模块是从动态连接库DLL中取出仪器驱动模块进行装载。
测试程序是通过微软Microsoft的装载库LoadLibrary函数来装载仪器驱动模块的。它没有象微软那样,通过查找注册表进行一个漫长过程的查找来进行,极大地节省了本发明的执行时间,提高了本发明的效率。关于装载库LoadLibrary函数部分,是微软的一个通用函数,本领域技术人员非常清楚。
在本步骤执行前,可以定义一个创建项目CreateObject模块,它能创建所需要的仪器驱动实例,并返回一个基本仪器接口IDevice的接口指针;在本步骤中,测试程序装载仪器驱动模块之后,调用该创建项目模块,得到基本仪器接口IDevice的接口指针。该创建项目模块的功能就是为测试程序的测试命令找到一个合适的仪器驱动实例,对本领域技术人员来说很容易编程操作。在具体调用仪器驱动模块时,可以通过一定的技术处理,在测试命令序列上指明需要的仪器类型,比如ATM测试仪,然后由测试程序框架根据当前所安装的仪器种类,决定装载最合适的仪器驱动模块,并取得该仪器驱动模块的基本仪器接口IDevice,将之返回给测试命令序列模块使用。
仪器驱动模块的下层驱动部分实际上就是一个仪器适配器,随仪器的不同而不同;上层驱动部分则根据不同的功能进行规定。这样在实际应用中,测试程序所处理的只是象ATM测试仪等抽象的仪器设备驱动,测试程序下发的命令通过下层驱动接口,转换成特定仪器所能识别的命令。通过这样的分层结构,就可以处理仪器之间的互换问题。
权利要求
1.一种自动测试系统的仪器模块驱动实现方法,在一个具有测试程序、仪器驱动、仪器的自动测试系统中,a、将测试程序分为两个层次完成基本的用户界面及整体结构的测试程序框架层、和仪器驱动进行通信的测试命令序列层;将仪器驱动分为两个层次提供和测试程序的测试代码通信的仪器上层驱动部分、提供和仪器通信的仪器下层驱动部分;b、定义在测试命令序列层和仪器上层驱动部分之间的基本仪器接口(IDevice),将仪器驱动所提供的各种功能放在基本仪器接口(IDevice)中,并设立接口指针;c、测试程序装载仪器驱动模块,得到基本仪器接口(IDevice)的接口指针,按该接口指针访问基本仪器接口(IDevice),实现仪器驱动的功能。
2.根据权利要求1所述的自动测试系统的仪器模块驱动实现方法,其特征在于在步骤b中,将能产生仪器驱动的初始化、自检、关闭、获取系统当前状态和最近错误信息的基本驱动操作的命令放在该基本仪器接口(IDevice)中。
3.根据权利要求1或2所述的自动测试系统的仪器模块驱动实现方法,其特征在于在步骤b中,在基本仪器接口(IDevice)中设置同步调用函数,将测试程序与仪器驱动之间进行通信需要用到的操作命令放在该同步调用函数中。
4.根据权利要求3所述的自动测试系统的仪器模块驱动实现方法,其特征在于在步骤b中,以定义好的基本仪器接口(IDevice)为基础,加进具体测试操作命令,在仪器驱动模块的上层驱动部分定义抽象仪器接口。
5.根据权利要求4所述的自动测试系统的仪器模块驱动实现方法,其特征在于在步骤b中,定义基本仪器接口(IDevice)和抽象仪器接口是采用.H文件的文件形式来定义。
6.根据权利要求1所述的自动测试系统的仪器模块驱动实现方法,其特征在于在步骤c前,将仪器驱动模块放在动态连接库(DLL)里;在步骤c中,装载仪器驱动模块是从动态连接库(DLL)中取出仪器驱动模块进行装载。
7.根据权利要求1或6所述的自动测试系统的仪器模块驱动实现方法,其特征在于在步骤c中,测试程序是通过微软(Microsoft)的装载库(LoadLibrary)函数来装载仪器驱动模块的。
8.根据权利要求1或6所述的自动测试系统的仪器模块驱动实现方法,其特征在于在步骤c前,定义一个创建项目(CreateObject)模块,它能创建所需要的仪器驱动实例,并返回一个基本仪器接口(IDevice)的接口指针;在步骤c中,测试程序装载仪器驱动模块之后,调用该创建项目(CreateObject)模块,得到基本仪器接口(IDevice)的接口指针。
全文摘要
一种自动测试系统的仪器模块驱动实现方法,将测试程序分为两个层次测试程序框架层、测试命令序列层,将仪器驱动分为两个层次仪器上层驱动部分、仪器下层驱动部分;定义基本仪器接口,将仪器驱动所提供的各种功能放在基本仪器接口中,并设立接口指针;测试程序装载仪器驱动模块,得到基本仪器接口的接口指针,按该接口指针访问基本仪器接口,实现仪器驱动的功能。它能够实现仪器驱动的互换,使得将具体的仪器及其驱动更换后,不需要修改或者重新编译测试代码,系统就可以完成预定的功能。
文档编号G06F11/36GK1402132SQ0113260
公开日2003年3月12日 申请日期2001年8月28日 优先权日2001年8月28日
发明者刘进 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1