CN109359038B - 一种基于Qt和Lua组合实现组态测试系统、实现方法及设备 - Google Patents
一种基于Qt和Lua组合实现组态测试系统、实现方法及设备 Download PDFInfo
- Publication number
- CN109359038B CN109359038B CN201811135338.2A CN201811135338A CN109359038B CN 109359038 B CN109359038 B CN 109359038B CN 201811135338 A CN201811135338 A CN 201811135338A CN 109359038 B CN109359038 B CN 109359038B
- Authority
- CN
- China
- Prior art keywords
- lua
- test
- function
- unit
- module
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明专利公开了一种基于Qt和Lua组合实现组态测试系统实现方法,人机交互模块的实现主体包括跨平台的Qt编译链接生成的可执行文件和类C的若干个Lua脚本文件;功能执行模块采用嵌入式系统编译Lua源码,以库形式链接生成可执行文件,实现主体包括嵌入式环境下可执行文件和Lua脚本文件;本发明采用跨平台技术的Qt,利用Qt的各类控件解决测试界面显示友好问题,同套软件能适用于windows、linux等环境,即同时满足桌面和嵌入式系统的运行需求,具备软件的通用性。
Description
技术领域
本发明属于测试系统软件设计领域,涉及的是一种组态测试的实现方法。
背景技术
测试系统硬件主体架构共有两大类,一类是MCU或者MCU与DSP组成的一体机架构,多用于便于携带、移动使用的现场测试类设备,软件运行环境为WinCE、Linux、Android、Vxworks等嵌入式系统;另一类是桌面与嵌入式组成的上下位机双系统架构,多用于实验室内研究分析类测试设备,软件运行环境既有Windows或Mac桌面系统,又有嵌入式系统。由此可见,测试系统软件运行环境有桌面和嵌入式两种。
测试系统总是为解决某种特定的需求而产生,随着时间的发展,需求、性能指标等会发生变化。在这种情况下,软件必须不断的修改原有的功能、追加新的功能,以保持自己的生命力。为了实现变更,不可避免的要违反最初的设计构架。经过一段时间以后,软件的架构就千疮百孔了。bug越来越多,越来越难维护,新的需求越来越难实现,软件的架构对新的需求渐渐的失去支持能力。
目前测试类软件不论功能还是界面显示出厂前均已固化,用户不能根据自己的需求有针对性的选择,功能不具备开放性。
发明内容
为了解决现有技术问题,本发明提出一种基于Qt和Lua组合实现组态测试系统实现方法,采用跨平台技术的Qt,利用Qt的各类控件解决测试界面显示友好问题,同套软件能适用于windows、linux等环境,即同时满足桌面和嵌入式系统的运行需求,具备软件的通用性。
本发明技术方案如下:
一种基于Qt和Lua组合实现组态测试系统,包括人机交互模块和功能执行模块;人机交互模块与功能执行模块之间通过FTP和TCP/IP协议通信;
人机交互模块包括功能编辑单元、参数配置单元、命令控制单元、创建与浏览报告单元和内外部通信单元;功能编辑单元用于测试功能单元种类的选择和测试功能参数配置;参数配置单元用于独立于测试功能单元之外的参数配置;命令控制单元用于测试指令的识别及生成并发送相应指令通信报文;创建与浏览报告单元用于测试功能执行结果记录,并按照规范要求生成报告,同时在线浏览;内外部通信单元包括第一内部通信单元和外部通信单元,第一内部通信单元用于人机交互模块与功能执行模块之间的数据交互,外部通信单元用于测试系统与外部应用之间的数据交互;
功能执行模块包括第二内部通信单元和测试功能单元;第二内部通信单元用于与人机交互模块之间的数据交互;测试功能单元用于测试功能脚本文件的解释执行,包括测试功能的逻辑运算和输入输出处理。
一种基于Qt和Lua组合实现组态测试系统实现方法,人机交互模块的实现主体包括跨平台的Qt编译链接生成的可执行文件和类C的若干个Lua脚本文件;
功能执行模块采用嵌入式系统编译Lua源码,以库形式链接生成可执行文件,实现主体包括嵌入式环境下可执行文件和Lua脚本文件。
人机交互模块查找指定路径下存放的含有测试功能配置信息的Lua脚本文件TestConfig.lua,如果TestConfig.lua存在,Lua编译器对TestConfig.lua进行词法和语法检查,如果TestConfig.lua存在错误,则打印错误所在行和错误原因;如果没有错误,则Lua解释器开始执行TestConfig.lua文件;如果TestConfig.lua遭破坏或者丢失,则输出告警提示;
Lua解释器首先解析TestConfig.lua,通过关键字获取所有测试功能单元的名称、属性和测试功能单元Lua脚本文件FunConfigX.lua(X表功能序列号)存放路径;FunConfigX.lua文件是测试功能单元对应的脚本文件;
Lua编译器依次对每个FunConfigX.lua文件进行词法和语法检查,如果FunConfigX.lua存在错误,则显示错误所在行和错误原因,中止执行;如果FunConfigX.lua丢失或者遭破坏,输出告警信息,中止执行;Lua编译器执行成功后,Lua解释器解释执行FunConfigX.lua,获取测试参数和执行流程;
每个测试功能单元创建一个QStackedWidget对象(QStackedWidget是Qt通用控件),QStackedWidget对象根据Lua解释器解析获取的测试参数,并根据参数配置单元中显示屏尺寸、键盘鼠标配置显示测试界面,并绑定QToolButton(QToolButton是Qt通用按钮控件)插入到QMap对象(QT常用的容器类,存储键值队,并且可以很快的根据键查找值)中,实现点击按钮跳转到相应功能测试界面。
人机交互模块包括功能编辑单元,功能编辑单元包括添加删除测试功能单元、配置测试流程单元和选择界面显示语言单元,通过导入按钮直接导入TestConfig.Lua脚本文件,完成测试功能单元编辑;
功能编辑单元基于Qt的布局、按钮、间隔器、项目视图、容器和窗口控件,显示测试界面;并预定义各测试功能单元的抽象模型;
添加删除测试功能单元在添加测试功能时,设立一个添加按钮,添加时由用户选择插入位置、测试功能属性及FunConfigX.lua脚本文件存放路径,确认后增加零子项的空模块,在含有测试功能配置信息的Lua脚本文件Testconfig.lua描述测试模块的CaseTable中增加所述功能单元的配置信息,创建新的QStackedWidget对象,显示测试功能单元名称,并根据测试功能单元属性默认布局显示;通过依次添加子项完成测试功能单元的编辑。
功能编辑单元删除测试功能单元时,删除测试功能单元对应的QStackedWidget对象,删除TestConfig.lua文件CaseTable表中与所述测试功能单元的相关配置信息。
配置测试流程单元基于TreeView控件Item的插入、移除实现测试子项的添加与删除;基于CheckBox事件实现创建不同测试项目组合及流程配置;
选择界面显示语言单元基于Qt支持多国语言国际化,动态加载所需的语言库,实现软件不需要重启,界面即时显示目标语言。
较优地,测试功能单元的抽象模型包括模块类型、参数名称及属性、取值范围和交互映射关系。
人机交互模块和功能执行模块的协调与同步包括:
人机交互模块和功能执行模块共处同一处理器时,通过共享数据、槽函数的多任务实现;
人机交互模块和功能执行模块不处同一处理器的情况,通过以下任一种通信方式实现协调和同步:
(1)人机交互模块和功能执行模块之间物理链路采用以太网通信,利用其高速传输特性提高数据交互效率,或者利用面向连接的TCP/IP握手协议建立可靠通信;
(2)人机交互模块和功能执行模块之间采用FTP文件传输协议,保证交互数据的完整性;
(3)人机交互模块和功能执行模块通过编写两者之间通信协议Protocol.lua文件,完成人机交互(MMI)控制命令、手动状态下的测试参数下发和功能执行状态上送;人机交互模块初始化时,首先由Lua编译器检查Protocol.lua文件(Protocol.lua文件为人机交互模块和功能执行模块两者之间数据交互采用的通信协议形成的文件)的词法和语法合法性,如果存在错误,则输出出错行号及错误原因,否则通过FTP文件传输协议将Protocol.lua文件下载到功能执行模块;功能执行模块检查到有新的Protocol.lua存入后,检查原Protocol.lua是否存在,如果不存在,则执行Protocol.lua文件,否则通过校验码算法检查与原有Protocol.lua校验码是否一致,如果不相同,则执行新的Protocol.lua;
(4)人机交互模块和功能执行模块执行同一FunConfigX.lua文件:由人机交互模块运行Lua编译器编译FunConfigX.lua,Lua编译器对FunConfigX.lua文件进行词法和语法检查,如果文件正确,则得到FunConfig.out文件,命名为test.out文件(不同测试功能经编译后得到同一test.out文件),由Lua解释器解析得到测试功能参数并在屏幕显示;当运行test.out文件时,人机交互(MMI)模块通过FTP文件传输协议将Test.out文件下载到功能执行模块,同时,下发带测试起始时刻的测试功能单元开始命令。功能执行模块接收到测试开始的命令后,由Lua解释器解析Test.out文件,获得执行流程及测试参数,根据开始时刻输入输出测试数据,人机交互模块根据功能执行模块上送的状态实时更新测试界面;
(5)人机交互模块和功能执行模块通过IEEE1588 V2.0精确时钟同步协议,实现时钟同频率同相位。报文带有时间标志,保证执行测试功能和界面显示协调一致,并且支持MMI与多台功能执行机构的同步,实现联网测试功能。
系统的功能扩展和升级实现方法,具体包括以下步骤:
每个测试功能单元对应一个抽象模型和Lua脚本文件;功能扩展建立扩展功能的抽象模型,分解抽象模型中数据类型和交互组织形式;人机交互模块根据数据类型和交互组织形式,创建相应的控件,通过界面组态或者Lua文件编辑工具制作FunConfigX.lua脚本文件。因此后续功能扩展及升级实质是模块数目的增加和优化,建立好新功能模块的抽象模型就可以轻松实现。
一种计算设备,包括一个或多个处理器、存储器以及一个或多个程序,其中一个或多个程序存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行一种基于Qt和Lua组合实现组态测试系统实现方法的指令。
一种存储一个或多个程序的计算机可读存储介质,所述一个或多个程序包括指令,所述指令当由计算设备执行时,使得所述计算设备执行一种基于Qt和Lua组合实现组态测试系统实现方法。
本发明有益效果包括:
本发明是针对测试系统软件设计而提出的一种能实现组态测试的方法。所以本发明具有以下技术效果:
本发明公开一种基于Qt和Lua组合实现组态测试系统实现方法,采用跨平台技术的Qt,利用Qt的各类控件解决测试界面显示友好问题,同套软件能适用于windows、linux等环境,即同时满足桌面和嵌入式系统的运行需求,具备软件的通用性;利用类C、具备脚本功能的Lua,不仅能实现针对不同使用对象组态订制不同测试功能和性能指标检测(功能的开放性),而且不会增加执行单元的资源消耗;
软件通用性强:测试系统软件分设人机交互(MMI)和功能执行两部分,人机交互和功能执行部分的数据交互通过FTP和TCP/IP协议通信实现。人机交互部分采用跨平台的Qt设计,实现同套软件适用于桌面和嵌入式不同运行环境。功能执行部分与测试相关的,由Lua脚本文件实现。由于Lua类C,能与各类操作系统兼容。两项技术的使用,保证了软件有很强的通用性;
界面友好:利用Qt提供的布局、间隔器、项目视图、各类窗口控件,设计测试界面。根据运行环境(如显示屏尺寸、鼠标键盘配置)动态调整布局和启用虚拟键盘,使人机交互界面更友好;
功能开放:界面语言、功能模块选择、测试子项、报告内容及执行流程用户均可通过在线编辑配置,或者直接导入Lua脚本文件实现;
易扩展和升级,降低项目的耦合度,使项目更加模块化,利于项目的开发效率和后期的维护。因此后续功能扩展及升级实质是模块数目的增加和优化,建立好新功能模块的抽象模型就可以轻松实现。
附图说明
图1为本发明一种基于Qt和Lua组合实现组态测试系统结构示意图;
图2为一种基于Qt和Lua组合实现组态测试系统实现方法示意图。
具体实施方式
下面结合附图并通过具体实施例对本发明作进一步详述,以下实施例只是描述性的,不是限定性的,不能以此限定本发明的保护范围。
如图1所示,一种基于Qt和Lua组合实现组态测试系统,包括人机交互模块和功能执行模块;人机交互模块与功能执行模块之间通过FTP和TCP/IP协议通信,其中大容量的数据交互(如文件)采用FTP,实时性强、容量小的数据交互(如执行指令下发、测试结果回传)采用TCP/IP协议。
人机交互模块包括功能编辑单元、参数配置单元、命令控制单元、创建与浏览报告单元和内外部通信单元;功能编辑单元用于测试功能单元种类的选择和测试功能参数配置,包括测试项目、执行模式、状态切换触发条件、运行持续时间和执行先后顺序;参数配置单元用于独立于测试功能单元之外的参数配置;命令控制单元用于测试指令的识别及生成并发送相应指令通信报文;创建与浏览报告单元用于测试功能执行结果记录,并按照规范要求生成报告,同时在线浏览;内外部通信单元包括第一内部通信单元和外部通信单元,第一内部通信单元用于人机交互模块与功能执行模块之间的数据交互,外部通信单元用于测试系统与外部应用之间的数据交互,典型应用协议有IEC60870-5-101、IEC60870-5-104、CAN、MODBUS;
功能执行模块包括第二内部通信单元和测试功能单元;第二内部通信单元用于与人机交互模块之间的数据交互,包括执行指令的接收、应答及执行结果的主动上送;测试功能单元用于测试功能脚本文件的解释执行,包括测试功能的逻辑运和输入输出处理。
如图2所示,一种基于Qt和Lua组合实现组态测试系统实现方法,人机交互模块的实现主体包括跨平台的Qt编译链接生成的可执行文件和类C的若干个Lua脚本文件;
功能执行模块采用嵌入式系统编译Lua源码,以库形式链接生成可执行文件,实现主体包括嵌入式环境下可执行文件和Lua脚本文件。
人机交互模块查找指定路径下存放的含有测试功能配置信息的Lua脚本文件TestConfig.lua,如果TestConfig.lua存在,Lua编译器对TestConfig.lua进行词法和语法检查,如果TestConfig.lua存在错误,则打印错误所在行和错误原因;如果没有错误,则Lua解释器开始执行TestConfig.lua文件;如果TestConfig.lua遭破坏或者丢失,则输出告警提示,用缺省功能和添加按钮显示;
Lua解释器首先解析TestConfig.lua,通过关键字(举例如CaseTable)获取所有测试功能单元的名称、属性和测试功能单元Lua脚本文件FunConfigX.lua(X表功能序列号)存放路径;FunConfigX.lua文件是测试功能单元对应的脚本文件,包含测试功能所需的参数和相关功能函数;
Lua编译器依次对每个FunConfigX.lua文件进行词法和语法检查,如果FunConfigX.lua存在错误,则显示错误所在行和错误原因,中止执行;如果FunConfigX.lua丢失或者遭破坏,输出告警信息,提示用户重新指定路径或者检查文件的完整性,中止执行;Lua编译器执行成功后,Lua解释器解释执行FunConfigX.lua,获取测试参数和执行流程,完成设置、中间过程及结论界面显示;
每个测试功能单元创建一个QStackedWidget对象(QStackedWidget是Qt通用控件),QStackedWidget对象根据Lua解释器解析获取的测试参数,并根据参数配置单元中显示屏尺寸、键盘鼠标配置显示测试界面,并绑定QToolButton(QToolButton是Qt通用按钮控件)插入到QMap对象(QT常用的容器类,存储键值队,并且可以很快的根据键查找值)中,实现点击按钮跳转到相应功能测试界面。
人机交互模块包括功能编辑单元,功能编辑单元包括添加删除测试功能单元、配置测试流程单元和选择界面显示语言单元,通过导入按钮直接导入TestConfig.Lua脚本文件,完成测试功能单元编辑;
功能编辑单元基于Qt的布局、按钮、间隔器、项目视图、容器和窗口控件,显示测试界面;并预定义各测试功能单元的抽象模型,测试功能单元的抽象模型包括模块类型、参数名称及属性、取值范围和交互映射关系;
添加删除测试功能单元在添加测试功能时,设立一个添加按钮,添加时由用户选择插入位置、测试功能属性及FunConfigX.lua脚本文件存放路径,确认后增加零子项的空模块,在含有测试功能配置信息的Lua脚本文件Testconfig.lua描述测试模块的CaseTable中增加所述功能单元的配置信息,创建新的QStackedWidget对象,显示测试功能单元名称,并根据测试功能单元属性默认布局显示;通过依次添加子项完成测试功能单元的编辑。如启动测试功能,则软件将根据当前配置,将生成的FunConfigX.lua脚本文件保存到先前配置指定的路径下,或者选择只保存FunConfigX.lua脚本文件而不启动测试功能;
功能编辑单元删除测试功能单元时,删除测试功能单元对应的QStackedWidget对象,删除TestConfig.lua文件CaseTable表中与所述测试功能单元的相关配置信息。
配置测试流程单元基于TreeView控件Item的插入、移除实现测试子项的添加与删除,同时提供复制和粘贴,提高编辑效率;基于CheckBox事件实现创建不同测试项目组合及流程配置;
选择界面显示语言单元基于Qt支持多国语言国际化,通过动态加载所需的语言库,实现软件不需要重启,界面即时显示(中、英等)目标语言。
人机交互模块和功能执行模块的协调与同步包括:
人机交互模块和功能执行模块共处同一处理器时,通过共享数据、槽函数的多任务实现;
人机交互模块和功能执行模块不处同一处理器的情况,通过以下任一种通信方式实现协调和同步:
(1)人机交互模块和功能执行模块之间物理链路采用以太网通信,利用其高速传输特性提高数据交互效率,或者利用其面向连接的TCP/IP握手协议建立可靠通信;
(2)人机交互模块和功能执行模块之间采用FTP文件传输协议,保证交互数据的完整性;
(3)人机交互模块和功能执行模块通过编写两者之间通信协议Protocol.lua文件,完成人机交互(MMI)控制命令、手动状态下的测试参数下发和功能执行状态上送;人机交互模块初始化时,首先由Lua编译器检查Protocol.lua文件(Protocol.lua文件为人机交互模块和功能执行模块两者之间数据交互采用的通信协议形成的文件)的词法和语法合法性,如果存在错误,则输出出错行号及错误原因,否则通过FTP文件传输协议将Protocol.lua文件下载到功能执行模块;功能执行模块检查到有新的Protocol.lua存入后,检查原Protocol.lua是否存在,如果不存在,则执行Protocol.lua文件,否则通过校验码算法检查与原有Protocol.lua校验码是否一致,如果不相同,则执行新的Protocol.lua;
(4)人机交互模块和功能执行模块执行同一FunConfigX.lua文件:由人机交互模块运行Lua编译器编译FunConfigX.lua,Lua编译器对FunConfigX.lua文件进行词法和语法检查,如果文件正确,则得到FunConfig.out文件,命名为test.out文件(不同测试功能经编译后得到同一test.out文件),由Lua解释器解析得到测试功能参数并在屏幕显示;当运行test.out文件时,人机交互(MMI)模块通过FTP文件传输协议将Test.out文件下载到功能执行模块,同时,下发带测试起始时刻的测试功能单元开始命令。功能执行模块接收到测试开始的命令后,由Lua解释器解析Test.out文件,获得执行流程及测试参数,根据开始时刻输入输出测试数据,人机交互模块根据功能执行模块上送的状态实时更新测试界面;
(5)人机交互模块和功能执行模块通过IEEE1588 V2.0精确时钟同步协议,实现时钟同频率同相位;报文带有时间标志,保证执行测试功能和界面显示协调一致,并且支持MMI与多台功能执行机构的同步,实现联网测试功能。
系统的功能扩展和升级实现方法,具体包括以下步骤:
每个测试功能单元对应一个抽象模型和Lua脚本文件;功能扩展建立扩展功能的抽象模型,分解抽象模型中数据类型和交互组织形式;人机交互模块根据数据类型和交互组织形式,创建相应的控件,通过界面组态或者Lua文件编辑工具制作FunConfigX.lua脚本文件。因此后续功能扩展及升级实质是模块数目的增加和优化,建立好新功能模块的抽象模型就可以轻松实现。
一种计算设备,包括一个或多个处理器、存储器以及一个或多个程序,其中一个或多个程序存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行一种基于Qt和Lua组合实现组态测试系统实现方法,的指令。
一种存储一个或多个程序的计算机可读存储介质,所述一个或多个程序包括指令,所述指令当由计算设备执行时,使得所述计算设备执行一种基于Qt和Lua组合实现组态测试系统实现方法。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组间可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组间组合成一个模块或单元或组间,以及此外可以把它们分成多个子模块或子单元或子组间。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如软盘、CD-ROM、硬盘驱动器或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的光伏消纳能力的评价方法。
以示例而非限制的方式,计算机可读介质包括计算机存储介质和通信介质。计算机可读介质包括计算机存储介质和通信介质。计算机存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在计算机可读介质的范围之内。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
本领域内的技术人员可以对本发明进行改动或变型的设计但不脱离本发明的思想和范围。因此,如果本发明的这些修改和变型属于本发明权利要求及其等同的技术范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1.一种基于Qt和Lua组合实现组态测试系统,其特征在于,
包括人机交互模块和功能执行模块;人机交互模块与功能执行模块之间通过FTP和TCP/IP协议通信;
人机交互模块包括功能编辑单元、参数配置单元、命令控制单元、创建与浏览报告单元和内外部通信单元;功能编辑单元用于测试功能单元种类的选择和测试功能参数配置;参数配置单元用于独立于测试功能单元之外的参数配置;命令控制单元用于测试指令的识别及生成并发送相应指令通信报文;创建与浏览报告单元用于测试功能执行结果记录,并按照规范要求生成报告,同时在线浏览;内外部通信单元包括第一内部通信单元和外部通信单元,第一内部通信单元用于人机交互模块与功能执行模块之间的数据交互,外部通信单元用于测试系统与外部应用之间的数据交互;
功能执行模块包括第二内部通信单元和测试功能单元;第二内部通信单元用于与人机交互模块之间的数据交互;测试功能单元用于测试功能脚本文件的解释执行,包括测试功能的逻辑运算和输入输出处理。
2.一种基于Qt和Lua组合实现组态测试系统实现方法,其特征在于,
人机交互模块的实现主体包括跨平台的Qt编译链接生成的可执行文件和类C的若干个Lua脚本文件;
功能执行模块采用嵌入式系统编译Lua源码,以库形式链接生成可执行文件,实现主体包括嵌入式环境下可执行文件和Lua脚本文件;
人机交互模块查找指定路径下存放的含有测试功能配置信息的Lua脚本文件TestConfig.lua,如果TestConfig.lua存在,Lua编译器对TestConfig.lua进行词法和语法检查,如果TestConfig.lua存在错误,则打印错误所在行和错误原因;如果没有错误,则Lua解释器开始执行TestConfig.lua文件;如果TestConfig.lua遭破坏或者丢失,则输出告警提示;
Lua解释器首先解析TestConfig.lua,通过关键字获取所有测试功能单元的名称、属性和测试功能单元Lua脚本文件FunConfigX.lua存放路径;
Lua编译器依次对每个FunConfigX.lua文件进行词法和语法检查,如果FunConfigX.lua存在错误,则显示错误所在行和错误原因,中止执行;如果FunConfigX.lua丢失或者遭破坏,输出告警信息,中止执行;Lua编译器执行成功后,Lua解释器解释执行FunConfigX.lua,获取测试参数和执行流程;
每个测试功能单元创建一个QStackedWidget对象,QStackedWidget对象根据Lua解释器解析获取的测试参数,并根据参数配置单元的参数配置显示测试界面,绑定QToolButton插入到QMap对象中,实现点击按钮跳转到相应功能测试界面。
3.根据权利要求2所述的一种基于Qt和Lua组合实现组态测试系统实现方法,其特征在于,
人机交互模块包括功能编辑单元,功能编辑单元包括添加删除测试功能单元、配置测试流程单元和选择界面显示语言单元,通过导入按钮直接导入TestConfig.Lua脚本文件,完成测试功能单元编辑;
功能编辑单元基于Qt的布局、按钮、间隔器、项目视图、容器和窗口控件,显示测试界面;并预定义各测试功能单元的抽象模型;
添加删除测试功能单元在添加测试功能时,设立一个添加按钮,添加时由用户选择插入位置、测试功能属性及FunConfigX.lua脚本文件存放路径,确认后增加零子项的空模块,在含有测试功能配置信息的Lua脚本文件Testconfig.lua描述测试模块的CaseTable中增加所述测试功能单元的配置信息,创建新的QStackedWidget对象,显示测试功能单元名称,并根据测试功能单元属性默认布局显示;通过依次添加子项完成测试功能单元的编辑;
功能编辑单元删除测试功能单元时,删除测试功能单元对应的QStackedWidget对象,删除TestConfig.lua文件CaseTable表中与所述测试功能单元的相关配置信息;
配置测试流程单元基于TreeView控件Item的插入、移除实现测试子项的添加与删除,基于CheckBox事件实现创建不同测试项目组合及流程配置;
选择界面显示语言单元基于Qt支持多国语言国际化,动态加载所需的语言库。
4.根据权利要求3所述的一种基于Qt和Lua组合实现组态测试系统实现方法,其特征在于,
测试功能单元的抽象模型包括模块类型、参数名称、属性、取值范围和交互映射关系。
5.根据权利要求2所述的一种基于Qt和Lua组合实现组态测试系统实现方法,其特征在于,
人机交互模块和功能执行模块的协调与同步包括:
人机交互模块和功能执行模块共处同一处理器时,通过共享数据、槽函数的多任务实现;
人机交互模块和功能执行模块不处同一处理器的情况,通过以下任一种通信方式实现协调和同步:
(1)人机交互模块和功能执行模块之间物理链路采用以太网通信,利用其高速传输特性提高数据交互效率,或者利用面向连接的TCP/IP握手协议建立可靠通信;
(2)人机交互模块和功能执行模块之间采用FTP文件传输协议,保证交互数据的完整性;
(3)人机交互模块和功能执行模块通过编写两者之间通信协议Protocol.lua文件,完成人机交互控制命令、手动状态下的测试参数下发和功能执行状态上送;人机交互模块初始化时,由Lua编译器检查Protocol.lua文件的词法和语法合法性,如果存在错误,则输出出错行号及错误原因,否则通过FTP文件传输协议将Protocol.lua文件下载到功能执行模块;功能执行模块检查到有新的Protocol.lua存入后,检查原Protocol.lua是否存在,如果不存在,则执行Protocol.lua文件,否则通过校验码算法检查与原有Protocol.lua校验码是否一致,如果不相同,则执行新的Protocol.lua;
(4)人机交互模块和功能执行模块执行同一FunConfigX.lua文件:由人机交互模块运行Lua编译器编译FunConfigX.lua,Lua编译器对FunConfigX.lua文件进行词法和语法检查,如果文件正确,则得到FunConfig.out文件,命名为test.out文件,由Lua解释器解析得到测试功能参数并在屏幕显示;当运行test.out文件时,人机交互模块通过FTP文件传输协议将Test.out文件下载到功能执行模块,同时,下发带测试起始时刻的测试功能单元开始命令;功能执行模块接收到测试开始的命令后,由Lua解释器解析Test.out文件,获得执行流程及测试参数,根据开始时刻输入输出测试数据,人机交互模块根据功能执行模块上送的状态实时更新测试界面;
(5)人机交互模块和功能执行模块通过时钟同步协议,实现时钟同频率同相位。
6.根据权利要求2所述的一种基于Qt和Lua组合实现组态测试系统实现方法,其特征在于,
系统的功能扩展和升级实现方法,具体包括以下步骤:
每个测试功能单元对应一个抽象模型和Lua脚本文件;功能扩展建立扩展功能的抽象模型,分解抽象模型中数据类型和交互组织形式;人机交互模块根据数据类型和交互组织形式,创建相应的控件,通过界面组态或者Lua文件编辑工具制作FunConfigX.lua脚本文件。
7.一种计算设备,其特征在于,包括:
一个或多个处理器、存储器以及一个或多个程序,其中一个或多个程序存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行根据权利要求2至6所述的方法中的任一方法的指令。
8.一种存储一个或多个程序的计算机可读存储介质,其特征在于,所述一个或多个程序包括指令,所述指令当由计算设备执行时,使得所述计算设备执行根据权利要求2至6所述的方法中的任一方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811135338.2A CN109359038B (zh) | 2018-09-28 | 2018-09-28 | 一种基于Qt和Lua组合实现组态测试系统、实现方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811135338.2A CN109359038B (zh) | 2018-09-28 | 2018-09-28 | 一种基于Qt和Lua组合实现组态测试系统、实现方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109359038A CN109359038A (zh) | 2019-02-19 |
CN109359038B true CN109359038B (zh) | 2021-11-05 |
Family
ID=65348030
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811135338.2A Active CN109359038B (zh) | 2018-09-28 | 2018-09-28 | 一种基于Qt和Lua组合实现组态测试系统、实现方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109359038B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110350987A (zh) * | 2019-06-25 | 2019-10-18 | 成都九洲迪飞科技有限责任公司 | 一种基于qt的跨平台射频指标自动化测试系统及测试方法 |
CN111258889A (zh) * | 2020-01-10 | 2020-06-09 | 北京航天测控技术有限公司 | 一种基于Qt的自动化测试测量方法 |
CN111740948B (zh) * | 2020-05-12 | 2023-04-07 | 北京沃东天骏信息技术有限公司 | 数据包发布方法、动态更新方法、装置、设备及介质 |
CN111522330A (zh) * | 2020-05-13 | 2020-08-11 | 航天科工防御技术研究试验中心 | 一种fpga器件测试方法、系统及电子设备 |
CN111897526B (zh) * | 2020-07-16 | 2024-02-13 | 重庆长安汽车股份有限公司 | 一种基于Polyworks的工件特征遥控检测方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012809B (zh) * | 2010-11-10 | 2013-03-13 | 国电南瑞科技股份有限公司 | 一种综合监控联动模块设计和实现方法 |
CN104657139B (zh) * | 2015-02-10 | 2018-08-24 | 上海创景信息科技有限公司 | 用于故障注入的可视化命令流生成系统及方法 |
CN106326101A (zh) * | 2015-07-06 | 2017-01-11 | 北京华大九天软件有限公司 | 一种基于qt的应用程序自动化测试方法 |
CN105843630B (zh) * | 2016-06-08 | 2019-04-19 | 江西洪都航空工业集团有限责任公司 | 一种基于机器人图形化编程开发的方法 |
CN207352604U (zh) * | 2017-10-23 | 2018-05-11 | 南京大全电气研究院有限公司 | 一种基于lua脚本的智能配变终端自动化测试系统 |
-
2018
- 2018-09-28 CN CN201811135338.2A patent/CN109359038B/zh active Active
Non-Patent Citations (1)
Title |
---|
一种非侵入的GUI自动化测试系统设计;吴立金等;《计算机测量与控制》;20171225(第12期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109359038A (zh) | 2019-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109359038B (zh) | 一种基于Qt和Lua组合实现组态测试系统、实现方法及设备 | |
CN108027722B (zh) | 在编译和部署中动态更新应用 | |
US5111413A (en) | Computer-aided engineering | |
US20170193437A1 (en) | Method and apparatus for inventory analysis | |
US8533666B2 (en) | Interactive design environments to visually model, debug and execute resource oriented programs | |
US8935623B1 (en) | Automatic API generation to functional PSoC blocks | |
WO1999004346A1 (en) | Method and apparatus for enforcement of behavior of application processing systems without modifying application processing systems | |
US11611627B2 (en) | Action flow fragment management | |
US8661356B2 (en) | Time application having an intergrated check engine | |
CN108572813A (zh) | 组件式程序开发框架创建应用系统及方法 | |
US11301366B2 (en) | Test automation systems and methods using logical identifiers | |
US8875089B2 (en) | Workspace model for interrelated projects | |
CN114968192A (zh) | 一种项目创建方法、装置、计算机设备及存储介质 | |
de Carvalho Junior et al. | Contextual abstraction in a type system for component-based high performance computing platforms | |
US9405514B1 (en) | Process fragment management | |
Ciliberti | ASP. NET Core Recipes: A Problem-Solution Approach | |
CN109960522B (zh) | 一种软件升级方法及装置 | |
CN112230904A (zh) | 基于接口文档的代码生成方法、装置、存储介质及服务器 | |
Gotti et al. | A Model Driven approach for multi-platform execution of interactive UIS designed with IFML | |
US20230132877A1 (en) | Displaying multiple representations of system management operations in a user interface | |
CN116991355B (zh) | 修改和迭代脚本支持led驱动芯片的方法、系统及装置 | |
Viarheichyk | Embedded Programming with Modern C++ Cookbook: Practical recipes to help you build robust and secure embedded applications on Linux | |
Wang et al. | Synthesizing Device Drivers with Ghost Writer | |
Duldulao et al. | Spring Boot and Angular: Hands-on full stack web development with Java, Spring, and Angular | |
Haugsbakk | Program transformations in magnolia |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |