CN111104100B - 进行逻辑控制的方法、系统和存储介质 - Google Patents
进行逻辑控制的方法、系统和存储介质 Download PDFInfo
- Publication number
- CN111104100B CN111104100B CN201811265327.6A CN201811265327A CN111104100B CN 111104100 B CN111104100 B CN 111104100B CN 201811265327 A CN201811265327 A CN 201811265327A CN 111104100 B CN111104100 B CN 111104100B
- Authority
- CN
- China
- Prior art keywords
- input
- output
- truth table
- logic control
- mask
- 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/30—Creation or generation of source code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
提出一种用于逻辑控制的方法、系统和存储介质,基于存储在软件的头文件中的逻辑控制规则进行逻辑控制。该方法包括基于至少一个逻辑控制函数中的每个逻辑控制函数生成相应的结构化模板,基于用户设定生成输入输出真值表,基于输入输出真值表和特定输入信息生成掩码结果输出真值表,将掩码结果输出真值表作为逻辑控制规则存储在头文件中以及基于逻辑控制规则进行逻辑控制。上述方案可以依据客户的需求文档,实现代码的快速生成而无需通过手动编写代码来修改大量C文件并且不用重复执行标准化流程,提高了代码可靠性和效率。
Description
技术领域
本发明涉及计算机控制,特别地涉及使用软件进行逻辑控制的方法、系统和计算机存储介质。
背景技术
在汽车电子领域,用于逻辑控制的软件开发需要耗费大量人力成本。传统的开发流程针对不同的应用项目,需要根据客户需求文档编写和更改大量C文件。对于实现逻辑控制功能的软件模块,逻辑判断条件的更改会导致修改C文件以及重复执行标准化流程。这种开发方式的缺点在于通用性差,每次逻辑变更都需要修改C文件,导致软件代码可靠性降低,重复执行标准化流程也将额外耗费大量人力资源。
因此,存在对进行逻辑控制的方法和系统进行改进的需求。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本发明的实施例提出一种用于进行逻辑控制的方法、系统及其计算机存储介质,旨在解决上文中提及的在不同应用项目的软件开发实现中存在的需要根据客户需求文档修改C文件,以及重复执行标准化流程的问题,例如通过工具进行配置来实现代码的快速生成,有效避免低代码可靠性和高人力成本。
根据本发明的一方面,提出一种用于进行逻辑控制的方法,该方法基于存储在软件的头文件中的逻辑控制规则进行逻辑控制。根据一个实施例,该方法包括基于至少一个逻辑控制函数中的每个逻辑控制函数生成相应的结构化模板,其中每个所述结构化模板包括至少一个逻辑依存列表,至少一个输入和至少一个输出;基于用户设定生成输入输出真值表;基于所述输入输出真值表和特定输入信息生成掩码结果输出真值表,其中所述特定输入信息指示能够单独确定所述输出的所述输入;将所述掩码结果输出真值表作为逻辑控制规则存储在所述头文件中;以及基于所述逻辑控制规则进行逻辑控制。
根据本发明的另一方面,提出一种用于进行逻辑控制的系统,包括软件的头文件,该系统被设置为基于存储在所述头文件中的逻辑控制规则进行逻辑控制。根据一个实施例,该系统包括模板生成单元,其被设置为基于至少一个逻辑控制函数中的每个逻辑控制函数生成相应的结构化模板,其中每个所述结构化模板包括至少一个逻辑依存列表,至少一个输入和至少一个输出;第一生成单元,其被设置为基于用户设定生成输入输出真值表;第二生成单元,其被设置为基于所述输入输出真值表和特定输入信息生成掩码结果输出真值表,其中所述特定输入信息指示能够单独确定所述输出的所述输入;存储单元,其被设置为将所述掩码结果输出真值表作为逻辑控制规则存储在所述头文件中;以及控制单元,其被设置为基于所述逻辑控制规则进行逻辑控制。
根据本发明的又一方面,还提出一种计算机可读存储介质,其上存储有计算机程序,该计算机程序包括可执行指令,当该可执行指令被处理器执行时,实施如上所述的方法。
根据本发明的再一方面,提出一种电子设备,包括处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器设置为执行所述可执行指令以实施如上所述的方法。
通过采用本发明的实施例中所提及的方案,可以依据客户的需求文档,配置逻辑控制功能的工具,针对不同的逻辑控制功能,只需进行简单配置即可实现代码的快速生成,无需通过手动编写代码来修改大量C文件并且不用重复执行标准化流程,缩短了开发周期,节省了大量人力成本,提高了代码可靠性和效率。此外,本发明实施例中的方法和系统不仅可以应用于C/C++软件开发环境,还可以扩展到用于逻辑控制的其它软件开发环境,特别是应用于嵌入式软件的开发环境中。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
通过参照附图详细描述其示例性实施例,本发明的上述和其它特征及优点将变得更加明显。
图1为根据本发明的实施例的用于进行逻辑控制的方法的示例性流程图;
图2为根据本发明的实施例创建的结构化模板的示例性结构;
图3为根据本发明的实施例设定结构化模板的输入分量和输出分量的真值的示意图;
图4为根据本发明的实施例创建SBR模块的xml模板的示例性结构;
图5为根据本发明的实施例设定SBR模块的xml模板的输入分量和输出分量的真值的示意图;
图6为根据本发明的实施例的SBR模块头文件中的掩码结果输出真值表;
图7为根据本发明的实施例的SBR模块的程序代码源文件和头文件;以及
图8为根据本发明的实施例的用于进行逻辑控制的系统的示例性结构图。
具体实施方式
现在将参考附图更全面地描述本发明的示例性实施例。然而,示例性实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施方式;相反,提供这些实施方式使得本发明将全面和完整,并将示例性实施例的构思全面地传达给本领域的技术人员。在附图中,为了清晰,可能会夸大部分元件的尺寸或加以变形。在附图中相同的附图标记表示相同或类似的结构,因而将省略它们的详细描述。
此外,所描述的特征、结构或特性能够以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有所述特定细节中的一个或更多,或者可以采用其它的方法、元件等。在其它情况下,不详细示出或描述公知结构、方法或者操作以避免模糊本发明的各方面。
在下文中,以C/C++软件开发环境进行用于汽车电子的嵌入式软件逻辑控制策略的实现为例介绍本发明的构思,但是该示例不应视为对本发明方案的限制。本领域技术人员应当理解,根据本发明实施例的方法和系统不仅可以应用于C/C++软件开发环境中,还可以应用于任何基于软件进行逻辑控制的领域。另外,本发明的实施例也不限于示例实施例中的汽车电子领域,任何可以使用逻辑控制的领域也可以采用本发明中所提及的方案。虽然嵌入式软件被经常用于系统集成,但是本领域技术人员也将理解非嵌入式软件的开发也同样适用于本发明所提出的策略。
在C/C++软件开发环境中,后缀为.c的文件是程序代码源文件,其可以包括执行基本功能的程序代码。而后缀为.h的文件是头文件,可以包括程序代码需要调用的类、结构体和函数的声明、数组和常量名称等。程序代码源文件和头文件都需要经过编译过程(通常包括预处理、编译、汇编和链接)以共同生成可执行文件完成相应的控制和处理功能。
标准化软件流程是指在嵌入式软件开发中,需要对程序代码检查的一系列标准化步骤。标准化软件流程主要用于检查程序代码源文件中的程序代码。在每次基于客户的需求修改程序代码源文件的代码后,都需要重新执行一系列的标准化软件流程。但是,头文件在标准化软件流程中不需要被重复检查,只需要在基于客户的需求修改控制功能的逻辑控制关系后,相应地检查与修改对应的逻辑控制关系。
因此,在标准化软件开发流程过程中,如何针对客户的需求避免修改程序代码源文件而仅通过修改头文件完成相应的逻辑控制调整,可以作为改进逻辑控制的有效手段。
下面将结合附图详细介绍根据本发明的实施例的用于逻辑控制的方法。该方法基于存储在软件的头文件中的逻辑控制规则进行逻辑控制。
图1所示的根据本发明实施例的用于逻辑控制的方法包括如下步骤:
S110:基于至少一个逻辑控制函数中的每个逻辑控制函数生成相应的结构化模板,其中每个结构化模板包括至少一个逻辑依存列表,至少一个输入和至少一个输出;
S120:基于用户设定生成输入输出真值表;
S130:基于所输入输出真值表和特定输入信息生成掩码结果输出真值表,其中该特定输入信息指示能够单独确定输出的输入;
S140:将掩码结果输出真值表作为逻辑控制规则存储在头文件中;以及
S150:基于逻辑控制规则进行逻辑控制。
在步骤S110中,首先创建结构化模板。图2示出采用xml格式创建的模板200,也可以采用可以实现结构化数据结构的其它模板。
对于每个逻辑控制规则Logic,可以具有一个或多个逻辑控制函数,分别表示在该逻辑控制规则中的不同逻辑控制子功能。按照客户的需求,基于逻辑控制规则Logic 201中的多个逻辑控制函数可以生成如图2所示的包括多个逻辑依存列表Dependency_List 211至213的结构化模板200。因此,可以使用多个逻辑依存列表来描述逻辑控制规则的每个逻辑控制函数。其中,每个逻辑依存列表包括多个输入和多个输出,例如逻辑依存列表Dependency_List_1211包括多个输入Input_1221,Input_2222,…,Input_n 223,以及多个输出Output_1231,Output_2232,…,Output_n233。应当理解,输入Input和输出Output根据需求,可以具有相同或不同的数量。
以逻辑依存列表211为例,建立相应的结构化模板200中的逻辑依存列表211,包括如下步骤:
1)定义输入Input_1 221,Input_2 222,…,Input_n 223;
2)定义输出Outpu_1 231,Output_2 232,…,Output_n 233;
3)确定输入Input与输出Output之间的逻辑关系。
假设逻辑控制规则Logic包括至少一个(k个,k为自然数)逻辑控制函数Logic l(l=1,2,…,k),在结构化模板中所包括的与每个逻辑控制函数Logic l对应的逻辑依存关系Dependency_List包括对应的多个(m维,m为自然数)输入分量Input i(i=1,2,…,m)和多个(n维,n为自然数)输出分量Output j(j=1,2,…,n),则逻辑控制函数Logic l可以通过m维输入分量Input i和n维输出分量Output j之间的逻辑关系表征。
建立结构化模板后,方法在步骤S120中进行实例化。实例化过程基于该结构化模板和用户或客户需求中所提供的用户设定生成输入输出真值表,将逻辑控制规则Logic映射为输入输出真值表,也可以称为第一映射。
以图2中的逻辑控制函数Logic l 201所对应的逻辑依存列表Dependency_List_1211为例,对逻辑控制规则中的逻辑控制函数进行实例化首先基于用户需求设定如图3所示的输入分量和输入分量的真值。分别设定逻辑依存关系211所包括的输入分量Input_1221、Input_2 222和Input_223的值in_value 1、in_value 2和in_value 3为“1”或“0”,通过计算用户需求提供的逻辑控制规则,相应得出输出分量Output_1 231、Output_2 232和Output_233的值out_value 1、out_value 2和out_value 3的值(为“1”或“0”),其中真值“1”表示存在该输入或输出分量,真值“0”表示不存在该输入或输出分量。
表1示出根据本发明的一个实施例中的用户需求所确定的逻辑控制规则Logic中的逻辑控制函数Logic l生成的输入输出真值表。其中,真值“1”表示存在该输入分量Inputi或可以产生该输出分量Output j,真值“0”表示不存在该输入分量Input i或不能产生该输出分量Output j。每行包括由m维输入分量Input i的一种组合(包括m个真值的一维真值数组)构成的第一列和由对应的n维输出分量Output j的组合(包括n个真值的一维真值数组)构成的第二列,对应于与一个逻辑控制函数Logic l对应的逻辑依存关系Dependency_List表征的逻辑关系。对于具有k个逻辑控制函数Logic l的逻辑控制规则Logic,可以使用k行真值数组表示,每个真值数组包括两列共(m+n)个真值。这样,经过计算用户需求中的用户设定,完成了逻辑控制规则到(m+n)*k维输入输出真值表的第一映射,其中可以表征每种输入分量组合与输出分量组合的对应,决定每个输出分量的相应输入分量,每个输入分量能够影响的相应输出分量等多种逻辑对应关系。
Input 1 | Input 2 | … | Input m | Output 1 | Output 2 | … | Output n |
1 | 0 | … | 1 | 1 | 0 | … | 1 |
0 | 1 | … | 1 | 1 | 1 | … | 1 |
1 | 1 | … | 1 | 0 | 0 | … | 0 |
1 | 1 | … | 0 | 1 | 0 | … | 0 |
0 | 1 | … | 0 | 0 | 1 | … | 1 |
… | … | … | … | … | … | … | |
0 | 0 | … | 1 | 0 | 0 | … | 1 |
表1输入输出真值表
输入输出真值表作为中间结果,可以不记录在头文件中。但是,输入输出真值表可以通过计算xml模板中的逻辑依存列表Dependency_List提供的信息,例如通过程序中的算法计算来获得。
接下来,方法在步骤S130中基于输入输出真值表和特定输入信息生成掩码结果输出真值表,完成实例化后的输入输出真值表以及用户需求中关于特定输入分量的用户设定到掩码结果输出真值表之间的映射,也称为第二映射。
对于逻辑控制函数Logic l所对应的逻辑依存列表Dependency_List中的多维输入Input i,有些输入分量Input i对多维输出Output j起决定性作用。这些输入分量Inputi包括足以确定多维输出Output j的所有信息,即这些输入分量一旦被确定就不需要再考虑其它输入分量。在本文中,这种具有决定性作用的输入分量Input i被称为特定输入分量。这种特定输入分量信息利用指示掩码信息的掩码项Mask和指示结果信息的结果项Result来标记。
对于表1中的输入输出真值表,每行中的逻辑依存列表Dependency_List所对应的包括m维输入分量Input i和n维输出分量Output j的真值的真值数组均存在相对应的掩码项Mask i(i=1,2,…,n)和结果项Result i(i=1,2,…,n)。由于掩码项Mask和结果项Result指示特定输入分量信息,因此二者在每行中均为构成一列的m位真值数组,其中每个真值数组的第i位真值Mask i和Result i分别对应于输入输出真值表中的该行的逻辑依存列表的多维输入Input的每个输入分量Input i。
掩码项Mask i的真值为“1”时表示对应的输入分量Input i为起决定性作用的特定输入分量,否则该真值为“0”,表示输入分量Input i不是特定输入分量。结果项Result为该行的逻辑依存列表的多维输入Input的输入分量Input i与掩码项Mask的第i位真值Maski进行逻辑运算的结果。当结果项Result的第i位Result i的真值为“1”时,表示在该行逻辑依存关系Dependency_List中存在输入分量Input i并且该输入分量Input i为特定输入分量,真值为“0”时表示不存在输入分量Input i,或者即使存在输入分量Input i但是该输入分量也不是特定输入分量。实际上,结果项Result i指示对应的输入分量Input i能否足以确定多维输出Output。
生成结果项Result的逻辑运算例如可以是逻辑“与”。应当理解,还可以采用其它逻辑运算完成结果项的运算,例如但不限于,逻辑“异或”等。
经计算的掩码项Mask和结果项Result与相应的多维输出Output共同组成掩码结果输出真值表Table。掩码结果输出真值表Table为(2m+n)*k维真值表,每行对应于逻辑控制规则Logic包括的每个逻辑控制函数Logic l,即逻辑依存列表。每行是包括2m+n个真值的真值数组,其包括三列,分别是m维掩码项Mask i,m维结果项Result i和n维输出Outputj,分别为m位、m位和n位真值数组。k行代表逻辑控制规则Logic所包含的k个逻辑控制函数Logic l,即k个逻辑依存列表Dependency_List。掩码结果输出真值表中不包括多维输入Input,但是通过掩码项Mask和结果项Result指示的掩码信息和结果信息足以计算得出多维输入Input。
由于需要从输入输出真值表和用户设定中的特定输入分量的逻辑关系映射出掩码结果输出真值表,而且结果项Result是基于多维输入Input和掩码项Mask计算的,因此第二映射的结果,即掩码结果输出真值表可以表征客户需求的逻辑控制规则。
方法继续步骤S140,将掩码结果输出真值表作为逻辑控制规则存储在头文件中。
根据本发明的一个实施例,也可以使用诸如CESSAR CT的工具完成步骤S130和S140,即生成掩码结果输出真值表并将该真值表存储在头文件中。
CESSAR CT工具是一种开源的基于xml模板生成头文件(特别是头文件中的表Table)的工具。CESSAR CT的配置生成器(Generator)作为工具的功能模块,可以使用java语言将所创建的xml模板中的类和函数的声明、数组和常量名称等结合实例化生成的输入输出真值表生成头文件。CESSAR CT工具使用java语言操作。CESSAR CT工具的作用在于方便开发者基于xml模板实例化后的输入输出真值表以及关于特定输入分量的用户设定映射为掩码结果输出真值表(即完成第二映射)以及生成头文件,但是并不能完成从将逻辑控制规则Logic映射到输入输出真值表的第一映射。该第一映射由实例化过程完成,CESSAR CT工具中类的成员函数可以在程序中读取实例化后的信息。在使用中,可以通过在头文件中输入代码来创建xml模板,也可以通过CESSAR CT工具的相应功能模块创建xml模板。
在步骤S140完成后,方法继续执行步骤S150,基于存储在头文件中的逻辑控制规则进行逻辑控制。
基于多维输入Input获得多维输出Output可以有多种方式。例如,可以基于多维输入Input依次经过第一映射和第二映射计算和查找输入输出真值表以及掩码结果输出真值表,获得在掩码结果输出真值表Table中的逻辑依存列表所在行的第三列记录的n维输出分量Output j的信息。这种方式计算量较大,需要使用逻辑控制规则Logic中的所有逻辑控制函数Logic l、用户需求中关于特定输入分量的用户设定等信息。
在根据本发明的实施例获得存储有掩码结果输出真值表的头文件后,可以直接基于该掩码结果输出真值表中记录的掩码信息和结果信息进行逻辑控制,不再需要进行两次映射计算。例如,可以比较掩码项Mask i和结果项Result i的真值,基于其比较结果获取与输入分量Input i(特别是特定输入分量)对应的多维输出Output。当掩码项Mask i与结果项Result i的真值相等时,指示输入分量Input i存在并且该输入分量为特定输入分量,则在掩码结果输出真值表中每行的第三列可以获得与输入分量Input i对应的多维输出分量Output j(j=1,2,…,n)。这种通过比较掩码信息和结果信息或对其进行逻辑运算来查找掩码结果输出真值表获得对应多维输出的方式可以显著降低计算需求,并且仅通过查找头文件就可以完成逻辑控制的功能,而不需要再更改程序代码源文件。
在软件开发框架中,头文件与程序代码源文件还需要进行编译集成。首先定义用于处理复杂逻辑转换条件的预处理文件,该预处理过程采用通常的编译过程。然后,基于生成的头文件修改程序代码源文件的变量、常量、结构体的定义及初始化。最后,将上述文件通过与用于进行逻辑控制的处理器对应的编译器进行编译和链接,获得最终的可执行文件。在嵌入式控制中,该处理器可以是实现对应功能的嵌入式控制板(也称为目标板)的处理器。
当客户提交新的需求文件时,可以根据客户需求文件获取新的用户设定和逻辑控制规则,更新在第一映射中实例化生成的输入输出真值表和第二映射中生成的掩码结果输出真值表中的至少一项来更新软件的控制逻辑。
下面将结合在汽车电子中的安全带提醒(SeatBelt Reminder,简称SBR)模块为具体实例,介绍根据本发明实施例的用于逻辑控制的方法的应用。
首先,基于控制逻辑规则创建如图4所示的xml模板。逻辑控制规则SBR Logic 501包括多个逻辑控制函数,分别生成对应的多个逻辑依存列表Dependency List_1511,Dependency List_2512,…,Dependency List_n513等进行描述。每个逻辑依存列表Dependency List包括多维输入Input和多维输出Output,例如输入分量Input_1521,Input_2522,…,Input_n523以及输出变量Output_1531,Output_2532,…,Output_n 533等。
然后,对xml模板进行实例化,完成第一映射。实例化过程可以利用工具通过人机交互来实现。根据客户需求文档中的用户设定,可实例化多个控制逻辑规则SBR Logic,例如,可将用户设定实例化为驾驶员安全带提醒控制逻辑规则SBR_Driver、乘客安全带提醒控制逻辑规则SBR_Passenger、带占位的后排乘客的安全带提醒控制逻辑规则SBR_Rear_WithPPD、不带占位的后排乘客的安全带提醒控制逻辑规则SBR_Rear_WithOutPPD等。
参见图5中的设定输入与输出真值的示意图,与逻辑控制函数对应的逻辑依存列表Dependency List中的多维输入Input可以实例化为安全带扣紧状态输入521_1(扣紧Buckled/未扣紧Unbuckled)、座位占用情况输入522_1(占用Occupied/未占用Unoccupied)、超速情况输入523_1(超速OverSpeed/未超速Not OverSpeed)、行驶方向输入(前进Forward Gear/倒退Reverse Gear)、安全带未扣紧计时输入(超过定时TimeIsExpired/未超过定时TimeIsNotExpired)等。逻辑依存列表中的多维输出Output可以实例化为SBR指示灯显示模式输出531_1(点亮SBR Lamp On/闪烁Flash)、声音提醒输出532_1(开启声音提醒Chime On)等。基于上述实例化过程,生成输入输出真值表。
完成第一映射后,对于每个SBR控制逻辑规则,基于实例化后的逻辑依存列表Dependency List,使用CESSAR CT工具的配置产生器Generator生成头文件SBR.h。其中,头文件由多个掩码结果输出真值表Table组成,真值表Table的数量取决于逻辑依存列表Dependency List中的多维输出Output的输出分量的数量。
图6示出根据本发明实施例的输出Output仅有SBR指示灯显示模式输出SBR Lamp和声音提醒输出Chime的情况下的SBR模块头文件中的掩码结果输出真值表,头文件中包括两个真值表Table,分别为关于指示灯的SbrLampBehaviorControl[LAMP_OPTIONS_NUMBER][3]602和声音提醒的ChimeBehavoirControl[CHIME_OPTIONS_NUMBER][3]601。每个掩码结果输出真值表Table的第一列为掩码项Mask i,第二列为结果项Result i,第三列为多维输出分量Output j(也称为行为项)。输出分量Output j通过比较掩码项与结果项决定,等式如下:
Dependency List&SbrLampBehaviorControl[Index][0]?=SbrLampBehaviorControl[Index][1]
Dependency List&ChimeBehaviorControl[Index][0]?=ChimeBehaviorControl[Index][1]
当掩码项与结果项相等时,表示存在对应的多维输入Input并且该多维输入为特定输入变量,则根据真值表Table的第三列进行指示灯和声音提醒或不进行提醒。
最后,将程序代码源文件和头文件通过集成编译集成到目标系统的软件工程中。图7中的文件包括用于SBR模块的程序代码文件SBR_Handle.c、PreProcess.c(如701所示)和头文件SBR.h、SBR_Handle.h和PreProcess.h(如702所示)。其中,PreProcess.c和PreProcess.h对应于通用功能,SBR_handle.h存储关于SBR模块的掩码结果输出真值表Table,SBR.h存储逻辑依存列表Dependency List对应的类/函数的声明、数组和常量的名称等。
本文还提出用于进行逻辑控制的系统,参见图8。系统900包括模块生成单元910,第一生成单元920,第二生成单元930,存储单元940和控制单元950。模块生成单元910用于基于至少一个逻辑控制函数中的每个逻辑控制函数生成相应的结构化模板,其中每个结构化模板包括至少一个逻辑依存列表,至少一个输入和至少一个输出。第一生成单元910用于基于用户设定生成输入输出真值表,完成第一映射。第二生成单元930用于基于输入输出真值表和特定输入信息生成掩码结果输出真值表,其中特定输入信息指示能够单独确定输出的输入。存储单元940用于将掩码结果输出真值表作为逻辑控制规则存储在头文件中。控制单元950则用于基于头文件中的逻辑控制规则进行逻辑控制。
应当注意,尽管在上文详细描述中提及了进行逻辑控制的系统的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。作为模块或单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
在本发明的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序包括可执行指令,该可执行指令被例如处理器执行时可以实现上述任意一个实施例中所述的进行逻辑控制的方法的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书进行逻辑控制的方法中描述的根据本发明各种示例性实施例的步骤。
在本发明的示例性实施例中,还提供一种电子设备,该电子设备可以包括处理器,以及用于存储所述处理器的可执行指令的存储器。其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一个实施例中的进行逻辑控制的方法的步骤。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
通过采用本发明的实施例中所提及的方法、系统和存储介质,可以依据客户的需求文档,配置逻辑控制功能的工具,针对不同的逻辑控制功能只需进行简单配置即可实现代码的快速生成,克服了在不同应用项目的软件开发中需要通过手动编写代码来修改大量C文件并且重复执行标准化流程导致低代码可靠性和高人力成本的缺陷,缩短了开发周期,提高了代码可靠性和效率。鉴于此,本发明实施例中的方法和系统还可以扩展到C/C++软件开发环境之外的用于逻辑控制的其它软件开发环境,特别是应用于嵌入式软件的开发环境中。
本领域技术人员在考虑说明书及实践这里公开的内容后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由所附的权利要求指出。
Claims (12)
1.一种用于进行逻辑控制的方法,该方法基于存储在软件的头文件中的逻辑控制规则进行逻辑控制,所述方法包括:
基于至少一个逻辑控制函数中的每个逻辑控制函数生成相应的结构化模板,其中每个所述结构化模板包括至少一个逻辑依存列表,至少一个输入和至少一个输出;
基于用户设定生成输入输出真值表;
基于所述输入输出真值表和特定输入信息生成掩码结果输出真值表,其中所述特定输入信息指示能够单独确定所述输出的所述输入;
将所述掩码结果输出真值表作为逻辑控制规则存储在所述头文件中;以及
基于所述逻辑控制规则进行逻辑控制。
2.如权利要求1所述的方法,其中,基于至少一个逻辑控制函数中的每个逻辑控制函数建立相应的结构化模板包括:
定义所述输入;
定义所述输出;以及
确定所述输入与所述输出之间的逻辑关系。
3.如权利要求1所述的方法,其中,基于用户设定生成输入输出真值表包括:
基于所述结构化模板以及所述用户设定确定所述输入与所述输出之间的对应关系;
基于所述输入与所述输出之间的对应关系生成输入输出真值表。
4.如权利要求1所述的方法,其中,基于所述输入输出真值表和特定输入信息生成掩码结果输出真值表包括:
基于所述输入输出真值表和所述用户设定中的至少一项生成掩码信息和结果信息,其中所述掩码信息指示所述特定输入信息,所述结果信息基于所述掩码信息和所述输入生成;以及
基于所述掩码信息、所述结果信息以及与所述掩码信息对应的输出之间的对应关系生成所述掩码结果输出真值表。
5.如权利要求4所述的方法,其中,所述结果信息通过对所述掩码信息和所述输入进行与运算生成。
6.如权利要求4所述的方法,其中,基于所述逻辑控制规则进行逻辑控制包括:
基于所述掩码结果输出真值表中记录的所述掩码信息和所述结果信息进行逻辑控制。
7.如权利要求6所述的方法,其中,基于所述逻辑控制规则进行逻辑控制进一步包括:
当所述掩码信息与对应的所述结果信息相等时,基于与所述掩码信息对应的所述输出进行逻辑控制。
8.如权利要求1至7中任一项所述的方法,其中,通过所述用户设定更新所述结构化模板和所述输入输出真值表中的至少一项。
9.如权利要求1至7中任一项所述的方法,其中,所述软件用于嵌入式系统。
10.一种用于进行逻辑控制的系统,包括软件的头文件,该系统被设置为基于存储在所述头文件中的逻辑控制规则进行逻辑控制,所述系统包括:
模板生成单元,其被设置为基于至少一个逻辑控制函数中的每个逻辑控制函数生成相应的结构化模板,其中每个所述结构化模板包括至少一个逻辑依存列表,至少一个输入和至少一个输出;
第一生成单元,其被设置为基于用户设定生成输入输出真值表;
第二生成单元,其被设置为基于所述输入输出真值表和特定输入信息生成掩码结果输出真值表,其中所述特定输入信息指示能够单独确定所述输出的所述输入;
存储单元,其被设置为将所述掩码结果输出真值表作为逻辑控制规则存储在所述头文件中;以及
控制单元,其被设置为基于所述逻辑控制规则进行逻辑控制。
11.一种计算机可读存储介质,其上存储有计算机程序,该计算机程序包括可执行指令,当该可执行指令被处理器执行时,实施如权利要求1至9中任一项所述的方法。
12.一种电子设备,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器设置为执行所述可执行指令以实施如权利要求1至9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811265327.6A CN111104100B (zh) | 2018-10-29 | 2018-10-29 | 进行逻辑控制的方法、系统和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811265327.6A CN111104100B (zh) | 2018-10-29 | 2018-10-29 | 进行逻辑控制的方法、系统和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111104100A CN111104100A (zh) | 2020-05-05 |
CN111104100B true CN111104100B (zh) | 2023-10-03 |
Family
ID=70420130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811265327.6A Active CN111104100B (zh) | 2018-10-29 | 2018-10-29 | 进行逻辑控制的方法、系统和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111104100B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113362111B (zh) * | 2021-06-04 | 2023-07-28 | 北京百度网讯科技有限公司 | 一种内容发送方法、装置及电子设备 |
CN117055898B (zh) * | 2023-08-30 | 2024-04-02 | 镁佳(北京)科技有限公司 | 一种代码自动生成方法、装置、设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510153A (zh) * | 2009-03-20 | 2009-08-19 | 华亚微电子(上海)有限公司 | 数据转换逻辑单元 |
-
2018
- 2018-10-29 CN CN201811265327.6A patent/CN111104100B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510153A (zh) * | 2009-03-20 | 2009-08-19 | 华亚微电子(上海)有限公司 | 数据转换逻辑单元 |
Non-Patent Citations (1)
Title |
---|
Shuguang Zhao等.Reversible Logic Synthesis Method based on Genetic Algorithm and its CUDA Parallel Implementation.Proceedings of the 9th International Conference on Computer and Automation Engineering.2017,第169-173页. * |
Also Published As
Publication number | Publication date |
---|---|
CN111104100A (zh) | 2020-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8302078B2 (en) | Lazy evaluation of geometric definitions of objects within procedural programming environments | |
CN111104100B (zh) | 进行逻辑控制的方法、系统和存储介质 | |
CN113849182A (zh) | 用以基于图注意力网络分析和增强软件的系统 | |
US8671386B2 (en) | Program generating apparatus and block diagram generating apparatus | |
US20040004612A1 (en) | Method and system for processing graphics simulation data | |
JP2008071348A (ja) | 位置選択システム及び方法 | |
CN118092890A (zh) | 应用开发方法、电子设备、存储介质及程序产品 | |
CN116663491B (zh) | 基于bdd求解功能覆盖组条件约束语句的方法、设备和介质 | |
CN113780365A (zh) | 样本生成方法和装置 | |
US6173247B1 (en) | Method and apparatus for accurately modeling digital signal processors | |
US20100333070A1 (en) | Multiple ECU Software-In-The-Loop Simulation Environment | |
Johnson et al. | POWERLIB: SAS/IML software for computing power in multivariate linear models | |
CN111984182B (zh) | 一种组合键识别方法,装置,设备和可读存取介质 | |
JP6752393B1 (ja) | 設計支援システムおよび設計支援プログラム | |
CN112882955A (zh) | 一种测试案例推荐方法、装置和电子设备 | |
CN115114690B (zh) | 一种飞行工程算法的编排方法、编排装置和电子设备 | |
US20220414573A1 (en) | Method and system for semi-automatic completion of an engineering project | |
EP4318259A1 (en) | Method for operating a mapping device, computer program and storage medium | |
US11640732B2 (en) | System and method for generating diagnostic procedure for vehicle fault based on most probable causes | |
US11934300B2 (en) | Reducing computing power for generating test scenario files for decision models | |
US20230086862A1 (en) | Program generation apparatus, program generation method and program | |
US20240256901A1 (en) | Information processing apparatus, information processing method and non-transitory computer-readable storage medium | |
WO2022030134A1 (ja) | 情報処理装置、情報処理方法、プログラム及び記録媒体 | |
EP4428758A1 (en) | Method and apparatus for processing neural network feature map by using a plurality of accelerators | |
US20230316731A1 (en) | Information processing apparatus, information processing method, and non-transitory computer-readable storage medium |
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 |