发明内容
本发明所要解决的技术问题是针对现有技术的不足,提供一种微波测量仪器开放式软件平台的实现方法。
本发明的技术方案如下:
一种微波测量仪器开放式软件平台的实现方法,其中,包括以下步骤:
步骤1:将微波测量仪器上面板用户操作资源开放;
步骤2:实现微波测量仪器扩展功能与仪器软件的挂接和通讯;
步骤3:向用户开放扩展动态库协议。
所述的实现方法,其中,所述步骤1中的面板用户操作资源包括按键输入和RPG脉冲发生器输入,以及菜单输入事件;并定义启动事件,设置后面无参数,用于直接调用用户菜单功能函数前的准备;定义执行事件,设置后面无参数,用于直接调用执行用户菜单功能函数;定义退出功能,设置后面无参数,用于直接调用用户菜单功能函数完成后有关清理工作;定义更新输入功能:设置参数为按键输入的字符串,对于需要输入数值的函数功能响应该事件;设置RPG脉冲发生器顺时针旋转,参数为整数形式的增加量;设置RPG脉冲发生器逆时针旋转,参数为整数形式的减少量。
所述的实现方法,其中,所述用户菜单功能函数的参数形式为事件和无类型指针两个;所述无类型指针根据事件类型进行类型再造,并挂接到仪器中主软件的功能函数,需要响应按键输入和RPG脉冲发生器输入,以及菜单输入事件,并根据事件类型返回不同形式的执行结果。
所述的实现方法,其中,所述步骤2的具体步骤为:在调用用户DLL文件时,首先通过消息传递把主窗口的句柄传递给动态库作为库内部全局可访问变量,动态库通过消息调用仪器软件中的各项开放程序,并通过窗口句柄操控仪器所有的显示操作,将仪器软件中每个内部功能函数都分配唯一的命令编号,用户功能函数需要调用仪器内部的各项功能时,通过消息功能以命令号作为第一个参数调用,另一个参数作为函数参数。
所述的实现方法,其中,所述步骤3的具体步骤为:动态库内部包括动态库初始化函数及动态库功能调用分支函数;当仪器软件调用动态库的初始化函数时,把仪器软件的主窗口句柄作为参数传入,并且作为动态库中的功能函数与主机发送消息和操控显示的联系通道,同时所述初始化函数内部调用扩展库注册功能函数,扩展库注册功能函数通过消息功能把本动态库所有的菜单级功能函数,以命令号范围区间为参数向仪器主软件完成注册,当仪器主软件判断需要调用用户扩展库功能时,则通过函数调用,传递命令号和面板参数,调用扩展库中的功能函数。
所述的实现方法,其中,所述步骤3中,向用户开放扩展动态库协议还包括用户扩展功能检测,首先在用户设置的特定目录中搜索所有扩展名为DLL的文件,并打开DLL文件,调用DLL中约定初始化函数,向系统软件中安装注册所有用户功能函数。
所述的实现方法,其中,所述步骤3中,所述用户动态扩展库,用于根据仪器实际需要加入版本控制和文件校验程序,以增加仪器软件的稳定性和可靠性。
采用上述方案,应用于微波测量仪器中,用户扩展功能非常方便,整个仪器的软件平台中各项基础测量设置功能都可以被用户通过程序调用,而且是直接调用,软件开销小,执行效率高,可以适用于高速大数据量处理的测量环境中。同时用户开发的各项测试功能直接挂接到仪器中,不需要任何的外控计算机,实现成本低,且比较方便,通过本发明用户可以深入的开发各项灵活复杂测试测量功能。
具体实施方式
以下结合附图和具体实施例,对本发明进行详细说明。
实施例1
本发明是这样实现的:主要包括三部分,
一.仪器前面板用户操作资源的开放;
二.仪器扩展功能与仪器软件的挂接和通讯;
三.用户开发扩展动态库协议;
首先是对于仪器前面板用户操作资源的开放:
仪器的本地输入包括按键输入和RPG脉冲发生器输入,以及菜单输入事件,定义如下事件:
启动事件:START=1,后面无参数,用于直接调用用户菜单功能函数前的准备
执行事件:EXEC=4,后面无参数,用于直接调用执行用户菜单功能函数
退出功能:EXIT=8,后面无参数,用于直接调用用户菜单功能函数完成后有关清理工作
更新输入功能:EXECINPUT=16,参数为按键输入的字符串,对于需要输入数值的函数功能响应该事件
RPG脉冲发生器顺时针旋转:RPGUP=32,参数为整数形式的增加量
RPG脉冲发生器逆时针旋转:RPGDOWN=64,参数为整数形式的减少量
用户功能函数的参数形式为事件和无类型指针两个,针对不同的事件形式,无类型指针根据事件类型进行类型再造。要挂接到仪器主软件的功能函数,需要响应上面几种事件,并根据事件类型返回不同形式的执行结果。
仪器扩展功能与仪器软件的挂接和通讯:
仪器软件启动后在调用用户DLL文件时,首先通过消息传递功能把主窗口的句柄传递给动态库作为库内部全局可访问变量,动态库通过消息功能调用仪器软件中的各项开放功能,并可以通过窗口句柄操控仪器所有的显示操作。仪器软件中每个内部功能函数都分配一个独一无二的命令编号,用户功能函数需要调用仪器内部的各项功能时,通过消息功能以命令号作为第一个参数调用,另一个参数作为函数参数。
这样DLL库中的用户功能对仪器的硬件控制也通过消息功能调用仪器软件的内部功能函数实现,具体实现见图1和图2。
用户扩展动态库流程协议:
用户所有的扩展功能在用户扩展动态库中实现,动态库内部包括两个主要功能函数,动态库初始化函数,动态库功能调用分支函数。当仪器软件调用动态库的初始化函数时,把仪器软件的主窗口句柄作为参数传入,该句柄就成为动态库中的功能函数与主机发送消息和操控显示的联系通道。同时该初始化函数内部调用扩展库注册功能函数,扩展库注册功能函数通过消息功能把本动态库所有的菜单级功能函数,以命令号范围区间为参数向仪器主软件完成注册,当仪器主软件判断需要调用用户扩展库功能时,则通过函数调用,传递命令号和相关面板参数,调用扩展库中的功能函数,实现流程见图3。
仪器软件中用户扩展功能检测模块,首先在用户设置的特定目录中搜索所有扩展名为DLL的文件,并打开DLL文件,调用DLL中约定初始化函数“Initialize“,向系统软件中安装注册所有用户功能函数。
用户动态扩展库,可根据仪器实际需要加入版本控制和文件校验功能,以增加仪器软件的稳定性和可靠性。
上述内容的基础上,具体如在某型号微波频谱分析仪中,增加5项功能,以在频谱分析基础上实现预定频段的电磁兼容预测试,将这5个功能添加到仪器中,以软按键菜单的形式激活调用,为此用户需实现5项菜单功能并整合到仪器中。以其中两项功能为例,功能项1是在整个轨迹中搜索峰值并把峰值对应处的频率点,设置到屏幕中心;功能项2是在执行完用户自己的功能后再把输入的起始频率值设置到频谱分析中去。
首先建立一个动态链接库User.dll文件,把动态链接库放入主机软件设定的扩展目录中,仪器的主机软件会自动载入该动态库扩展文件,并调用库中的约定初始化函数Initialize(Handle hWnd),将仪器软件主窗口的句柄hWnd传给动态库,作为动态库中的全局变量。该函数同时利用句柄hWnd为参数,通过SendMessage(REGISTERFUNC,200,204)向主机软件注册命令号200至204为5个外挂功能项,其中命令号200对应功能项1的功能,定义功能项一对应的功能函数名为UserFun1;201对应功能项为2的功能,定义功能项2对应的功能函数名为UserFun2。
当用户点击功能项一对应的菜单时,主机软件通过调用库中的功能分支函数UserFunCall(命令号,参数1,参数2),命令号参数为200,内部通过命令分支调用UserFun1功能函数,UserFun1主要工作是以句柄hWnd为参数通过系统消息机制SendMessage(…)发送消息1002(假定1002对应仪器软件内部PeakSearch峰值搜索)到主机软件,调用执行主机软件中的”峰值搜索”功能,搜索整个轨迹中最大值,使频标到轨迹最高处。再通过消息机制SendMessage(…)发送消息1004(假定1004对应仪器软件内部MarkerToCenter频标到屏幕中心功能)到主机软件,调用执行主机软件中的”频标到屏幕中心功能”,结果就完成了“峰值搜索”和“频标到屏幕中心”。
如果是用户点击功能项二并通过前面板输入了频率值为50MHz,则主机软件判定该输入对应用户扩展功能项2时,主机软件通过调用库中的功能分支函数UserFunCall(命令号,参数1,参数2),命令号参数为201,事件号EXECINPUT作为参数1和“50MHz”做为参数2,传递到函数UserFun2,UserFun2进行一些自己独特的处理后,需要直接设置仪器则通过SendMessage(…)发送消息1006(假定1006对应仪器软件内部”SetStartFreq”功能)到主机软件,并以频率值50MHz为参数,调用执行软件中的频率设置功能,完成了用户功能和仪器起始频率的设置。
实施例2
在上述实施例的基础上,如图1-图3所示,本发明提供一种微波测量仪器开放式软件平台的实现方法,其中,包括以下步骤:
步骤1:将微波测量仪器上面板用户操作资源开放;
步骤2:实现微波测量仪器扩展功能与仪器软件的挂接和通讯;
步骤3:向用户开放扩展动态库协议。
所述步骤1中的面板用户操作资源包括按键输入和RPG脉冲发生器输入,以及菜单输入事件;并定义启动事件,设置后面无参数,用于直接调用用户菜单功能函数前的准备;定义执行事件,设置后面无参数,用于直接调用执行用户菜单功能函数;定义退出功能,设置后面无参数,用于直接调用用户菜单功能函数完成后有关清理工作;定义更新输入功能:设置参数为按键输入的字符串,对于需要输入数值的函数功能响应该事件;设置RPG脉冲发生器顺时针旋转,参数为整数形式的增加量;设置RPG脉冲发生器逆时针旋转,参数为整数形式的减少量。
所述用户菜单功能函数的参数形式为事件和无类型指针两个;所述无类型指针根据事件类型进行类型再造,并挂接到仪器中主软件的功能函数,需要响应按键输入和RPG脉冲发生器输入,以及菜单输入事件,并根据事件类型返回不同形式的执行结果。
所述步骤2的具体步骤为:在调用用户DLL文件时,首先通过消息传递把主窗口的句柄传递给动态库作为库内部全局可访问变量,动态库通过消息调用仪器软件中的各项开放程序,并通过窗口句柄操控仪器所有的显示操作,将仪器软件中每个内部功能函数都分配唯一的命令编号,用户功能函数需要调用仪器内部的各项功能时,通过消息功能以命令号作为第一个参数调用,另一个参数作为函数参数。
所述步骤3的具体步骤为:动态库内部包括动态库初始化函数及动态库功能调用分支函数;当仪器软件调用动态库的初始化函数时,把仪器软件的主窗口句柄作为参数传入,并且作为动态库中的功能函数与主机发送消息和操控显示的联系通道,同时所述初始化函数内部调用扩展库注册功能函数,扩展库注册功能函数通过消息功能把本动态库所有的菜单级功能函数,以命令号范围区间为参数向仪器主软件完成注册,当仪器主软件判断需要调用用户扩展库功能时,则通过函数调用,传递命令号和面板参数,调用扩展库中的功能函数。
所述步骤3中,向用户开放扩展动态库协议还包括用户扩展功能检测,首先在用户设置的特定目录中搜索所有扩展名为DLL的文件,并打开DLL文件,调用DLL中约定初始化函数,向系统软件中安装注册所有用户功能函数。
所述步骤3中,所述用户动态扩展库,用于根据仪器实际需要加入版本控制和文件校验程序,以增加仪器软件的稳定性和可靠性。
采用上述方案,应用于微波测量仪器中,用户扩展功能非常方便,整个仪器的软件平台中各项基础测量设置功能都可以被用户通过程序调用,而且是直接调用,软件开销小,执行效率高,可以适用于高速大数据量处理的测量环境中。同时用户开发的各项测试功能直接挂接到仪器中,不需要任何的外控计算机,实现成本低,且比较方便,通过本发明用户可以深入的开发各项灵活复杂测试测量功能。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。