CN103135989B - 一种回调函数代码生成方法及装置 - Google Patents
一种回调函数代码生成方法及装置 Download PDFInfo
- Publication number
- CN103135989B CN103135989B CN201310075933.2A CN201310075933A CN103135989B CN 103135989 B CN103135989 B CN 103135989B CN 201310075933 A CN201310075933 A CN 201310075933A CN 103135989 B CN103135989 B CN 103135989B
- Authority
- CN
- China
- Prior art keywords
- function
- call back
- back function
- submodule
- configuration file
- 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
Abstract
本申请公开了一种回调函数代码生成方法及装置,所述方法包括获取配置文件,所述配置文件包括至少一个目标回调函数的标识参数信息;依据所述配置文件中的标识参数信息,在Simulink模型中设置一个回调函数模块;其中,所述回调函数模块包括至少一个与所述目标回调函数相对应的函数子模块对,每个所述函数子模块对包括一个函数名称子模块及一个函数内容子模块;若预设配置规则成立,对所述回调函数模块中的每个函数内容子模块添加其各自对应的函数内容;运行所述回调函数模块,生成与所述配置文件相对应的目标回调函数代码。
Description
技术领域
本申请涉及软件设计技术领域,特别涉及一种回调函数代码生成方法及装置。
背景技术
在软件代码开发过程中,通常采用基于Simulink的代码生成工具实现全自动代码生成。上述方案通常通过采用S-Function将回调函数封装成回调函数模块,在用户需要在回调函数中添加函数内容时,调用回调函数模块添加函数内容。而在协议栈软件中,可能会调用到多个回调函数,而需要调用的回调函数的个数及名称,均会由于用户的不同配置而有所不同。
目前,在实现回调函数代码生成时,需要将每个回调函数的两个回调函数子模块(名称子模块及内容子模块)置入Simulink模型中,独立封装于一个回调函数模块,再对两个子模块进行参数或内容添加配置,之后生成每个回调函数的代码,在用户进行回调函数调用时对相应的回调函数代码进行调用。
上述回调函数代码生成方案中,在代码生成时,需要将回调函数进行单独封装,在回调函数较多时,更需要对每个回调函数逐一进行封装生成代码,需要耗费大量的工作量,成本较高。
发明内容
本申请所要解决的技术问题是提供一种回调函数代码生成方法及装置,用以解决现有技术中在代码开发过程中,需要对每个回调函数均建立一个对应的回调函数模块,由此生成回调函数代码,导致工作量耗费较大,成本较高的技术问题。
本申请提供了一种回调函数代码生成方法,包括:
获取配置文件,所述配置文件包括至少一个目标回调函数的标识参数信息;
依据所述配置文件中的标识参数信息,在Simulink模型中设置一个回调函数模块;
其中,所述回调函数模块包括至少一个与所述目标回调函数相对应的函数子模块对,每个所述函数子模块对包括一个函数名称子模块及一个函数内容子模块;
若预设配置规则成立,对所述回调函数模块中的每个函数内容子模块添加其各自对应的函数内容;
运行所述回调函数模块,生成与所述配置文件相对应的目标回调函数代码。
上述方法,优选的,所述预设配置规则为所述配置文件中的标识参数信息与所述回调函数模块中的配置信息相对应;
若所述预设配置规则不成立,所述方法还包括:
返回执行所述依据所述配置文件中的标识参数信息,在Simulink模型中设置一个回调函数模块。
上述方法,优选的,所述预设配置规则为获取到的用户指令文件表明所述配置文件满足用户需求;
若所述配置规则不成立,所述方法还包括:
返回重新执行所述获取配置文件。
上述方法,优选的,所述依据所述配置文件中的标识参数信息,在Simulink模型中设置一个回调函数模块包括:
在所述配置文件的标识参数信息中读取至少一个目标回调函数的函数名称;
建立分别与读取的函数名称相对应的函数子模块对,所有所述函数子模块对组成一个回调函数模块,完成在Simulink模型中建立一个回调函数模块的过程;
其中,每个所述函数子模块对包括一个函数名称子模块和一个函数内容子模块,所述函数内容子模块为空。
上述方法,优选的,所述运行所述回调函数模块,生成与所述配置文件相对应的目标回调函数代码包括:
运行所述回调函数模块中每个函数子模块对的函数名称子模块和函数内容子模块,分别生成所述目标回调函数的函数名称代码及函数内容代码;
将所述函数名称代码分别与其各自对应的函数内容代码进行整合,生成与所述配置文件相对应的目标回调函数代码;
其中,所述目标回调函数代码包括至少一个回调函数的函数代码。
本申请还提供了一种回调函数代码生成装置,包括:
信息获取单元,用于获取配置文件,所述配置文件包括至少一个目标回调函数的标识参数信息;
模型设置单元,用于依据所述配置文件中的标识参数信息,在Simulink模型中设置一个回调函数模块;
其中,所述回调函数模块包括至少一个与所述目标回调函数相对应的函数子模块对,每个所述函数子模块对包括一个函数名称子模块及函数内容子模块;
内容添加单元,用于若预设配置规则成立,对所述回调函数模块中的每个函数内容子模块添加其各自对应的函数内容;
模块运行单元,用于运行所述回调函数模块,生成与所述配置文件相对应的目标回调函数代码。
上述装置,优选的,所述预设配置规则为所述配置文件中的标识参数信息与所述回调函数模块中的配置信息相对应;
若所述内容添加单元判断出所述预设配置规则不成立,所述装置还包括:
第一执行触发单元,用于触发所述模型设置单元,重新依据所述配置文件中的标识参数信息,在Simulink模型中设置一个回调函数模块。
上述装置,优选的,所述预设配置规则为获取到的用户指令文件表明所述配置文件满足用户需求;
若所述内容添加单元判断出所述预设配置规则不成立,所述装置还包括:
第二执行触发单元,用于触发所述信息获取单元,重新获取配置文件。
上述装置,优选的,所述模型设置单元包括:
名称读取子单元,用于在所述配置文件的标识参数信息中读取至少一个目标回调函数的函数名称;
模块设置子单元,用于建立分别与读取的函数名称相对应的函数子模块对,所有所述函数子模块对组成一个回调函数模块,完成在Simulink模型中建立一个回调函数模块的过程;
其中,每个所述函数子模块对包括一个函数名称子模块和一个函数内容子模块,所述函数内容子模块为空。
上述装置,优选的,所述模块运行单元包括:
子模块运行子单元,用于运行所述回调函数模块中每个函数子模块对的函数名称子模块和函数内容子模块,分别生成所述目标回调函数的函数名称代码及函数内容代码;
代码整合子单元,用于将所述函数名称代码分别与其各自对应的函数内容代码进行整合,生成与所述配置文件相对应的目标回调函数代码;
其中,所述目标回调函数代码包括至少一个回调函数的函数代码。
由上述方案可知,本申请提供的一种回调函数代码生成方法及装置,通过获取含有目标回调函数的标识参数信息的配置文件,并依据配置文件在Simulink模型中设置一个回调函数模块,而该回调函数模块中包括与目标回调函数相对应的函数子模块对,每个函数子模块对包括一个函数名称子模块和一个函数内容子模块,由此,在对回调函数模块中的每个函数内容子模块添加其对应的函数内容之后,运行回调函数模块,从而生成回调函数代码,即通过在Simulink模型中设置含有多个函数子模块对的一个回调函数模块,避免对每个回调函数均设置一个回调函数模块,从而在回调函数较多时,无需建立多个回调函数模块,节省大量的工作流,减少用户操作流程,降低成本。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的一种回调函数代码生成方法实施例一的流程图;
图2为本申请实施例一中进行配置文件设置的配置界面示意图;
图3为本申请实施例一中配置文件的示意图;
图4为本申请实施例一中在Simulink模型中设置一个回调函数模块的示意图;
图5为本申请实施例一中回调函数模块的结构示意图;
图6为本申请实施例一中采用Simulink搭建的算法示例图;
图7为本申请提供的一种回调函数代码生成方法实施例二的流程图;
图8为本申请提供的一种回调函数代码生成方法实施例三的流程图;
图9为本申请提供的一种回调函数代码生成方法实施例四的部分流程图;
图10为本申请提供的一种回调函数代码生成方法实施例五的部分流程图;
图11为本申请实施例五中回调函数模块的运行原理示意图;
图12为本申请实施例五的应用示例图;
图13为本申请提供的一种回调函数代码生成装置实施例六的结构示意图;
图14为本申请提供的一种回调函数代码生成装置实施例七的结构示意图;
图15为本申请提供的一种回调函数代码生成装置实施例八的结构示意图;
图16为本申请提供的一种回调函数代码生成装置实施例九的部分结构示意图;
图17为本申请提供的一种回调函数代码生成装置实施例十的部分结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,在实现回调函数代码生成的方案中,应用较多的方案为:对每个回调函数,需要将每个回调函数依次置入Simulink模型中,建立多个回调函数模块,之后再对每个回调函数中的函数内容进行添加,进而生成回调函数代码,由此可知,现有方案中耗费的工作量较大,导致软件开发成本较高。同时,上述方案对于用户来说,在使用时,需要将所有用到的回调函数对应的回调函数模块依次人工添加至Simulink模型文件中,在回调函数较多时,很可能出现漏填或错填的情况。而且,在需要对回调函数的需求发生变化时,需要单独添加或删除对应的回调函数模块,使得上述方案移植性较差,不适用于不同项目的使用情况。
而本申请提供的一种回调函数代码生成方法及装置通过在Simulink模型中设置一个回调函数模块,并依据用户的配置信息,在回调函数模块中建立至少一个函数子模块对,进而在对每个函数子模块对中的函数内容进行添加后,运行回调函数模块,生成回调函数代码,避免现有技术中建立多个回调函数模块使得工作量消耗大开发成本高的问题。
参考图1,其示出了本申请提供的一种回调函数代码生成方法实施例一的流程图,所述方法包括:
步骤101:获取配置文件,所述配置文件包括至少一个目标回调函数的标识参数信息。
其中,所述目标回调函数是指,用户所需要生成代码的回调函数。而所述配置文件由用户根据自身需求进行配置生成。优选的,用户可以根据需求采用配置工具或配置界面进行参数配置,即用户通过配置工具或配置界面输入所述目标回调函数的标识参数信息,生成并获取含有所述标识参数信息的配置文件。而所述配置界面可以采用Simulink模型中的GUI建立,还可以使用其他软件或工具开发的界面,如图2所示。
优选的,所述配置文件包括至少一个函数配置子文件,每个函数配置子文件包括一个目标回调函数的标识参数信息,所述标识参数信息包括其所属目标回调函数的名称等标识信息。所述函数配置子文件与本申请实施例最终获取到的回调函数的代码有直接关联性,其决定后续回调函数模块中建立的函数子模块对的性质(如名称等)。
如图3所示,为包括两个目标回调函数且函数内容为空的配置文件(C代码文件):Cbk.c。
步骤102:依据所述配置文件中的标识参数信息,在Simulink模型中设置一个回调函数模块;
其中,所述回调函数模块包括至少一个与所述目标回调函数相对应的函数子模块对,每个所述函数子模块对包括一个函数名称子模块及一个函数内容子模块。
需要说明的是,所述步骤102可以理解为,用户在MATLAB下,建立一个Simulink模型文件,根据所述配置文件中目标回调函数的标识参数信息在Simulink模型中设置一个回调函数模块,该回调函数模块有且只有一个,所述回调函数模块中包括至少一个函数子模块对,该函数子模块对于所述配置文件中的目标回调函数关于其函数名称相对应,每个所述函数子模块对中包括一个函数名称子模块和函数内容子模块。其中,所述函数名称子模块中不为空,其内容与所述配置文件某一个目标回调函数的名称相对应或完全相同。
步骤103:判断预设配置规则是否成立,如果是,执行步骤104。
其中,所述预设配置规则可以为空,默认所述配置文件根据用户需求已经被完善,且在所述Simulink模型中建立的回调函数模块与所述配置文件完全对应,即执行所述步骤102之后,即可执行所述步骤104。
步骤104:对所述回调函数模块中的每个函数内容子模块添加其各自对应的函数内容。
需要说明的是,在所述步骤104是指,在所述回调函数模块建立之后,用户将所述目标回调函数的函数内容添加至所述回调函数模块中对应的函数内容子模块中。
例如,如图4所示,在Simulink模型中设置一个回调函数模块CallbackFunction。其中,回调函数模块的函数内容子模块为Subsystem模块,用户可以通过双击查看或添加模块内容,如图5所示。需要说明的是,在将配置文件中的标识参数信息添加至Simulink模型之前,该回调函数模块内容为空,而在回调函数模块建立完成之后,生成至少个函数子模块对,函数内容子模块为空,如图5所示,回调函数模块5001双击可查看到两个函数子模块对5002,每个函数子模块对5002包括一个函数名称子模块5003和一个函数内容子模块5004,例如,用户需要在AppFcn1函数下添加算法内容,只需要双击打开context1即可。
如图6所示,为采用Simulink搭建的算法示例,即,双击如图5所示的函数内容子模块5004之后,添加累加器算法的示例。
步骤105:运行所述回调函数模块,生成与所述配置文件相对应的目标回调函数代码。
由上述方案可知,本申请提供的一种回调函数代码生成方法实施例一,通过获取含有目标回调函数的标识参数信息的配置文件,并依据配置文件在Simulink模型中设置一个回调函数模块,而该回调函数模块中包括与目标回调函数相对应的函数子模块对,每个函数子模块对包括一个函数名称子模块和一个函数内容子模块,由此,在对回调函数模块中的每个函数内容子模块添加其对应的函数内容之后,运行回调函数模块,从而生成回调函数代码,即通过在Simulink模型中设置含有多个函数子模块对的一个回调函数模块,避免对每个回调函数均设置一个回调函数模块,从而在回调函数较多时,无需建立多个回调函数模块,不仅节省大量的工作流,降低成本。
同时,应用本申请实施例一,用户在进行回调函数调用时,只需在配置文件中设置需要的回调函数参数,避免了现有技术中由于回调函数较多,而在建立多个回调函数模块时出现漏填或错填的情况,且,通过本申请,可以根据用户设置的不同配置文件生成与之匹配的回调函数模块,从而得到相应的回调函数代码,移植性较强。
优选的,参考图7,其示出了本申请提供的一种回调函数代码生成方法实施例二的流程图,所述预设配置规则为所述配置文件中的标识参数信息与所述回调函数模块中的配置信息相对应,在所述步骤103中,若判断出所述配置规则不成立时,所述方法还包括:
返回执行所述步骤102,重新依据所述配置文件中的标识参数信息,在Simulink模型中设置一个回调函数模块,直到所述预设配置规则成立执行所述步骤104,即直到所述配置文件中的标识参数信息与所述回调函数模块中的配置信息相对应。
需要说明的是,在本申请实施例二中,所述预设配置规则还可以理解为:在所述Simulink模型中建立的回调函数模块与所述配置文件完全对应。
优选的,参考图8,其示出了本申请提供的一种回调函数代码生成方法实施例三的流程图,所述预设配置规则为获取到的用户指令文件表明所述配置文件满足用户需求,在所述步骤103中,若判断出所述配置规则不成立,所述方法还包括:
返回执行所述步骤101,重新获取配置文件,直到所述预设配置规则成立执行所述步骤104,即直到获取到的用户指令文件表明所述配置文件满足用需求。
需要说明的是,在本申请实施例三中,所述预设配置规则还可以理解为:所述配置文件根据用户需求已经被完善。
优选的,参考图9,其示出了本申请提供的一种回调函数代码生成方法实施例四的部分流程图,其中,所述步骤102中,依据所述配置文件中的标识参数信息,在Simulink模型中设置一个回调函数模块的过程,可以通过以下步骤实现:
步骤901:在所述配置文件的标识参数信息中读取至少一个目标回调函数的函数名称。
需要说明的是,所述配置文件的标识参数信息中包括至少一个目标回调函数的函数名称。由此,用户在MATLAB下,建立一个Simulink模型文件之后,建立一个回调函数模块时,首先读取所述配置文件中的至少一个目标回调函数的函数名称。
步骤902:建立分别与读取的函数名称相对应的函数子模块对,所有所述函数子模块对组成一个回调函数模块,完成在Simulink模型中建立一个回调函数模块的过程,而每个所述函数子模块对包括一个函数名称子模块和一个函数内容子模块;
其中,所述函数内容子模块为空。
需要说明的是,本申请实施例中所述步骤901至所述步骤902可以理解为,在MATLAB下,建立一个Simulink模型文件,在Simulink模型中建立一个回调函数模块,并读取所述配置文件中至少一个目标回调函数的函数名称,并根据所述函数名称设置所述回调函数模块,该回调函数模块有且只有一个,所述回调函数模块中包括至少一个函数子模块对,该函数子模块对于所述配置文件中的目标回调函数关于其函数名称相对应,每个所述函数子模块对中包括一个函数名称子模块和函数内容子模块。其中,所述函数名称子模块中不为空,其内容与所述配置文件某一个目标回调函数的名称相对应或完全相同。
参考图10,其示出了本申请提供的一种回调函数代码生成方法实施例五的部分流程图,其中,所述步骤105可以通过以下步骤实现:
步骤1001:运行所述回调函数模块中每个函数子模块对的函数名称子模块和函数内容子模块,分别生成所述目标回调函数的函数名称代码及函数内容代码。
例如,如图11所示,图11中cbk.c文件1101为配置文件,该配置文件包括两个目标回调函数,其各自的回调函数内容为空。在读取配置文件之后,设置生成一个包括两个函数子模块对5002的回调函数模块5001:函数名称子模块5003和函数内容子模块5004,在分别运行各给额函数子模块对5002中的函数名称子模块5003和函数内容子模块5004之后,生成与所述配置文件相对应的目标回调函数代码cbk.c文件1102。
步骤1002:将所述函数名称代码分别与其各自对应的函数内容代码进行整合,生成与所述配置文件相对应的目标回调函数代码;
其中,所述目标回调函数代码包括至少一个回调函数的函数代码。
优选的,如图12所示,为本申请实施例的应用示例图,所述步骤1001可以通过调用SimulinkCoder和RTWCoder两个代码生成工具实现,即用户采用Simulink模型搭建的算法放在Subsystem模块(函数内容子模块)中,由SimulinkCoder生成C代码(回调函数的内容代码);而具有回调函数名称的S-function,由RTWCoder生成C代码(回调函数的名称代码)。之后,再通过步骤1002将所述函数名称代码分别与其各自对应的函数内容代码进行整合,生成与所述配置文件相对应的目标回调函数代码。
由上述方案可知,本申请提供的一种回调函数代码生成方法实施例五,通过获取含有目标回调函数的标识参数信息的配置文件,并依据配置文件在Simulink模型中设置一个回调函数模块,而该回调函数模块中包括与目标回调函数相对应的函数子模块对,每个函数子模块对包括一个函数名称子模块和一个函数内容子模块,由此,在对回调函数模块中的每个函数内容子模块添加其对应的函数内容之后,运行所述回调函数模块中每个函数子模块对的函数名称子模块和函数内容子模块,分别生成所述目标回调函数的函数名称代码及函数内容代码,再将所述函数名称代码分别与其各自对应的函数内容代码进行整合,生成与所述配置文件相对应的目标回调函数代码,即通过在Simulink模型中设置含有多个函数子模块对的一个回调函数模块,运行回调函数模块中的各个子模块之后,得到回调函数代码,避免对每个回调函数均设置一个回调函数模块,从而在回调函数较多时,无需建立多个回调函数模块,不仅节省大量的工作流,降低成本。同时,应用本申请实施例一,用户在进行回调函数调用时,只需在配置文件中设置需要的回调函数参数,避免了现有技术中由于回调函数较多,而在建立多个回调函数模块时出现漏填或错填的情况,且,通过本申请,可以根据用户设置的不同配置文件生成与之匹配的回调函数模块,从而得到相应的回调函数代码,移植性较强。
参考图13,其示出了本申请提供的一种回调函数代码生成装置实施例六的结构示意图,所述装置包括:
信息获取单元1301,用于获取配置文件,所述配置文件包括至少一个目标回调函数的标识参数信息。
其中,所述目标回调函数是指,用户所需要生成代码的回调函数。而所述配置文件由用户根据自身需求进行配置生成。优选的,用户可以根据需求采用配置工具或配置界面进行参数配置,即用户通过配置工具或配置界面输入所述目标回调函数的标识参数信息,生成并获取含有所述标识参数信息的配置文件。而所述配置界面可以采用Simulink模型中的GUI建立,还可以使用其他软件或工具开发的界面,如图2所示。
优选的,所述配置文件包括至少一个函数配置子文件,每个函数配置子文件包括一个目标回调函数的标识参数信息,所述标识参数信息包括其所属目标回调函数的名称等标识信息。所述函数配置子文件与本申请实施例最终获取到的回调函数的代码有直接关联性,其决定论后续回调函数模块中建立的函数子模块对的性质(如名称等)。
如图3所示,为包括两个目标回调函数且函数内容为空的配置文件(C代码文件):Cbk.c。
模型设置单元1302,用于依据所述配置文件中的标识参数信息,在Simulink模型中设置一个回调函数模块;
其中,所述回调函数模块包括至少一个与所述目标回调函数相对应的函数子模块对,每个所述函数子模块对包括一个函数名称子模块及函数内容子模块。
需要说明的是,所述模型设置单元1302与所述信息获取单元1301相连接。所述模型设置单元1302可以理解为,用户在MATLAB下,建立一个Simulink模型文件,并根据所述配置文件中目标回调函数的标识参数信息在Simulink模型中设置一个回调函数模块,该回调函数模块有且只有一个,所述回调函数模块中包括至少一个函数子模块对,该函数子模块对于所述配置文件中的目标回调函数关于其函数名称相对应,每个所述函数子模块对中包括一个函数名称子模块和函数内容子模块。其中,所述函数名称子模块中不为空,其内容与所述配置文件某一个目标回调函数的名称相对应或完全相同。
内容添加单元1303,用于若预设配置规则成立,对所述回调函数模块中的每个函数内容子模块添加其各自对应的函数内容。
其中,所述预设配置规则可以为空,默认所述配置文件根据用户需求已经被完善,且在所述Simulink模型中建立的回调函数模块与所述配置文件完全对应。
需要说明的是,所述内容添加单元1303与所述模型设置单元1302相连接。所述内容添加单元1303是指,在所述回调函数模块建立之后,用户将所述目标回调函数的函数内容添加至所述回调函数模块中对应的函数内容子模块中。
例如,如图4所示,在Simulink模型中设置一个回调函数模块CallbackFunction。其中,回调函数模块的函数内容子模块为Subsystem模块,用户可以通过双击查看或添加模块内容,如图5所示。需要说明的是,在将配置文件中的标识参数信息添加至Simulink模型之前,该回调函数模块内容为空,而在回调函数模块建立完成之后,生成至少个函数子模块对,函数内容子模块为空,如图5所示,回调函数模块5001双击可查看到两个函数子模块对5002,每个函数子模块对5002包括一个函数名称子模块5003和一个函数内容子模块5004,例如,用户需要在AppFcn1函数下添加算法内容,只需要双击打开context1即可。
如图6所示,为采用Simulink搭建的算法示例,即,双击如图5所示的函数内容子模块5004之后,添加累加器算法的示例。
模块运行单元1304,用于运行所述回调函数模块,生成与所述配置文件相对应的目标回调函数代码。
需要说明的是,所述模块运行单元1304与所述内容添加单元1303相连接。
由上述方案可知,本申请提供的一种回调函数代码生成装置实施例六,通过获取含有目标回调函数的标识参数信息的配置文件,并依据配置文件在Simulink模型中设置一个回调函数模块,而该回调函数模块中包括与目标回调函数相对应的函数子模块对,每个函数子模块对包括一个函数名称子模块和一个函数内容子模块,由此,在对回调函数模块中的每个函数内容子模块添加其对应的函数内容之后,运行回调函数模块,从而生成回调函数代码,即通过在Simulink模型中设置含有多个函数子模块对的一个回调函数模块,避免对每个回调函数均设置一个回调函数模块,从而在回调函数较多时,无需建立多个回调函数模块,不仅节省大量的工作流,降低成本。
同时,应用本申请实施例六,用户在进行回调函数调用时,只需在配置文件中设置需要的回调函数参数,避免了现有技术中由于回调函数较多,而在建立多个回调函数模块时出现漏填或错填的情况,且,通过本申请,可以根据用户设置的不同配置文件生成与之匹配的回调函数模块,从而得到相应的回调函数代码,移植性较强。
参考图14,其示出了本申请提供的一种回调函数代码生成装置实施例七的结构示意图,其中,所述预设配置规则为所述配置文件中的标识参数信息与所述回调函数模块中的配置信息相对应;
若所述内容添加单元1303判断出所述预设配置规则不成立,所述装置还包括:
第一执行触发单元1305,用于触发所述模型设置单元1302,重新依据所述配置文件中的标识参数信息,在Simulink模型中设置一个回调函数模块,直到所述预设配置规则成立,即直到所述配置文件中的标识参数信息与所述回调函数模块中的配置信息相对应。
需要说明的是,所述第一执行触发单元1305分别与所述内容添加单元1303及所述模型设置单元1302相连接。在本申请实施例七中,所述预设配置规则还可以理解为:在所述Simulink模型中建立的回调函数模块与所述配置文件完全对应。
参考图15,其示出了本申请提供的一种回调函数代码生成装置实施例八的结构示意图,其中,所述预设配置规则为获取到的用户指令文件表明所述配置文件满足用户需求;
若所述内容添加单元1303判断出所述预设配置规则不成立,所述装置还包括:
第二执行触发单元1306,用于触发所述信息获取单元1301,重新获取配置文件,直到所述预设配置规则成立,即直到获取到的用户指令文件表明所述配置文件满足用需求。
需要说明的是,所述第二执行触发单元1306分别与所述内容添加单元1303及所述信息获取单元1301相连接。在本申请实施例八中,所述预设配置规则还可以理解为:所述配置文件根据用户需求已经被完善。
参考图16,其示出了本申请提供的一种回调函数代码生成装置实施例九的部分结构示意图,其中,所述模型设置单元1302包括:
模块建立子单元1321,用于在所述配置文件的标识参数信息中读取至少一个目标回调函数的函数名称。
需要说明的是,所述配置文件的标识参数信息中包括至少一个目标回调函数的函数名称。由此,用户在MATLAB下,建立一个Simulink模型文件之后,建立一个回调函数模块时,首先读取所述配置文件中的至少一个目标回调函数的函数名称。
模块设置子单元1322,用于建立分别与读取的函数名称相对应的函数子模块对,所有所述函数子模块对组成一个回调函数模块,完成在Simulink模型中建立一个回调函数模块的过程,而每个所述函数子模块对包括一个函数名称子模块和一个函数内容子模块;
其中,所述函数内容子模块为空。
需要说明的是,所述模块设置子单元1322与所述模块建立子单元1321相连接。本申请实施例中所述模块建立子单元1321及所述模块设置子单元1322可以理解为,在MATLAB下,建立一个Simulink模型文件,在Simulink模型中建立一个回调函数模块,并读取所述配置文件中至少一个目标回调函数的函数名称,并根据所述函数名称设置所述回调函数模块,该回调函数模块有且只有一个,所述回调函数模块中包括至少一个函数子模块对,该函数子模块对于所述配置文件中的目标回调函数关于其函数名称相对应,每个所述函数子模块对中包括一个函数名称子模块和函数内容子模块。其中,所述函数名称子模块中不为空,其内容与所述配置文件某一个目标回调函数的名称相对应或完全相同。
参考图17,其示出了本申请提供的一种回调函数代码生成装置实施例十的部分结构示意图,其中,所述模块运行单元1304包括:
子模块运行子单元1341,用于运行所述回调函数模块中每个函数子模块对的函数名称子模块和函数内容子模块,分别生成所述目标回调函数的函数名称代码及函数内容代码。
例如,如图11所示,图11中cbk.c文件1101为配置文件,该配置文件包括两个目标回调函数,其各自的回调函数内容为空。在读取配置文件之后,设置生成一个包括两个函数子模块对5002的回调函数模块5001:函数名称子模块5003和函数内容子模块5004,在所述子模块运行子单元1341分别运行各个函数子模块对5002中的函数名称子模块5003和函数内容子模块5004之后,生成与所述配置文件相对应的目标回调函数代码cbk.c文件1102。
代码整合子单元1342,用于将所述函数名称代码分别与其各自对应的函数内容代码进行整合,生成与所述配置文件相对应的目标回调函数代码;
其中,所述目标回调函数代码包括至少一个回调函数的函数代码。
需要说明的是,所述代码整合子单元1342与所述子模块运行子单元1341相连接。
优选的,如图12所示,为本申请实施例的应用示例图,所述子模块运行子单元1341可以通过调用SimulinkCoder和RTWCoder两个代码生成工具实现,即用户采用Simulink模型搭建的算法放在Subsystem模块(函数内容子模块)中,由SimulinkCoder生成C代码(回调函数的内容代码);而具有回调函数名称的S-function,由RTWCoder生成C代码(回调函数的名称代码)。之后,再通过所述代码整合子单元1342将所述函数名称代码分别与其各自对应的函数内容代码进行整合,生成与所述配置文件相对应的目标回调函数代码。
由上述方案可知,本申请提供的一种回调函数代码生成装置实施例十,通过获取含有目标回调函数的标识参数信息的配置文件,并依据配置文件在Simulink模型中设置一个回调函数模块,而该回调函数模块中包括与目标回调函数相对应的函数子模块对,每个函数子模块对包括一个函数名称子模块和一个函数内容子模块,由此,在对回调函数模块中的每个函数内容子模块添加其对应的函数内容之后,运行所述回调函数模块中每个函数子模块对的函数名称子模块和函数内容子模块,分别生成所述目标回调函数的函数名称代码及函数内容代码,再将所述函数名称代码分别与其各自对应的函数内容代码进行整合,生成与所述配置文件相对应的目标回调函数代码,即通过在Simulink模型中设置含有多个函数子模块对的一个回调函数模块,运行回调函数模块中的各个子模块之后,得到回调函数代码,避免对每个回调函数均设置一个回调函数模块,从而在回调函数较多时,无需建立多个回调函数模块,不仅节省大量的工作流,降低成本。同时,应用本申请实施例一,用户在进行回调函数调用时,只需通过配置界面输入回调函数参数,由此获取含有目标回调函数的标识参数信息的配置文件后,进而生成回调函数代码,避免了现有技术中由于回调函数较多,而在建立多个回调函数模块时出现漏填或错填的情况,且,通过本申请,可以根据用户设置的不同配置文件生成与之匹配的回调函数模块,从而得到相应的回调函数代码,移植性较强。
要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种回调函数代码生成方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种回调函数代码生成方法,其特征在于,包括:
获取配置文件,所述配置文件包括至少一个目标回调函数的标识参数信息;
依据所述配置文件中的标识参数信息,在Simulink模型中设置一个回调函数模块,具体包括:在所述配置文件的标识参数信息中读取至少一个目标回调函数的函数名称,建立分别与读取的函数名称相对应的函数子模块对,所有所述函数子模块对组成一个回调函数模块,完成在Simulink模型中建立一个回调函数模块的过程;
所述配置文件包括至少一个函数配置子文件,每个函数配置子文件包括一个目标回调函数的标识参数信息;
其中,所述回调函数模块包括至少一个与所述目标回调函数相对应的函数子模块对,每个所述函数子模块对包括一个函数名称子模块及一个函数内容子模块;
若预设配置规则成立,对所述回调函数模块中的每个函数内容子模块添加其各自对应的函数内容;
运行所述回调函数模块,生成与所述配置文件相对应的目标回调函数代码。
2.根据权利要求1所述的方法,其特征在于,所述预设配置规则为所述配置文件中的标识参数信息与所述回调函数模块中的配置信息相对应;
若所述预设配置规则不成立,所述方法还包括:
返回执行所述依据所述配置文件中的标识参数信息,在Simulink模型中设置一个回调函数模块。
3.根据权利要求1所述的方法,其特征在于,所述预设配置规则为获取到的用户指令文件表明所述配置文件满足用户需求;
若所述配置规则不成立,所述方法还包括:
返回重新执行所述获取配置文件。
4.根据权利要求1所述的方法,其特征在于,所述依据所述配置文件中的标识参数信息,在Simulink模型中设置一个回调函数模块还包括:
所述函数内容子模块为空。
5.根据权利要求1所述的方法,其特征在于,所述运行所述回调函数模块,生成与所述配置文件相对应的目标回调函数代码包括:
运行所述回调函数模块中每个函数子模块对的函数名称子模块和函数内容子模块,分别生成所述目标回调函数的函数名称代码及函数内容代码;
将所述函数名称代码分别与其各自对应的函数内容代码进行整合,生成与所述配置文件相对应的目标回调函数代码;
其中,所述目标回调函数代码包括至少一个回调函数的函数代码。
6.一种回调函数代码生成装置,其特征在于,包括:
信息获取单元,用于获取配置文件,所述配置文件包括至少一个目标回调函数的标识参数信息,所述配置文件包括至少一个函数配置子文件,每个函数配置子文件包括一个目标回调函数的标识参数信息;
模型设置单元,用于依据所述配置文件中的标识参数信息,在Simulink模型中设置一个回调函数模块;
其中,所述回调函数模块包括至少一个与所述目标回调函数相对应的函数子模块对,每个所述函数子模块对包括一个函数名称子模块及函数内容子模块;
内容添加单元,用于若预设配置规则成立,对所述回调函数模块中的每个函数内容子模块添加其各自对应的函数内容;
模块运行单元,用于运行所述回调函数模块,生成与所述配置文件相对应的目标回调函数代码;
所述模型设置单元包括:
名称读取子单元,用于在所述配置文件的标识参数信息中读取至少一个目标回调函数的函数名称;
模块设置子单元,用于建立分别与读取的函数名称相对应的函数子模块对,所有所述函数子模块对组成一个回调函数模块,完成在Simulink模型中建立一个回调函数模块的过程。
7.根据权利要求6所述的装置,其特征在于,所述预设配置规则为所述配置文件中的标识参数信息与所述回调函数模块中的配置信息相对应;
若所述内容添加单元判断出所述预设配置规则不成立,所述装置还包括:
第一执行触发单元,用于触发所述模型设置单元,重新依据所述配置文件中的标识参数信息,在Simulink模型中设置一个回调函数模块。
8.根据权利要求6所述的装置,其特征在于,所述预设配置规则为获取到的用户指令文件表明所述配置文件满足用户需求;
若所述内容添加单元判断出所述预设配置规则不成立,所述装置还包括:
第二执行触发单元,用于触发所述信息获取单元,重新获取配置文件。
9.根据权利要求6所述的装置,其特征在于,
所述函数内容子模块为空。
10.根据权利要求6所述的装置,其特征在于,所述模块运行单元包括:
子模块运行子单元,用于运行所述回调函数模块中每个函数子模块对的函数名称子模块和函数内容子模块,分别生成所述目标回调函数的函数名称代码及函数内容代码;
代码整合子单元,用于将所述函数名称代码分别与其各自对应的函数内容代码进行整合,生成与所述配置文件相对应的目标回调函数代码;
其中,所述目标回调函数代码包括至少一个回调函数的函数代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310075933.2A CN103135989B (zh) | 2013-03-11 | 2013-03-11 | 一种回调函数代码生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310075933.2A CN103135989B (zh) | 2013-03-11 | 2013-03-11 | 一种回调函数代码生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103135989A CN103135989A (zh) | 2013-06-05 |
CN103135989B true CN103135989B (zh) | 2016-02-10 |
Family
ID=48495861
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310075933.2A Active CN103135989B (zh) | 2013-03-11 | 2013-03-11 | 一种回调函数代码生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103135989B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103500087B (zh) * | 2013-09-17 | 2016-08-17 | 福建亿榕信息技术有限公司 | 一种基于maven插件和freemarker模版的代码生成方法及装置 |
CN103677835B (zh) * | 2013-12-16 | 2017-04-12 | 北京经纬恒润科技有限公司 | 软件集成方法及系统 |
CN104091006B (zh) * | 2014-07-01 | 2020-05-26 | 中国北方发动机研究所(天津) | Simulink中自适应的仿真和代码生成的控制方法 |
CN110442329A (zh) * | 2019-06-26 | 2019-11-12 | 平安科技(深圳)有限公司 | 代码段的生成方法、装置、存储介质及计算机设备 |
CN112949243B (zh) * | 2021-03-12 | 2023-01-24 | 泉芯集成电路制造(济南)有限公司 | 参数配置方法、装置、计算机设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101692206A (zh) * | 2009-08-28 | 2010-04-07 | 腾讯科技(深圳)有限公司 | 一种为静态回调函数添加动态参数的方法及相关实现 |
CN102708234A (zh) * | 2012-04-25 | 2012-10-03 | 清华大学 | 基于HLA的Matlab仿真模型集成平台和方法 |
-
2013
- 2013-03-11 CN CN201310075933.2A patent/CN103135989B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101692206A (zh) * | 2009-08-28 | 2010-04-07 | 腾讯科技(深圳)有限公司 | 一种为静态回调函数添加动态参数的方法及相关实现 |
CN102708234A (zh) * | 2012-04-25 | 2012-10-03 | 清华大学 | 基于HLA的Matlab仿真模型集成平台和方法 |
Non-Patent Citations (2)
Title |
---|
基于DSP的RTW代码自动生成技术研究;卞学飞;《中国优秀硕士学位论文全文数据库》;20130115;第2-3节 * |
基于Simulink RTW的分布式实时仿真关键技术研究;石仁星;《中国优秀硕士学位论文全文数据库》;20120715;第3-4节 * |
Also Published As
Publication number | Publication date |
---|---|
CN103135989A (zh) | 2013-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103135989B (zh) | 一种回调函数代码生成方法及装置 | |
CN101699405B (zh) | 一种宿主程序和插件及插件间进行交互的方法及装置 | |
CN102855178B (zh) | 一种单元测试中生成Mock库的方法和装置 | |
CN103092751B (zh) | 一种云环境下基于用户行为模型的web应用性能测试系统 | |
CN108833459B (zh) | 数据上报方法及终端设备 | |
CN107547261B (zh) | 云平台性能测试方法及装置 | |
CN101996693A (zh) | 一种用于反应堆保护系统的组态系统 | |
Dubinin et al. | On definition of a formal model for IEC 61499 function blocks | |
CN106484603B (zh) | 一种业务测试方法及装置 | |
CN107171897A (zh) | 一种接口测试方法及数据接口测试系统 | |
CN103559093A (zh) | 一种服务器资源的配置方法及装置 | |
CN104850498A (zh) | 一种填充信息测试方法及系统 | |
CN105243013A (zh) | 一种软件测试方法与系统 | |
CN105187250A (zh) | 一种基于组件模板部署节点的方法及系统 | |
CN103455339A (zh) | 一种通用仿真组件的执行方法 | |
CN105045598A (zh) | 一种基于Java的web前端性能优化及上线的方法和系统 | |
CN101986282A (zh) | 拓扑适配方法及装置 | |
CN109857626A (zh) | 压力测试方法及装置 | |
CN109739872A (zh) | 一种sql语句处理的实现方法、系统及操作方法 | |
CN102752104A (zh) | 一种基于智能卡cos的对称密码服务实现方法 | |
CN110705117B (zh) | 一种数字孪生系统复杂任务可配置高效求解方法和系统 | |
CN103984540A (zh) | 生成硬件接口运行程序的方法及装置 | |
CN106155880A (zh) | 一种基于策略的自动化程序分析系统和方法 | |
CN102567195B (zh) | 一种目标文件走查方法及系统 | |
CN108595656A (zh) | 一种数据的处理方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 4 / F, building 1, No.14 Jiuxianqiao Road, Chaoyang District, Beijing 100020 Patentee after: Beijing Jingwei Hengrun Technology Co., Ltd Address before: 100101 Beijing city Chaoyang District Anxiang Beili 11 B block 8 layer Patentee before: Beijing Jingwei HiRain Technologies Co.,Ltd. |