CN106250116B - 一种软件通用框架代码生成方法及系统 - Google Patents
一种软件通用框架代码生成方法及系统 Download PDFInfo
- Publication number
- CN106250116B CN106250116B CN201610578909.4A CN201610578909A CN106250116B CN 106250116 B CN106250116 B CN 106250116B CN 201610578909 A CN201610578909 A CN 201610578909A CN 106250116 B CN106250116 B CN 106250116B
- Authority
- CN
- China
- Prior art keywords
- gui
- keyboard
- layout
- file
- page
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
Abstract
本发明公开了一种软件通用框架代码生成方法及系统,其中,所述方法包括:生成键盘布局文件以及GUI布局文件,并在GUI布局调试器中导入所述GUI布局文件以及键盘布局文件,建立GUI交互模拟调试环境,方便用户观察布局文件的涉及结果是否符合要求;并按照预定代码生成规则根据所述键盘布局文件与GUI布局文件自动生成通用框架代码。本发明克服了传统嵌入式GUI设计及软件开发效率不高、不易调试等问题,经过实际应用验证,本发明可提高软件开发的自动化和工程化程度,提高了软件代码的可复用性,使GUI布局设计与硬件无关且调试方便。
Description
技术领域
本发明涉及嵌入式技术领域,具体涉及一种软件通用框架代码生成方法及系统。
背景技术
随着嵌入式终端功能的日益强大,用户对终端操作界面的要求也越来越高。目前,出于静电防护要求、防尘等级的考虑,广泛采用的较多的是“键盘+屏幕”的方式;其中,键盘用于用户输入信息,屏幕用于显示用户输入信息及终端信息等,其优点是终端屏幕经久耐用,维护方便。因项目不同,不同的终端则会采用不同的键盘布局,并且屏幕大小及GUI界面布局也不同。针对以上项目的GUI部分设计及软件开发,通常是由软件工程师完成;软件规范性及复用性得不到保证。同时,因嵌入式屏幕通常不提供调试器且未采用“所见即所得”的设计方式,对于终端GUI设计、调试较不方便;即使屏幕厂家提供相关调试器,也各不相同无统一的调试器。因此,传统的嵌入式GUI软件开发模式会造成较多的重复劳动,浪费大量的GUI布局设计及调试时间。
发明内容
本发明所要解决的技术问题是提供一种软件通用框架代码生成方法及系统,能够解决传统嵌入式GUI设计及软件开发效率不高、不易调试等问题,
本发明解决上述技术问题的技术方案如下:
一方面,本发明提供了一种软件通用框架代码生成方法,所述方法包括:
S1、新建或载入键盘布局,生成键盘布局文件并进行保存;
S2、新建或载入GUI布局,并载入所述键盘布局文件,生成GUI布局文件;
S3、在GUI布局调试器中导入所述GUI布局文件,对其进行模拟得到模拟结果,根据所述模拟结果确定是否对所述GUI布局文件进行修改;
S4、若不修改GUI布局文件,则按照预设的代码生成规则根据所述键盘布局文件与GUI布局文件生成通用框架代码;若修改GUI布局文件,则返回步骤S1。
本发明的有益效果:本发明提供的一种软件通用框架代码生成方法,生成键盘布局文件以及GUI布局文件,并在GUI布局调试器中导入所述GUI布局文件以及键盘布局文件,建立GUI交互模拟调试环境,方便用户观察布局文件的涉及结果是否符合要求;并按照预定代码生成规则根据所述键盘布局文件与GUI布局文件自动生成通用框架代码。本发明克服了传统嵌入式GUI设计及软件开发效率不高、不易调试等问题,经过实际应用验证,本发明可提高软件开发的自动化和工程化程度,提高了软件代码的可复用性,使GUI布局设计与硬件无关且调试方便。
进一步的,所述S1具体包括:
S11、新建或载入键盘布局,并设置键盘区域的大小;
S12、在所述键盘区域内选择多个键盘按键对应的多个图形化的键盘按键控件,并调整多个所述键盘按键控件在所述键盘区域内的位置;
S13、对多个所述键盘按键控件分别设置按键属性,所述按键属性包括按键外观属性和键盘按键控件响应的函数原型的属性,完成键盘布局文件的设计并进行保存。
采用上述进一步方案的有益效果:提供一种图形化的键盘布局文件的设计方法,以便后续的GUI布局文件调试模拟时能够实现动态模拟的效果。
进一步的,所述S2具体包括:
S21、新建或载入GUI布局,并设置GUI布局显示区域的大小;
S22、在所述GUI布局中选择所述键盘布局文件,并读入所述键盘布局文件中设置的多个所述键盘按键控件和对应响应的函数原型;
S23、在所述GUI布局中新建一个或多个GUI页面,并分别设置页面名称与页面属性,所述页面属性中至少包括是否响应所述S22中读入的多个所述键盘按键控件的页面按键响应属性;
S24、在每个所述GUI页面中设置多个图形化控件,并调整所述图形化控件在所述GUI页面内的位置;
S25、对每个所述GUI页面中的多个所述图形化控件分别设置属性,具体包括设置外观属性以及设置所述S23中选择的键盘按键控件的响应属性,完成每个GUI页面的设置,完成GUI布局文件的设计并进行保存。
采用上述进一步方案的有益效果:提供一种基于键盘输入的交互友好的GUI布局文件设计方法,方便用户进行GUI布局设计。
进一步的,所述S3具体包括:
S31、在GUI布局调试器中导入所述GUI布局文件,加载其中的键盘布局信息以及GUI布局信息;
S32、在GUI布局调试器中根据键盘布局信息绘制软键盘,并根据GUI布局信息中的多个GUI页面绘制页面;
S33、在监测到鼠标单击软键盘区域的事件发生后,GUI页面出现的响应结果即为GUI布局调试器调试的模拟结果。
采用上述进一步方案的有益效果:采用GUI布局调试器自动对GUI布局文件以及键盘布局文件进行调试,得到模拟结果,以便用户观察盘布局及GUI布局导入嵌入式终端的静态平面效果和动态链接页面效果,如未达到GUI布局设计效果,则对键盘布局文件和GUI布局文件再次进行修改;否则,自动生成GUI布局的软件通用框架代码。
进一步的,所述S4具体包括:
S41、设定编码规范以及代码生成规则;
S42、导入所述键盘布局文件与GUI布局文件,并根据所述编码规范以及代码生成规则,生成通用框架代码;
S43、对所述通用框架代码进行编译,生成编译的中间文件;
S44、判断所述通用框架代码与所述中间文件是否匹配,若匹配则表示通用框架代码生成成功,否则,通用框架代码生成失败。
采用上述进一步方案的有益效果:根据预定的编码规范和代码生成规则自动生成通用框架代码,提高软件开发的自动化和工程化程度、提高了软件代码的可复用性,使GUI布局设计与硬件无关且调试方便。
另一方面,本发明提供了一种软件通用框架代码生成系统,所述系统包括:
键盘布局生成模块,用于新建或载入键盘布局,生成键盘布局文件并进行保存;
GUI布局生成模块,用于新建或载入GUI布局,并载入所述键盘布局文件,生成GUI布局文件;
调试器模拟模块,用于在GUI布局调试器中导入所述GUI布局文件,对其进行模拟得到模拟结果,根据所述模拟结果确定是否对所述GUI布局文件进行修改,若修改,则转至所述键盘布局生成模块,否则,转至框架代码生成模块;
框架代码生成模块,用于若不修改所述GUI布局文件,则按照预设的代码生成规则根据所述键盘布局文件与GUI布局文件生成通用框架代码。
本发明的有益效果;本发明提供的一种软件通用框架代码生成系统,生成键盘布局文件以及GUI布局文件,并在GUI布局调试器中导入所述GUI布局文件以及键盘布局文件,建立GUI交互模拟调试环境,方便用户观察布局文件的涉及结果是否符合要求;并按照预定代码生成规则根据所述键盘布局文件与GUI布局文件自动生成通用框架代码。本发明克服了传统嵌入式GUI设计及软件开发效率不高、不易调试等问题,经过实际应用验证,本发明可提高软件开发的自动化和工程化程度,提高了软件代码的可复用性,使GUI布局设计与硬件无关且调试方便。
进一步的,所述键盘布局生成模块具体包括:
键盘新建单元,用于新建或载入键盘布局,并设置键盘区域的大小;
键盘按键设置单元,用于在所述键盘区域内选择多个键盘按键对应的多个图形化的键盘按键控件,并调整多个所述键盘按键控件在所述键盘区域内的位置;
键盘属性设置单元,用于对多个所述键盘按键控件分别设置按键属性,所述按键属性包括键盘外观属性和键盘按键控件响应的函数原型的属性,完成键盘布局文件的设计并进行保存。
采用上述进一步方案的有益效果:提供一种图形化的键盘布局文件设计方法,以便后续的GUI布局文件调试模拟时能够实现动态模拟的效果。
进一步的,所述GUI布局生成模块具体包括:
GUI新建单元,用于新建或载入GUI布局,并设置GUI布局显示区域的大小;
GUI读入单元,用于在所述GUI布局中选择所述键盘布局文件,并读入所述键盘布局文件中设置的多个所述键盘按键控件和对应响应的函数原型;
GUI页面设置单元,用于在所述GUI布局中新建一个或多个GUI页面,并分别设置页面名称与页面属性,所述页面属性中至少包括是否响应所述GUI读入单元中读入的多个所述键盘按键控件的页面按键响应属性;
图形控件设置单元,用于在每个所述GUI页面中设置多个图形化控件,并调整所述图形化控件在所述GUI页面内的位置;
属性设置单元,用于对每个所述GUI页面中的多个所述图形化控件分别设置属性,具体包括设置外观属性以及设置所述GUI页面设置单元中选择的键盘按键控件的响应属性,完成每个GUI页面的设置,完成GUI布局文件的设计并进行保存。
采用上述进一步方案的有益效果:提供一种基于键盘输入的交互友好的GUI布局文件设计方法,方便用户进行GUI布局设计。
进一步的,所述调试器模拟模块具体包括:
导入加载单元,用于在GUI布局调试器中导入所述GUI布局文件,加载其中的键盘布局信息以及GUI布局信息;
绘制单元,用于在GUI布局调试器中根据键盘布局信息绘制软键盘,并根据GUI布局信息中的一个或者多个GUI页面绘制页面;
调试模拟单元,用于在监测到鼠标单击软键盘区域的事件发生后,GUI页面出现的响应结果即为GUI布局调试器调试的模拟结果。
采用上述进一步方案的有益效果:采用GUI布局调试器自动对GUI布局文件以及键盘布局文件进行调试,得到模拟结果,以便用户观察盘布局及GUI布局导入嵌入式终端的静态平面效果和动态链接页面效果,如未达到GUI布局设计效果,则对键盘布局文件和GUI布局文件再次进行修改;否则,自动生成GUI布局的软件通用框架代码。
进一步的,所述框架代码生成模块具体包括:
设定单元,用于设定编码规范以及代码生成规则;
创建单元,用于导入所述键盘布局文件与GUI布局文件,并根据所述编码规范以及代码生成规则,生成通用框架代码;
编译单元,用于对所述通用框架代码进行编译,生成编译的中间文件;
判断显示单元,判断所述通用框架代码与所述中间文件是否匹配,若匹配则表示通用框架代码生成成功,否则,通用框架代码生成失败。
采用上述进一步方案的有益效果:根据预定的编码规范和代码生成规则自动生成通用框架代码,提高软件开发的自动化和工程化程度、提高了软件代码的可复用性,使GUI布局设计与硬件无关且调试方便。
附图说明
图1为本发明实施例1的一种软件通用框架代码生成方法流程图;
图2为本发明实施例1的一种软件通用框架代码生成方法总体流程图;
图3为本发明实施例1的一种软件通用框架代码生成方法中键盘布局文件设计流程图;
图4为本发明实施例1的一种软件通用框架代码生成方法中GUI布局文件设计流程图;
图5为本发明实施例1的一种软件通用框架代码生成方法中GUI布局模拟调试流程图;
图6为本发明实施例2的一种软件通用框架代码生成系统示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
实施例1、一种软件通用框架代码生成方法。下面结合图1至图5对本实施例提供的方法进行详细说明。
参见图1至图5,S1、新建或载入键盘布局,生成键盘布局文件并进行保存。
具体的,所述步骤S1具体包括以下步骤:
S11、新建或载入键盘布局,并设置键盘区域的大小。
具体的,新建或载入键盘布局,并输入或选择键盘布局保存的目标文件名,并设置键盘区域的大小,即键盘尺寸。
S12、在所述键盘区域内选择多个键盘按键对应的多个图形化的键盘按键控件,并调整多个所述键盘按键控件在所述键盘区域内的位置。
具体的,设计人员根据自己设计的需求在键盘区域内选择多个键盘按键对应的多个图形化的键盘按键控件,并采用拖拽的方式调整多个图形化的键盘按键控件在所述键盘区域内的位置,并且系统会自动生成每个所述键盘按键控件唯一的ID,用来标识各个键盘按键控件。
S13、对多个所述键盘按键控件分别设置按键属性,所述按键属性包括按键外观属性和键盘按键控件响应的函数原型的属性,完成键盘布局文件的设计并进行保存。
具体的,选择每个键盘按键对应的键盘按键控件并分别设置按键属性,所述按键属性包括外观属性和键盘按键控件响应的函数原型的属性,所述外观属性包括键盘按键控件的大小以及颜色等;所述键盘按键控件响应的函数原型的属性具体是指每个键盘按键控件都对应响应一个函数原型,即函数名,函数返回值,参数个数/类型等。在完成对所有键盘按键控件的属性设置后,保存完成的键盘布局文件。
另外,也可以在键盘区域内选择一个键盘按键对应的多个图形化的键盘按键控件,设置其属性后,再继续添加下一个键盘按键控件然后设置其属性,以此类推,完成盘布局文件的设计。
S2、新建或载入GUI布局,并载入所述键盘布局文件,生成GUI布局文件。
具体的,所述步骤S2具体包括以下步骤:
S21、新建或载入GUI布局,并设置GUI布局显示区域的大小。
具体的,新建或载入GUI布局,输入或选择GUI布局目标文件名,并设置目标屏幕区域的大小,即GUI显示尺寸。
S22、在所述GUI布局中选择所述键盘布局文件,并读入所述键盘布局中设置的多个所述键盘按键控件和对应响应的函数原型。
具体的,在所述GUI布局中选择“键盘布局设置工具”生成的应用键盘布局文件,即上述步骤1中生成的所述键盘布局文件,并读入所述GUI布局中设置的多个所述键盘按键控件以及每个所述键盘按键控件分别对应响应的函数原型。
S23、在所述GUI布局中新建一个或多个GUI页面,并分别设置页面名称与页面属性,所述页面属性中至少包括是否响应所述S22中读入的多个所述键盘按键控件的页面按键响应属性。
具体的,在所述GUI布局中新建一个或多个GUI页面,并分别输入页面名称及简称并设置页面属性。所述页面属性中主要包括以下属性:
(1)页面简称,系统自动生成页面ID,并且必须为英文。
(2)当前页面是否为首页,默认第一个创建的页面为首页,GUI布局中有且仅有一个为首页。
(3)页面的位置、大小,默认页面位置为(0,0)即屏幕左上角;默认区域大小为屏幕大小,用户也可自行修改页面坐标以及页面大小等属性。
(4)页面按键响应属性,即是否响应所述S22中读入的多个所述键盘按键控件,每个页面按键响应属性设置包含以下内容:A、是否响应多个所述键盘按键控件;B、响应多个所述键盘按键控件分别对应的函数名称,所述函数名称在上述步骤S1中的步骤S13中已经指定。
S24、在每个所述GUI页面中设置多个图形化控件,并调整所述图形化控件在所述GUI页面内的位置。
具体的,设计人员根据自己的需要,在每个所述GUI页面内分别选择需要的图形化控件,采用拖拽的方式在所述GUI页面内调整图形化控件的位置,系统会自动生成每个图形化控件对应的唯一的ID,用于标识每个图形化控件。
S25、对每个所述GUI页面中的多个所述图形化控件分别设置属性,具体包括设置外观属性以及设置所述S23中选择的键盘按键控件的响应属性,完成每个GUI页面的设置,完成GUI布局文件的设计并进行保存。
具体的,对每个所述GUI页面中的多个所述图形化控件分别设置属性,具体包括设置外观属性以及设置所述S23中选择的键盘按键控件的响应属性,所述外观属性包括图形化控件的大小以及颜色等,其中,图形化控件的大小决定了该控件的响应区域;所述响应属性主要包括以下内容:(1)无响应;(2)跳转至页面,即用户选择“跳转至页面”选项,并选择待中转页面名称,生成该项后,生成“SwithToPageID”代码,其中,“ID”为目标跳转页面ID;(3)用户自定义,选择该项后,生成“TODO”注释。分别依次完成多个GUI页面的设置,完成GUI布局文件的设计并进行保存。
具体的,综上所述,在GUI布局中依次新建GUI页面,通常将第一个GUI页面设为首页,对每个GUI页面分别设置页面属性,并在每个GUI页面上设置多个图形化控件,并对每个GUI页面上的各个图形化控件分别设置属性,依次完成每个GUI页面的设置,完成GUI布局文件的设计。
S3、在GUI布局调试器中导入所述GUI布局文件,对其进行模拟得到模拟结果,根据所述模拟结果确定是否对所述GUI布局文件进行修改。
具体的,所述步骤S3具体包括以下步骤:
S31、在GUI布局调试器中导入所述GUI布局文件,加载其中的键盘布局信息以及GUI布局信息。
具体的,在GUI布局调试器中导入选择的所述GUI布局文件,所述键盘布局文件在所述GUI布局文件中已记录,加载其中的键盘布局信息以及GUI布局信息。
S32、在GUI布局调试器中根据键盘布局信息绘制软键盘,并根据GUI布局信息中的一个或者多个GUI页面绘制页面。
具体的,在GUI布局调试器中根据键盘布局信息,绘制软键盘,即依次读取键盘布局中键盘按键控件信息,根据坐标及大小绘制各按键。
根据GUI布局信息,设置当前页面为“首页”(仅有一个首页),即当前页面的pageid为MAIN_PAGE_ID,读取当前页面ID对应的GUI布局中的GUI页面信息,并根据所述GUI页面信息在当前页面上进行绘制,即根据页面的ID在GUI布局调试器中将所述GUI布局中的多个GUI页面依次绘制出来,若所述GUI布局中只有一个GUI页面,则仅绘制当前页面。
S33、在监测到鼠标单击软键盘区域的事件发生后,GUI页面出现的响应结果即为GUI布局调试器调试的模拟结果。
具体的,所述GUI布局调试器等待用户在软键盘区域鼠标左键单击事件,若鼠标左键单击事件发生,根据点击坐标判断软键盘中哪个按键被按下(假设按键ID为PRESS_KEY_ID),即获取当前坐标信息并转换为键盘布局文件中对应的位置,判断是否落在键盘布局文件中对应的键盘区域中的键盘按键控件区域,若落入所述键盘布局文件中的键盘按键控件区域,则根据键盘按键控件ID,读取当前GUI页面布局信息中对应的键盘按键控件ID是否响应,具体根据预先设置的用户配置进行如下判断:(1)如果当前GUI页面对于该键盘按键控件配置为无响应,则继续等待下一次鼠标左键点击事件的发生。(2)如果当前GUI页面对于该键盘按键控件配置为跳转至新页面,则更新当前页面的ID为新页面的ID。(3)如果当前GUI界面对于该键盘按键控件配置为无响应,则打印提示信息,并继续等待下一次鼠标左键点击事件的发生。
以上在点击鼠标左键之后,出现的响应结果即为GUI布局调试器调试的模拟结果。用户根据GUI布局调试器自动调试得到的模拟结果,得到键盘布局文件及GUI布局文件导入嵌入式终端的静态平面效果和动态链接页面效果,根据上述模拟结果确定是否对所述GUI布局文件进行修改,若调试得到的模拟结果与用户预期的相同,则不需要进行修改,若调试得到的模拟结果与用户预期的不同,则返回步骤S1进行修改,重新完成对键盘布局文件以及GUI布局文件的设计,并再次导入至所述GUI布局调试器中重新进行调试,观察得到的调试模拟结果,重复上述过程直到用户决定不修改GUI布局文件,然后转至步骤S4。
具体的,在对所述GUI布局文件进行调试的时候,只要导入所述GUI布局文件,然后会自动绘制软键盘和页面,用户只需鼠标左键点击观察模拟效果即可。
S4、若不修改GUI布局文件,则按照预设的代码生成规则根据所述键盘布局文件与GUI布局文件生成通用框架代码;若修改GUI布局文件,则返回步骤S1。
具体的,若修改GUI布局文件,则跳转至步骤S1重新新建或载入键盘布局文件和GUI布局文件;若不修改GUI布局文件,则所述步骤S4具体包括以下步骤:
S41、设定编码规范以及代码生成规则。
具体的,设定编码规范,具体可对函数以及注释等样式进行设定,后续生成的文件内容按照用户设定的编码规范进行。
在导入所述GUI布局文件后,代码生成规则如下:
(1)创建GuiCtrl模块对应文件“guictrl.c/guictrl.h”。每个GUI布局文件有且仅一个GuiCtrl模块,对应“guictrl.c/guictrl.h”,其中,该模块应引用所述GUI布局文件中所有的GUI页面模块文件的头文件;并调用所述GUI布局文件中首页面的显示方法(对应的显示函数原型),主要包括通用或可复用的GUI管理方法,具体如下:
A、设置当前页面属性方法,即GuiSetCurrentPageOption方法。
B、注册显示界面方法,即GuiEnrollShowCurrentPage方法。每个GUI页面均注册GUI页面对应的模块显示方法,即记录对应的模块显示函数指针至显示方法数组(定义为g_pCallFuncGuiShow,具体参照全局变量的定义说明)中。
C、显示当前界面方法,即GuiShowCurrentPage方法。以当前页面ID为下标直接访问g_pCallFuncGuiShow,取出显示界面方法指针并调用即可。
D、界面启动方法,即GuiStart方法。此方法为整个GUI界面的入口方法,主要实现以下功能:a、依次注册各个页面的显示界面方法。以首页为例,注册过程即为以首页面ID、按键响应函数指针为参数,调用GuiEnrollShowCurrentPage。同理,对于其他界面注册的过程类似。b、设置当前页面为首界面,即以首页面ID、按键响应函数指针为参数,调用GuiSetCurrentPageOption方法。c、显示当前界面,即调用GuiShowCurrentPage方法。d、阻塞方法,防止GUI运行任务退出;生成while语句。
(2)生成全局相关枚举或变量的定义和声明的GuiCommonDefine,对应guicommondefine.c/guicommondefine.h文件,所述文件为全局文件,用以下内容进行定义。
A、页面ID的枚举。枚举常量命名规则为“E_PAGE_ID_”+页面简称。如首页面简称为MAINPAGE,则对应页面ID的枚举为“E_PAGE_ID_MAINPAGE”;同时,页面数量对应枚举常量“E_PAGE_ID_NUM”。
B、全局变量的声明和定义,主要有以下变量:a、当前页面ID,初始为首界面ID即“E_PAGE_ID_MAINPAGE”。b、当前按键响应函数指针声明和定义。根据按键响应函数原型设置,生成函数声明和定义。按键响应函数指针类型声明规则为“typedef”+返回值类型+“(*”+函数名+“)(”+参数列表+“);”,其中返回值类型,函数名,参数列表均可从键盘布局文件中的用户设置中读出。按键响应函数指针变量定义规则为函数指针类型+“g_pCallbackFunc”+函数名。c、当前页面显示函数指针声明和数组定义。页面响应函数指针类型及变量声明:typedef void(*PFUNCGUISHOW)();extern PFUNCGUISHOW g_pCallFuncGuiShow[E_PAGE_ID_NUM];页面响应函数指针数组定义为:PFUNCGUISHOW g_pCallFuncGuiShow[E_PAGE_ID_NUM]={0}。
(3)GUI页面对应模块文件。每个GUI页面对应一个模块,分别需要按以下规则生成对应文件,即模块文件名称,其文件名称=“gui”+页面简称。以GUI首页面为例,根据以上规则该模块对应源代码文件为“guimainpage.c”、“guimainpage.h”。该模块主要完成以下功能:
A、显示界面方法,函数名称命名规则为“void GuiShowPage”+页面简称+“()”。其中,页面简称从导入的GUI布局文件中读取。函数体中,增加“TODO”注释(因为由于屏幕点线面绘制的涉及业务,不在通用框架代码中;具体的业务代码由软件开发人员后续在TODO处进行补充)。
B、页面按键响应方法,函数名称命名规则为“void GuiKey”+按键简称+“Callback(”+参数列表+“)”。其中按键简称、按键参数列表从导入的按键布局文件中读取。方法体中实现代码,根据按键响应行为按如下规则编写:a、无响应,则不添加代码。b、转至页面。首先,从导入的GUI布局文件中读取待跳转页面ID,简称,各按键是否响应等属性,以其为参数调用GuiSetCurrentPageOption(位于GuiCtrl模块中)。然后,调用GuiEnrollShowCurrentPage(位于GuiCtrl模块中)。c、用户自定义。生成“TODO”注释。
S42、导入所述键盘布局文件与GUI布局文件,并根据所述编码规范以及代码生成规则,生成通用框架代码。
具体的,按照上述规则首先根据GUI布局文件中所有GUI页面的头文件创建一个源文件;然后根据生成全局相关枚举或变量的定义和声明的GuiCommonDefine对应的guicommondefine.c/guicommondefine.h文件,即全局文件;最后根据GUI布局文件中多个GUI页面对应创建多个源文件;得到的这些文件即为自动生成的通用框架代码。
S43、对所述通用框架代码进行编译,生成编译的中间文件。
具体的,对所述源文件即通用框架代码进行编译,调用make编译生成的所有源文件,得到MakeFile文件,检查生成的文件语法是否正确,并不用于生成最终的可运行文件。
S44、判断所述通用框架代码与所述中间文件是否匹配,若匹配则表示通用框架代码生成成功,否则,通用框架代码生成失败。
具体的,判断所述通用框架代码与所述中间文件是否匹配,若匹配则表示通用框架代码生成成功,如果不匹配,则说明通用框架代码生成异常;并将匹配结果以对话框形式呈现。
实施例2、一种软件通用框架代码生成系统。下面结合图6对本实施例提供的方法进行详细说明。
参见图6,本实施例提供的一种基于特征选择的多示例多标签学习系统包括键盘布局生成模块、GUI布局生成模块、调试器模拟模块以及框架代码生成模块。
键盘布局生成模块,用于新建或载入键盘布局,生成键盘布局文件并进行保存。
具体的,所述键盘布局生成模块具体包括键盘新建单元、键盘新建单元以及键盘属性设置单元。
键盘新建单元,用于新建或载入键盘布局,并设置键盘区域的大小。
键盘按键设置单元,用于在所述键盘区域内选择多个键盘按键对应的多个图形化的键盘按键控件,并调整多个所述键盘按键控件在所述键盘区域内的位置。
键盘属性设置单元,用于对多个所述键盘按键控件分别设置按键属性,所述按键属性包括键盘外观属性和键盘按键控件响应的函数原型的属性,完成键盘布局文件的设计并进行保存。
GUI布局生成模块,用于新建或载入GUI布局,并载入所述键盘布局文件,生成GUI布局文件。
具体的,所述GUI布局生成模块具体包括GUI新建单元、GUI读入单元、GUI页面设置单元、图形控件设置单元以及属性设置单元。
GUI新建单元,用于新建或载入GUI布局,并设置GUI布局显示区域的大小。
GUI读入单元,用于在所述GUI布局中选择所述键盘布局文件,并读入所述键盘布局文件中设置的多个所述键盘按键控件和对应响应的函数原型。
GUI页面设置单元,用于在所述GUI布局中新建一个或多个GUI页面,并分别设置页面名称与页面属性,所述页面属性中至少包括是否响应所述GUI读入单元中读入的多个所述键盘按键控件的页面按键响应属性。
图形控件设置单元,用于在每个所述GUI页面中设置多个图形化控件,并调整所述图形化控件在所述GUI页面内的位置。
属性设置单元,用于对每个所述GUI页面中的多个所述图形化控件分别设置属性,具体包括设置外观属性以及设置所述GUI页面设置单元中选择的键盘按键控件的响应属性,完成每个GUI页面的设置,完成GUI布局文件的设计并进行保存。
调试器模拟模块,用于在GUI布局调试器中导入所述GUI布局文件,对其进行模拟得到模拟结果,根据所述模拟结果确定是否对所述GUI布局文件进行修改,若修改,则跳转至所述键盘布局生成模块,否则,转至框架代码生成模块。
具体的,所述调试器模拟模块具体包括导入加载单元、绘制单元以及调试模拟单元。
导入加载单元,用于在GUI布局调试器中导入所述GUI布局文件,加载其中的键盘布局信息以及GUI布局信息。
绘制单元,用于在GUI布局调试器中根据键盘布局信息绘制软键盘,并根据GUI布局信息中的一个或者多个GUI页面绘制页面。
调试模拟单元,用于在监测到鼠标单击软键盘区域的事件发生后,GUI页面出现的响应结果即为GUI布局调试器调试的模拟结果。
框架代码生成模块,用于若不修改所述GUI布局文件,则按照预设的代码生成规则根据所述键盘布局文件与GUI布局文件生成通用框架代码。
具体的,所述框架代码生成模块具体包括设定单元、创建单元、编译单元以及判断显示单元。
设定单元,用于设定编码规范以及代码生成规则。
创建单元,用于导入所述键盘布局文件与GUI布局文件,并根据所述编码规范以及代码生成规则,生成通用框架代码。
编译单元,用于对所述通用框架代码进行编译,生成编译的中间文件。
判断显示单元,判断所述通用框架代码与所述中间文件是否匹配,若匹配则表示通用框架代码生成成功,否则,通用框架代码生成失败。
本发明提供的一种软件通用框架代码生成方法及系统,生成键盘布局文件以及GUI布局文件,并在GUI布局调试器中导入所述GUI布局文件以及键盘布局文件,建立GUI交互模拟调试环境方便用户观察布局文件的涉及结果是否符合要求;并按照预定代码生成规则根据所述键盘布局文件与GUI布局文件自动生成通用框架代码。本发明克服了传统嵌入式GUI设计及软件开发效率不高、不易调试等问题,提供了交互友好的界面设计方法,根据设计及代码样式自动生成代码,提高软件编程效率及规范化程度,为基于"键盘+屏幕"嵌入式软件设计,提供高效,规范化的解决方案,经过实际应用验证,本发明可提高软件开发的自动化和工程化程度,提高了软件代码的可复用性,使GUI布局设计与硬件无关且调试方便。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种软件通用框架代码生成方法,其特征在于,所述方法包括:
S1、新建或载入键盘布局,生成键盘布局文件并进行保存;
S2、新建或载入GUI布局,并载入所述键盘布局文件,生成GUI布局文件;
S3、在GUI布局调试器中导入所述GUI布局文件,对其进行模拟得到模拟结果,根据所述模拟结果确定是否对所述GUI布局文件进行修改;
S4、若不修改GUI布局文件,则按照预设的代码生成规则根据所述键盘布局文件与GUI布局文件生成通用框架代码;若修改GUI布局文件,则返回步骤S1;
其中,在所述S4中,若不修改GUI布局文件,则生成通用框架代码的步骤具体包括:
S41、设定编码规范以及代码生成规则;
S42、导入所述键盘布局文件与GUI布局文件,并根据所述编码规范以及代码生成规则,生成通用框架代码;
S43、对所述通用框架代码进行编译,生成编译的中间文件;
S44、判断所述通用框架代码与所述中间文件是否匹配,若匹配则表示通用框架代码生成成功,否则,通用框架代码生成失败。
2.如权利要求1所述的一种软件通用框架代码生成方法,其特征在于,所述S1具体包括:
S11、新建或载入键盘布局,并设置键盘区域的大小;
S12、在所述键盘区域内选择多个键盘按键对应的多个图形化的键盘按键控件,并调整多个所述键盘按键控件在所述键盘区域内的位置;
S13、对多个所述键盘按键控件分别设置按键属性,所述按键属性包括按键外观属性和键盘按键控件响应的函数原型的属性,完成键盘布局文件的设计并进行保存。
3.如权利要求2所述的一种软件通用框架代码生成方法,其特征在于,所述S2具体包括:
S21、新建或载入GUI布局,并设置GUI布局显示区域的大小;
S22、在所述GUI布局中选择所述键盘布局文件,并读入所述键盘布局文件中设置的多个所述键盘按键控件和对应响应的函数原型;
S23、在所述GUI布局中新建一个或多个GUI页面,并分别设置页面名称与页面属性,所述页面属性中至少包括是否响应所述S22中读入的多个所述键盘按键控件的页面按键响应属性;
S24、在每个所述GUI页面中设置多个图形化控件,并调整所述图形化控件在所述GUI页面内的位置;
S25、对每个所述GUI页面中的多个所述图形化控件分别设置属性,具体包括设置外观属性以及设置所述S23中选择的键盘按键控件的响应属性,完成每个GUI页面的设置,完成GUI布局文件的设计并进行保存。
4.如权利要求3所述的一种软件通用框架代码生成方法,其特征在于,所述S3具体包括:
S31、在GUI布局调试器中导入所述GUI布局文件,加载其中的键盘布局信息以及GUI布局信息;
S32、在GUI布局调试器中根据键盘布局信息绘制软键盘,并根据GUI布局信息中的多个GUI页面绘制页面;
S33、在监测到鼠标单击软键盘区域的事件发生后,GUI页面出现的响应结果即为GUI布局调试器调试的模拟结果。
5.一种软件通用框架代码生成系统,其特征在于,所述系统包括:
键盘布局生成模块,用于新建或载入键盘布局,生成键盘布局文件并进行保存;
GUI布局生成模块,用于新建或载入GUI布局,并载入所述键盘布局文件,生成GUI布局文件;
调试器模拟模块,用于在GUI布局调试器中导入所述GUI布局文件,对其进行模拟得到模拟结果,根据所述模拟结果确定是否对所述GUI布局文件进行修改,若修改,则转至所述键盘布局生成模块,否则,转至框架代码生成模块;
框架代码生成模块,用于若不修改所述GUI布局文件,则按照预设的代码生成规则根据所述键盘布局文件与GUI布局文件生成通用框架代码;
所述框架代码生成模块具体包括:
设定单元,用于设定编码规范以及代码生成规则;
创建单元,用于导入所述键盘布局文件与GUI布局文件,并根据所述编码规范以及代码生成规则,生成通用框架代码;
编译单元,用于对所述通用框架代码进行编译,生成编译的中间文件;判断显示单元,判断所述通用框架代码与所述中间文件是否匹配,若匹配则表示通用框架代码生成成功,否则,通用框架代码生成失败。
6.如权利要求5所述的一种软件通用框架代码生成系统,其特征在于,所述键盘布局生成模块具体包括:
键盘新建单元,用于新建或载入键盘布局,并设置键盘区域的大小;
键盘按键设置单元,用于在所述键盘区域内选择多个键盘按键对应的多个图形化的键盘按键控件,并调整多个所述键盘按键控件在所述键盘区域内的位置;
键盘属性设置单元,用于对多个所述键盘按键控件分别设置按键属性,所述按键属性包括键盘外观属性和键盘按键控件响应的函数原型的属性,完成键盘布局文件的设计并进行保存。
7.如权利要求6所述的一种软件通用框架代码生成系统,其特征在于,所述GUI布局生成模块具体包括:
GUI新建单元,用于新建或载入GUI布局,并设置GUI布局显示区域的大小;
GUI读入单元,用于在所述GUI布局中选择所述键盘布局文件,并读入所述键盘布局文件中设置的多个所述键盘按键控件和对应响应的函数原型;
GUI页面设置单元,用于在所述GUI布局中新建一个或多个GUI页面,并分别设置页面名称与页面属性,所述页面属性中至少包括是否响应所述GUI读入单元中读入的多个所述键盘按键控件的页面按键响应属性;
图形控件设置单元,用于在每个所述GUI页面中设置多个图形化控件,并调整所述图形化控件在所述GUI页面内的位置;
属性设置单元,用于对每个所述GUI页面中的多个所述图形化控件分别设置属性,具体包括设置外观属性以及设置所述GUI页面设置单元中选择的键盘按键控件的响应属性,完成每个GUI页面的设置,完成GUI布局文件的设计并进行保存。
8.如权利要求7所述的一种软件通用框架代码生成系统,其特征在于,所述调试器模拟模块具体包括:
导入加载单元,用于在GUI布局调试器中导入所述GUI布局文件,加载其中的键盘布局信息以及GUI布局信息;
绘制单元,用于在GUI布局调试器中根据键盘布局信息绘制软键盘,并根据GUI布局信息中的一个或者多个GUI页面绘制页面;
调试模拟单元,用于在监测到鼠标单击软键盘区域的事件发生后,GUI页面出现的响应结果即为GUI布局调试器调试的模拟结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610578909.4A CN106250116B (zh) | 2016-07-21 | 2016-07-21 | 一种软件通用框架代码生成方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610578909.4A CN106250116B (zh) | 2016-07-21 | 2016-07-21 | 一种软件通用框架代码生成方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106250116A CN106250116A (zh) | 2016-12-21 |
CN106250116B true CN106250116B (zh) | 2019-08-23 |
Family
ID=57603209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610578909.4A Active CN106250116B (zh) | 2016-07-21 | 2016-07-21 | 一种软件通用框架代码生成方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106250116B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109582304A (zh) * | 2017-09-28 | 2019-04-05 | 北京迪文科技有限公司 | 一种基于人机交互系统的ui控件生成方法及装置 |
CN108427590B (zh) * | 2018-02-09 | 2021-02-05 | 福建星网锐捷通讯股份有限公司 | 一种ui动态布局的实现方法 |
CN109710253A (zh) * | 2018-12-19 | 2019-05-03 | 国云科技股份有限公司 | 一种配置数据源的web页面单选按钮实现方法 |
CN111367597A (zh) * | 2018-12-26 | 2020-07-03 | 杭州海康威视系统技术有限公司 | 一种颜色切换方法、装置及电子设备 |
CN111124385B (zh) * | 2019-12-02 | 2022-05-20 | 深圳航天科技创新研究院 | 一种基于数据库的电源设计软件的自动生成方法及系统 |
CN112861060A (zh) * | 2021-03-23 | 2021-05-28 | 金岭教育科技(北京)有限公司 | 页面创建方法、装置、计算机设备和存储介质 |
CN113641389B (zh) * | 2021-08-31 | 2024-02-09 | 广东九联科技股份有限公司 | 基于OpenCPU的软件升级方法、装置及设备 |
CN114675905B (zh) * | 2022-04-07 | 2024-03-08 | 亿咖通(湖北)技术有限公司 | 一种信息显示方法、车机系统和可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101334728A (zh) * | 2008-07-28 | 2008-12-31 | 北京航空航天大学 | 一种基于xml文档描述的界面生成方法和平台 |
CN102081520A (zh) * | 2011-01-14 | 2011-06-01 | 杭州海康威视数字技术股份有限公司 | 嵌入式硬盘录像机的图形用户界面创建方法及其系统 |
CN102135898A (zh) * | 2011-03-08 | 2011-07-27 | 中山大学 | 一种通用gui开发编译处理方法及系统 |
CN103150456A (zh) * | 2013-03-29 | 2013-06-12 | 北京经纬恒润科技有限公司 | 一种matlab环境下gui制作方法及系统 |
CN105511843A (zh) * | 2014-09-22 | 2016-04-20 | 普天信息技术有限公司 | 一种生成应用程序界面的方法和装置 |
-
2016
- 2016-07-21 CN CN201610578909.4A patent/CN106250116B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101334728A (zh) * | 2008-07-28 | 2008-12-31 | 北京航空航天大学 | 一种基于xml文档描述的界面生成方法和平台 |
CN102081520A (zh) * | 2011-01-14 | 2011-06-01 | 杭州海康威视数字技术股份有限公司 | 嵌入式硬盘录像机的图形用户界面创建方法及其系统 |
CN102135898A (zh) * | 2011-03-08 | 2011-07-27 | 中山大学 | 一种通用gui开发编译处理方法及系统 |
CN103150456A (zh) * | 2013-03-29 | 2013-06-12 | 北京经纬恒润科技有限公司 | 一种matlab环境下gui制作方法及系统 |
CN105511843A (zh) * | 2014-09-22 | 2016-04-20 | 普天信息技术有限公司 | 一种生成应用程序界面的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106250116A (zh) | 2016-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106250116B (zh) | 一种软件通用框架代码生成方法及系统 | |
CN108021363B (zh) | 可视化游戏逻辑编辑方法及系统 | |
US10198422B2 (en) | Information-processing equipment based on a spreadsheet | |
CN103631597B (zh) | 基于xml的web表单引擎装置及方法 | |
CN105843734A (zh) | 一种自动化测试方法、装置及计算设备 | |
CN102591777A (zh) | 一种单元测试代码生成方法及装置 | |
Julius et al. | Transformation of GRAFCET to PLC code including hierarchical structures | |
CN103412747A (zh) | 一种基于模型驱动的嵌入式工业实时系统图形化设计方法 | |
CN103327080A (zh) | 创建物联网控制系统的方法及装置 | |
CN112363694B (zh) | Fmu文件及求解器运行环境与工业软件的集成方法 | |
CN106095404A (zh) | 一种业务过程模型至服务组成模型的自动模型转换方法 | |
US6453450B1 (en) | Timing diagram compiler and runtime environment for interactive generation of executable test programs for logic verification | |
CN112083919A (zh) | 一种基于yaml模板的目标服务代码生成方法及装置 | |
CN111813393A (zh) | 一种应用程序开发方法及装置 | |
KR101352383B1 (ko) | Vpl을 이용한 프로그램 개발 방법과 그 방법을 구현한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체 | |
Wurdel et al. | CTML: Domain and Task Modeling for Collaborative Environments. | |
Feuerstack et al. | Automated usability evaluation during model-based interactive system development | |
Miller et al. | Evaluating a basic approach to sensor network node programming | |
CN101303663A (zh) | 一种数字机顶盒软件开发模拟测试方法 | |
Märtin et al. | Patterns and models for automated user interface construction–in search of the missing links | |
CN106250147A (zh) | 应用程序开发管理方法和装置 | |
Elouali et al. | A model-based approach for engineering multimodal mobile interactions | |
CN113867714A (zh) | 一种适配多语言的自动代码生成方法 | |
CN102467369A (zh) | 测量资源控制系统和测量资源控制方法 | |
CN110147307A (zh) | 一种嵌入式系统仿真ram、rom结果对比系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |