基于远程过程调用协议的分布式驱动中间件制造技术

技术编号:23890139 阅读:39 留言:0更新日期:2020-04-22 06:07
本发明专利技术公开了一种基于远程过程调用协议的分布式驱动中间件,采用客户端和IVI驱动服务器的软件架构,其中IVI驱动服务器运行在具有测试资源的节点计算机上,测试脚本在客户端上通过远程过程调用协议发送给IVI驱动服务器;IVI驱动服务器上的IVI驱动程序根据测试脚本驱动被测产品,并通过远程过程调用协议返回结果给客户端。本发明专利技术大大降低测试软件与硬件资源驱动的耦合关系,将测试资源驱动作为一种通用服务提供给测试软件,使得测试开发人员在开发测试软件(仿真、用例等)时只需关心功能逻辑、验证流程,而无需关心资源提供,提高了航电测试验证的效率、测试软件的灵活性。

Distributed driver middleware based on remote procedure call protocol

【技术实现步骤摘要】
基于远程过程调用协议的分布式驱动中间件
本专利技术涉及航电系统测试与仿真
,具体涉及一种基于远程过程调用协议的分布式驱动中间件。
技术介绍
现代航电系统是一个高度综合化、模块化的复杂系统,为实现系统内外的信息交互,往往采用多种高规格的网络、总线、点对点通讯技术。鉴于此,在对航电系统进行测试时,所需的仿真资源类型也越来越多。实际上,对单个型号的T2级别的航电系统进行测试,就需要利用将近10种不同类型的通讯仿真资源板卡。传统的测试设备在开发时,一般是使用测试软件直接调用厂家提供的API驱动函数,但这样做有两大弊端:一方面是测试软件开发人员需要花费大量精力适配硬件资源驱动;另一方面是测试软件和驱动绑定,当硬件资源更换时,需要对整个测试软件进行调整。
技术实现思路
针对传统测试系统硬件驱动和仿真测试软件紧耦合、无法复用、维护成本高等问题,本专利技术的专利技术目的在于提供了一种基于远程过程调用协议的分布式驱动中间件,借鉴可互换虚拟仪器(IVI)规范思想,采用远程过程调用协议(PRC)、分布式结构,设计了测试资源的分布式驱动中间件,大大降低测试软件与硬件资源驱动的耦合关系,将测试资源驱动作为一种通用服务提供给测试软件,使得测试开发人员在开发测试软件(仿真、用例等)时只需关心功能逻辑、验证流程,而无需关心资源提供,提高了航电测试验证的效率、测试软件的灵活性。本专利技术的专利技术目的通过以下技术方案实现:一种基于远程过程调用协议的分布式驱动中间件,采用客户端和IVI驱动服务器的软件架构,其中IVI驱动服务器运行在具有测试资源的节点计算机上,测试脚本在客户端上通过远程过程调用协议发送给IVI驱动服务器;IVI驱动服务器上的IVI驱动程序根据测试脚本驱动被测产品,并通过远程过程调用协议返回结果给客户端。依据上述特征,IVI驱动程序包括若干个IVI具体驱动程序、若干个IVI类驱动程序和IVI配置文件;每个IVI具体驱动程序是利用Python语言封装对厂商提供的板块驱动函数封装成而成;每个IVI类驱动程序是一类仪器函数和属性的集合,用于控制某一类型的仪器;IVI引擎用于完成硬件状态缓存、仪器属性跟踪、测试数据和仪器通道映射以及IVI类驱动函数和IVI具体仪器驱动程序的映射功能;IVI驱动程序收到测试脚本后,调用对应的IVI类驱动函数,再通过驱动配置引擎索引到IVI具体仪器驱动程序,最后执行厂家具体的板块驱动函数。依据上述特征,远程过程调用协议的通信过程如下:发送时:步骤A1、发送方以本地调用方式调用服务;步骤A2、发送方句柄接收到调用后负责将方法、参数组装成能够进行网络传输的消息体;步骤A3、句柄找到接收方地址,并将消息发送到接收方;接收时:步骤B1、接收方句柄收到消息后进行解码;其中步骤A2、步骤A3、步骤B1均由python的第三方模块Zeropc来实现。本专利技术的有益效果在于:根据本专利技术设计的分布式驱动中间件,能够实现硬件资源驱动和仿真测试软件的解耦以及在分布式仿真系统中提供无差异于单机的硬件访问服务。通过对其他厂家驱动的二次封装,解决了不同厂家模块或者资源互换问题,延长了航电系统仿真平台的生命周期,同时通过RPC协议进行多台计算机的数据共享,使得测试开发人员在开发测试用例脚本时不需要关心网络层的协议,只需要关系验证流程和功能逻辑,从而提高了航电测试验证的效率。附图说明图1为标准IVI体系架构图。图2为Python和C/C++混合编程示意图。图3为IVI驱动设计示意图。图4硬件配置文件示例。图5RPC远程过程调用流程。图6基于远程过程调用协议的分布式驱动中间件的架构图。具体实施方式下面结合附图和实施例对本专利技术作进一步的详细说明。如图6所示,本实施例所示的一种基于远程过程调用协议的分布式驱动中间件采用客户端和IVI驱动服务器的软件架构,其中IVI驱动服务器运行在具有测试资源的节点计算机上,测试脚本在客户端上通过远程过程调用协议发送给IVI驱动服务器;IVI驱动服务器上的IVI驱动程序根据测试脚本驱动被测产品,并通过远程过程调用协议返回结果给客户端。本实施例主要涉及基于可互换虚拟仪器(IVI)的IVI驱动程序和远程过程调用协议(PRC)二部分内容,下面对这二部分内容展开说明。(一)基于可互换虚拟仪器(IVI)的IVI驱动程序可互换虚拟仪器(IVI)是由IVI基金会(interchangeablevirtualinstrumentsFoundation)在VXIPlug&Play(简称VPP)基础上为仪器驱动程序制定的编程接口规范。采用IVI规范编写驱动程序进一步提高了仪器驱动的执行性能,达到了真正意义的仪器互换;应用程序可以实现完全独立于硬件,并具备仪器仿真的功能,对于延长应用程序的生命周期、增强软件的可维护性,加快TPS(TestProgramSet)的开发具有极其重要的作用。目前IVI基金会并没有现成的航电总线仿真仪器的标准规范,但可以参照示波器/数字化仪(IviScope)和数字万用表(IviDmm)等仪器的IVI规范来开发航电总线仿真仪器的IVI驱动程序。从IVI体系结构框图1可知,符合IVI规范的驱动程序主要包括两部分IVI具体驱动程序和IVI类驱动程序,并且通过IVI配置文件中的配置信息建立映射关系,完成对具体物理仪器的操作。1、各类硬件资源的IVI具体驱动程序封装目前主流厂商提供的硬件资源驱动都是采用C/C++语言进行编写的,该语言具有稳定,灵活,运算速度强,产生的目标代码质量高,稳定性强的优点。但是由于其语法结构相对复杂,不适合作为自动化测试的脚本语言。而Python是一种面向对象的解释型语言,虽然在运行速度和效率不及C/C++,但是其解释型语言的特点非常适合用于开发仿真测试用例的脚本,可以大大提高仿真测试用例的可读性以及开发效率。为了解决两种语言在仿真测试中的功能和性能中的不足,如图2所示,利用Python的第三方模块Ctypes进行两种语言结合起来进行混合编程,这样在拥有了Python语言的简介优美的同时也不会损失太多的性能。目前仿真测试仪器的驱动接口往往是以标准的动态链接库的方式提供,利用Python的Ctypes模块提供四种方式加载动态库,分别是ctypes.CDLL、ctypes.OleDLL、ctypes.WinDLL和ctypes.PyDLL。操作系统平台和被加载动态库中函数的调用约定决定了我们应该使用哪种方式加载动态库。当动态库加载成功后,就可以在Python脚本中调用C/C++的函数了,函数的实参是Python类型的变量,函数的形参则是C/C++类型的变量,显然将Python类型的变量直接赋值给C/C++l类型的变量会有问题,Ctypes作为Pyhon和C/C++联系的桥梁,它定义了专有的数据类型来衔接这两种编程语言,几种典型的数据类本文档来自技高网...

【技术保护点】
1.一种基于远程过程调用协议的分布式驱动中间件,采用客户端和IVI驱动服务器的软件架构,其中IVI驱动服务器运行在具有测试资源的节点计算机上,测试脚本在客户端上通过远程过程调用协议发送给IVI驱动服务器;IVI驱动服务器上的IVI驱动程序根据测试脚本驱动被测产品,并通过远程过程调用协议返回结果给客户端。/n

【技术特征摘要】
1.一种基于远程过程调用协议的分布式驱动中间件,采用客户端和IVI驱动服务器的软件架构,其中IVI驱动服务器运行在具有测试资源的节点计算机上,测试脚本在客户端上通过远程过程调用协议发送给IVI驱动服务器;IVI驱动服务器上的IVI驱动程序根据测试脚本驱动被测产品,并通过远程过程调用协议返回结果给客户端。


2.根据权利要求1所述的一种基于远程过程调用协议的分布式驱动中间件,其特征在于IVI驱动程序包括若干个IVI具体驱动程序、若干个IVI类驱动程序和IVI配置文件;
每个IVI具体驱动程序是利用Python语言封装对厂商提供的板块驱动函数封装成而成;
每个IVI类驱动程序是一类仪器函数和属性的集合,用于控制某一类型的仪器;
IVI引擎用于完成硬件状态缓存、仪器属性跟踪、测...

【专利技术属性】
技术研发人员:许萌成婧阚明生丁东曹阳晨高山张喜彬袁超沈天宇
申请(专利权)人:中国航空无线电电子研究所
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1