CN108304192B - 一种自动生成can交互层代码的方法及系统 - Google Patents

一种自动生成can交互层代码的方法及系统 Download PDF

Info

Publication number
CN108304192B
CN108304192B CN201710681421.9A CN201710681421A CN108304192B CN 108304192 B CN108304192 B CN 108304192B CN 201710681421 A CN201710681421 A CN 201710681421A CN 108304192 B CN108304192 B CN 108304192B
Authority
CN
China
Prior art keywords
signal line
pack
module
signals
database 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
Application number
CN201710681421.9A
Other languages
English (en)
Other versions
CN108304192A (zh
Inventor
刁志辉
陈秋婷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Pride New Energy Battery Co Ltd
Original Assignee
Beijing Pride New Energy Battery Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Pride New Energy Battery Co Ltd filed Critical Beijing Pride New Energy Battery Co Ltd
Priority to CN201710681421.9A priority Critical patent/CN108304192B/zh
Publication of CN108304192A publication Critical patent/CN108304192A/zh
Application granted granted Critical
Publication of CN108304192B publication Critical patent/CN108304192B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及一种自动生成CAN交互层代码的方法及系统,该方法包括:获取预先定义的数据类型,以及预先编写的CAN数据库文件;确定CAN数据库文件中包含的报文帧及报文帧的数量;调用与报文帧的数量相同的CAN_Pack模块,通过CAN_Pack模块处理报文帧中的各字节的信号,并将信号根据数据类型存储在预设文件夹中;对CAN_Pack模块进行处理和封装,得到各CAN Pack模块的原子子模型;通过全部原子子模型调用预设文件夹中的信号自动生成代码。本发明提供的一种自动生成CAN交互层代码的方法及系统,避免了人力资源和物力资源的浪费,减少了开发人员的工作量,提高了开发效率,降低了开发过程中的错误率。

Description

一种自动生成CAN交互层代码的方法及系统
技术领域
本发明涉及数据处理领域,尤其涉及一种自动生成CAN交互层代码的方法及系统。
背景技术
在纯电动汽车控制系统中,BMS(Battery Management System,电池管理系统)与其他控制器之间大多采用CAN(Controller Area Network,控制器局域网络)的方式进行通信,而CAN网络中的信息需要通过CAN通信协议进行解析才能获取到具有实际物理意义的信号,在实际应用中往往将CAN通信协议定义成CAN数据库文件的格式,通常通过手写代码的方式开发BMS软件。
而BMS与其他控制器交互的信息比较多,易造成CAN数据库文件中信号量繁多,手写C代码的开发过程中很容易出错。随着CAN数据库文件的增多,CAN交互层软件的开发难度和工作量随之增加,导致开发周期变长。同时,开发过程中,CAN通信协议和CAN数据库文件需要反复修改,造成人力和物力的浪费,开发效率低下。
发明内容
本发明所要解决的技术问题是针对现有技术的不足,提供一种自动生成CAN交互层代码的方法及系统。
本发明解决上述技术问题的技术方案如下:
一种自动生成CAN交互层代码的方法,包括以下步骤:
步骤1,获取预先定义的数据类型,以及预先编写的CAN数据库文件;
步骤2,确定所述CAN数据库文件中包含的报文帧及所述报文帧的数量;
步骤3,调用与所述报文帧的数量相同的CAN_Pack模块,所述CAN_Pack模块和所述报文帧一一对应,通过所述CAN_Pack模块处理所述报文帧中的各字节的信号,并将所述信号根据所述数据类型存储在预设文件夹中;
步骤4,对所述CAN_Pack模块进行处理和封装,得到各所述CAN_Pack模块的原子模型;
步骤5,通过全部所述原子模型调用所述预设文件夹中的信号自动生成所述代码。
本发明的有益效果是:本发明提供的一种自动生成CAN交互层代码的方法,通过CAN_Pack模块对预先定义的数据类型以及预先编写的CAN数据库文件进行处理,能够通过自动生成C代码的方法来开发BMS软件,避免了人力资源和物力资源的浪费,减少了开发人员的工作量,提高了开发效率,降低了开发过程中的错误率。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步地,步骤3中,具体包括:
步骤3.1,调用与所述报文帧的数量相同的CAN_Pack模块,所述CAN_Pack模块和所述报文帧一一对应;
步骤3.2,将各所述CAN_Pack模块设置为通过所述CAN数据库文件进行定义的方式;
步骤3.3,设置所述CAN数据库文件的存储路径;
步骤3.4,根据所述存储路径调用所述CAN数据库文件,通过所述CAN_Pack模块处理所述报文帧中的各字节的信号,并将所述信号根据所述数据类型存储在预设文件夹中。
进一步地,步骤3.4中,具体包括:
根据所述存储路径调用所述CAN数据库文件,通过所述CAN_Pack模块处理所述报文帧中的各字节的信号,依次判断各所述报文帧中各字节的信号数量,当所述信号数量大于1时,将所述信号根据所述数据类型存储在预设文件夹中。
进一步地,步骤4中,具体包括:
步骤4.1,当各所述CAN_Pack模块的输入端口和输出端口分别通过输入信号线和输出信号线与inport模块和outport模块连接后,分别设置所述输入信号线和所述输出信号线的属性;
步骤4.2,将各所述CAN_Pack模块和通过所述输入信号线和所述输出信号线与其连接的所述inport模块和所述outport模块进行封装,得到各所述CAN_Pack模块的原子模型。
进一步地,步骤4.1中,所述分别设置所述输入信号线和所述输出信号线的属性具体包括:
步骤4.1.1,判断所述输入信号线的占用位数,当所述占用位数小于8位时,执行步骤4.1.2,当所述占用位数大于8位时,执行步骤4.1.3;
步骤4.1.2,将输入所述输入信号线的信号的格式设置成所述数据类型;
步骤4.1.3,将输入所述输入信号线的信号的格式设置成Exported global类型;
步骤4.1.4,设置所述输出信号线的名称。
本发明解决上述技术问题的另一种技术方案如下:
一种自动生成CAN交互层代码的系统,包括:
获取单元,用于获取预先定义的数据类型,以及预先编写的CAN数据库文件;
识别单元,用于确定所述CAN数据库文件中包含的报文帧及所述报文帧的数量;
处理单元,用于调用与所述报文帧的数量相同的CAN_Pack模块,所述CAN_Pack模块和所述报文帧一一对应,通过所述CAN_Pack模块处理所述报文帧中的各字节的信号,并将所述信号根据所述数据类型存储在预设文件夹中;
封装单元,用于对所述CAN_Pack模块进行处理和封装,得到各所述CAN_Pack模块的原子模型;
生成单元,用于通过全部所述原子模型调用所述预设文件夹中的信号自动生成所述代码。
进一步地,所述处理单元具体包括:
调用子单元,用于调用与所述报文帧的数量相同的CAN_Pack模块,所述CAN_Pack模块和所述报文帧一一对应;
第一设置子单元,用于将各所述CAN_Pack模块设置为通过所述CAN数据库文件进行定义的方式,并设置所述CAN数据库文件的存储路径;
处理子单元,用于根据所述存储路径调用所述CAN数据库文件,通过所述CAN_Pack模块处理所述报文帧中的各字节的信号,并将所述信号根据所述数据类型存储在预设文件夹中。
进一步地,所述处理子单元具体用于根据所述存储路径调用所述CAN数据库文件,通过所述CAN_Pack模块处理所述报文帧中的各字节的信号,依次判断各所述报文帧中各字节的信号数量,当所述信号数量大于1时,将所述信号根据所述数据类型存储在预设文件夹中。
进一步地,所述封装单元具体包括:
第二设置子单元,用于当各所述CAN_Pack模块的输入端口和输出端口分别通过输入信号线和输出信号线与inport模块和outport模块连接后,分别设置所述输入信号线和所述输出信号线的属性;
封装子单元,用于将各所述CAN_Pack模块和通过所述输入信号线和所述输出信号线与其连接的所述inport模块和所述outport模块进行封装,得到各所述CAN_Pack模块的原子模型。
进一步地,所述第二设置子单元具体用于判断所述输入信号线的占用位数,当所述占用位数小于8位时,将输入所述输入信号线的信号的格式设置成所述数据类型;当所述占用位数大于8位时,将输入所述输入信号线的信号的格式设置成Exported global类型;并设置所述输出信号线的名称。
本发明附加的方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明实践了解到。
附图说明
图1为本发明实施例一提供的一种自动生成CAN交互层代码的方法的流程示意图;
图2为本发明实施例二提供的一种自动生成CAN交互层代码的方法的流程示意图;
图3为本发明实施例三提供的一种自动生成CAN交互层代码的系统的结构框架图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图1所示,为本发明实施例一提供的一种自动生成CAN交互层代码的方法的流程示意图,通过simulink中的CAN_Pack模块来生成CAN交互代码,下面结合图1进行详细说明,该方法包括以下步骤:
S1,获取预先定义的数据类型,以及预先编写的CAN数据库文件。这里的数据类型指的是复合结构类型,例如BMSFault_Byte0.Bit.InnerCANErr形式,CAN数据库文件是按照通信协议预先编写的,通信协议指的是软件开发过程中BMS和整车控制器进行通信的通信协议。
需要说明的是,由于simulink中内置的数据类型不支持复合结构类型这一数据类型,因此,需要自定义数据类型,这里将该数据类型命名为StructExp,StructExp的结构如下:
typedef union{
unsigned char byte;
struct{
byte InnerCANErr:1;
byte ExternCANErr:1;
byte DischaOverCur:1;
byte ChaOverCur:1;
byte PreChaFalse:1;
byte BatOpenCir:1;
byte F6_7_Reser_1:2;
}Bit;
}BMSFault_BYTE0;
extern BMSFault_BYTE0 BMSFault_Byte0;
可以通过TLC语言和Custom Storage Class Design工具来实现对StructExp的定义。
S2,确定CAN数据库文件中包含的报文帧及报文帧的数量。
例如,可以通过MatLab的M语言脚本读取CAN数据库文件,确定CAN数据库文件中包含的报文帧及报文帧的数量。
S3,调用与报文帧的数量相同的CAN_Pack模块,CAN_Pack模块和报文帧一一对应,可以将CAN_Pack模块调到simulink空的模型文件中,以便后续处理。
再通过CAN_Pack模块处理报文帧中的各字节的信号,这里是对每一帧报文中的每一个字节中的信号进行处理。
处理完将信号按预设的StructExp数据类型存储在预设文件夹中,例如,可以存储在自定义的.H(can_union.h)文件,这样做是为了方便BMS中其他模块的引用。
S4,对CAN_Pack模块进行处理和封装,得到各CAN_Pack模块的原子模型,例如,对CAN_Pack模块额处理和封装可以通过simulink实现。
S5,通过全部原子模型调用预设文件夹中的信号自动生成CAN交互代码。
本实施例提供的一种自动生成CAN交互层代码的方法,通过CAN_Pack模块对预先定义的数据类型以及预先编写的CAN数据库文件进行处理,能够通过自动生成C代码的方法来开发BMS软件,避免了人力资源和物力资源的浪费,减少了开发人员的工作量,提高了开发效率,降低了开发过程中的错误率。
如图2所示,为本发明实施例二提供的一种自动生成CAN交互层代码的方法的流程示意图,在实施例一的基础上,对本发明进行更详细的说明,该方法包括以下步骤:
S1,获取预先定义的数据类型,以及预先编写的CAN数据库文件。这里的数据类型指的是复合结构类型,例如BMSFault_Byte0.Bit.InnerCANErr形式,CAN数据库文件是按照通信协议预先编写的,通信协议指的是软件开发过程中BMS和整车控制器进行通信的通信协议。
S2,确定CAN数据库文件中包含的报文帧及报文帧的数量。
例如,可以通过MatLab的M语言脚本读取CAN数据库文件,确定CAN数据库文件中包含的报文帧及报文帧的数量。
S3,调用与报文帧的数量相同的CAN_Pack模块,CAN_Pack模块和报文帧一一对应,可以将CAN_Pack模块调到simulink空的模型文件中,以便后续处理。
再通过CAN_Pack模块处理报文帧中的各字节的信号,这里是对每一帧报文中的每一个字节中的信号进行处理。
处理完将信号按预设的StructExp数据类型存储在预设文件夹中,例如,可以存储在自定义的.H(can_union.h)文件,这样做是为了方便BMS中其他模块的引用。
具体地,步骤S3可以细化为以下几个步骤:
S31,调用与报文帧的数量相同的CAN_Pack模块,CAN_Pack模块和报文帧一一对应,也就是说,每个CAN_Pack模块对应地处理一个报文帧。
S32,将各CAN_Pack模块设置为通过CAN数据库文件进行定义的方式,即通过CAN数据库文件来进行解析。
S33,设置CAN数据库文件的存储路径。
S34,根据存储路径调用CAN数据库文件,通过CAN_Pack模块处理报文帧中的各字节的信号,并将信号根据数据类型存储在预设文件夹中,这里对各字节新号的处理是根据CAN数据库文件解析的。
具体地,S34中,根据存储路径调用CAN数据库文件,通过CAN_Pack模块处理报文帧中的各字节的信号,依次判断各报文帧中各字节的信号数量,当信号数量大于1时,也就是说当一个字节中包含多个信号时,将信号根据数据类型存储在预设文件夹中。
当信号数量小于或等于1时,也就是说当一个字节中包含一个信号,或多个字节组成一个信号时,则以此信号名为名称定义一个全局变量。
S4,对CAN_Pack模块进行处理和封装,得到各CAN_Pack模块的原子模型,例如,对CAN_Pack模块额处理和封装可以通过simulink实现。
S4中,具体包括:
S41,当各CAN_Pack模块的输入端口和输出端口分别通过输入信号线和输出信号线与inport模块和outport模块连接后,分别设置输入信号线和输出信号线的属性。
下面对步骤S41进行详细说明。
首先判断输入信号线的占用位数,当占用位数小于8位时,将输入输入信号线的信号的格式设置成预先定义的Struc_Exp数据类型。
当占用位数大于8位时,例如,占用位数可以为8位、16位、32位,将输入输入信号线的信号的格式设置成Exported global类型,数据类型根据CAN数据库文件中信号的分辨率、最大值、最小值进行设置。
最后设置输出信号线的名称。由于CAN_Pack模块的输出信号为MatLab内建数据类型(CAN_MESSGAE类型),本处仅对信号的名称进行设置。信号线的名称设置为与之相对应的CAN数据库文件中的报文名加后缀。
S42,将各CAN_Pack模块和通过输入信号线和输出信号线与其连接的inport模块和outport模块进行封装,得到各CAN_Pack模块的原子模型。再对原子模型的代码生成设置选项进行设置:将模块生成的函数类型设置为nonreusable,并设置函数名称为相应CAN数据库文件报文名称加前缀,例如model。
S5,通过全部原子模型调用预设文件夹中的信号自动生成CAN交互代码。将CAN_Pack模块处理完毕后,就可以通过Simulink的代码生成功能生成CAN交互层代码了。
如图3所示,为本发明实施例三提供的一种自动生成CAN交互层代码的系统的结构框架图,该系统包括:获取单元1、识别单元2、处理单元3、封装单元4和生成单元5,下面分别对这些单元的连接关系与功能进行解释与说明。
获取单元1,用于获取预先定义的数据类型,以及预先编写的CAN数据库文件。
识别单元2,用于确定CAN数据库文件中包含的报文帧及报文帧的数量。
处理单元3,用于调用与报文帧的数量相同的CAN_Pack模块,CAN_Pack模块和报文帧一一对应,通过CAN_Pack模块处理报文帧中的各字节的信号,并将信号根据数据类型存储在预设文件夹中。
下面对处理单元3的结构进行进一步说明。
优选地,处理单元3具体包括:
调用子单元31,用于调用与报文帧的数量相同的CAN_Pack模块,CAN_Pack模块和报文帧一一对应。
第一设置子单元32,用于将各CAN_Pack模块设置为通过CAN数据库文件进行定义的方式,并设置CAN数据库文件的存储路径;
处理子单元33,用于根据存储路径调用CAN数据库文件,通过CAN_Pack模块处理报文帧中的各字节的信号,并将信号根据数据类型存储在预设文件夹中。
优选地,处理子单元33具体用于根据存储路径调用CAN数据库文件,通过CAN_Pack模块处理报文帧中的各字节的信号,依次判断各报文帧中各字节的信号数量,当信号数量大于1时,将信号根据数据类型存储在预设文件夹中。
封装单元4,用于对CAN_Pack模块进行处理和封装,得到各CAN_Pack模块的原子模型。
下面对封装单元4的结构进行进一步说明。
优选地,封装单元4具体包括:
第二设置子单元41,用于当各CAN_Pack模块的输入端口和输出端口分别通过输入信号线和输出信号线与inport模块和outport模块连接后,分别设置输入信号线和输出信号线的属性。
优选地,第二设置子单元41具体用于判断输入信号线的占用位数,当占用位数小于8位时,将输入输入信号线的信号的格式设置成数据类型;当占用位数大于8位时,将输入输入信号线的信号的格式设置成Exported global类型;并设置输出信号线的名称。
封装子单元42,用于将各CAN_Pack模块和通过输入信号线和输出信号线与其连接的inport模块和outport模块进行封装,得到各CAN Pack模块的原子模型。
生成单元5,用于通过全部原子模型调用预设文件夹中的信号自动生成代码。
读者应理解,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (8)

1.一种自动生成CAN交互层代码的方法,其特征在于,包括以下步骤:
步骤1,获取预先定义的数据类型,以及预先编写的CAN数据库文件;
步骤2,确定所述CAN数据库文件中包含的报文帧及所述报文帧的数量;
步骤3,调用与所述报文帧的数量相同的CAN_Pack模块,所述CAN_Pack模块和所述报文帧一一对应,通过所述CAN_Pack模块处理所述报文帧中的各字节的信号,并将所述信号根据所述数据类型存储在预设文件夹中;
步骤4,对所述CAN_Pack模块进行处理和封装,得到各所述CAN_Pack模块的原子模型;
步骤5,通过全部所述原子模型调用所述预设文件夹中的信号自动生成所述代码;
其中,步骤4中,具体包括:
步骤4.1,当各所述CAN_Pack模块的输入端口和输出端口分别通过输入信号线和输出信号线与inport模块和outport模块连接后,分别设置所述输入信号线和所述输出信号线的属性;
步骤4.2,将各所述CAN_Pack模块和通过所述输入信号线和所述输出信号线与其连接的所述inport模块和所述outport模块进行封装,得到各所述CAN_Pack模块的原子模型。
2.根据权利要求1所述的方法,其特征在于,步骤3中,具体包括:
步骤3.1,调用与所述报文帧的数量相同的CAN_Pack模块,所述CAN_Pack模块和所述报文帧一一对应;
步骤3.2,将各所述CAN_Pack模块设置为通过所述CAN数据库文件进行定义的方式;
步骤3.3,设置所述CAN数据库文件的存储路径;
步骤3.4,根据所述存储路径调用所述CAN数据库文件,通过所述CAN_Pack模块处理所述报文帧中的各字节的信号,并将所述信号根据所述数据类型存储在预设文件夹中。
3.根据权利要求2所述的方法,其特征在于,步骤3.4中,具体包括:
根据所述存储路径调用所述CAN数据库文件,通过所述CAN_Pack模块处理所述报文帧中的各字节的信号,依次判断各所述报文帧中各字节的信号数量,当所述信号数量大于1时,将所述信号根据所述数据类型存储在预设文件夹中。
4.根据权利要求1所述的方法,其特征在于,所述分别设置所述输入信号线和所述输出信号线的属性具体包括:
步骤4.1.1,判断所述输入信号线的占用位数,当所述占用位数小于8位时,执行步骤4.1.2,当所述占用位数大于8位时,执行步骤4.1.3;
步骤4.1.2,将输入所述输入信号线的信号的格式设置成所述数据类型;
步骤4.1.3,将输入所述输入信号线的信号的格式设置成Exported global类型;
步骤4.1.4,设置所述输出信号线的名称。
5.一种自动生成CAN交互层代码的系统,其特征在于,包括:
获取单元,用于获取预先定义的数据类型,以及预先编写的CAN数据库文件;
识别单元,用于确定所述CAN数据库文件中包含的报文帧及所述报文帧的数量;
处理单元,用于调用与所述报文帧的数量相同的CAN_Pack模块,所述CAN_Pack模块和所述报文帧一一对应,通过所述CAN_Pack模块处理所述报文帧中的各字节的信号,并将所述信号根据所述数据类型存储在预设文件夹中;
封装单元,用于对所述CAN_Pack模块进行处理和封装,得到各所述CAN_Pack模块的原子模型;
生成单元,用于通过全部所述原子模型调用所述预设文件夹中的信号自动生成所述代码;
其中,所述封装单元具体包括:
第二设置子单元,用于当各所述CAN_Pack模块的输入端口和输出端口分别通过输入信号线和输出信号线与inport模块和outport模块连接后,分别设置所述输入信号线和所述输出信号线的属性;
封装子单元,用于将各所述CAN_Pack模块和通过所述输入信号线和所述输出信号线与其连接的所述inport模块和所述outport模块进行封装,得到各所述CAN_Pack模块的原子模型。
6.根据权利要求5所述的系统,其特征在于,所述处理单元具体包括:
调用子单元,用于调用与所述报文帧的数量相同的CAN_Pack模块,所述CAN_Pack模块和所述报文帧一一对应;
第一设置子单元,用于将各所述CAN_Pack模块设置为通过所述CAN数据库文件进行定义的方式,并设置所述CAN数据库文件的存储路径;
处理子单元,用于根据所述存储路径调用所述CAN数据库文件,通过所述CAN_Pack模块处理所述报文帧中的各字节的信号,并将所述信号根据所述数据类型存储在预设文件夹中。
7.根据权利要求6所述的系统,其特征在于,所述处理子单元具体用于根据所述存储路径调用所述CAN数据库文件,通过所述CAN_Pack模块处理所述报文帧中的各字节的信号,依次判断各所述报文帧中各字节的信号数量,当所述信号数量大于1时,将所述信号根据所述数据类型存储在预设文件夹中。
8.根据权利要求5所述的系统,其特征在于,所述第二设置子单元具体用于判断所述输入信号线的占用位数,当所述占用位数小于8位时,将输入所述输入信号线的信号的格式设置成所述数据类型;当所述占用位数大于8位时,将输入所述输入信号线的信号的格式设置成Exported global类型;并设置所述输出信号线的名称。
CN201710681421.9A 2017-08-10 2017-08-10 一种自动生成can交互层代码的方法及系统 Active CN108304192B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710681421.9A CN108304192B (zh) 2017-08-10 2017-08-10 一种自动生成can交互层代码的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710681421.9A CN108304192B (zh) 2017-08-10 2017-08-10 一种自动生成can交互层代码的方法及系统

Publications (2)

Publication Number Publication Date
CN108304192A CN108304192A (zh) 2018-07-20
CN108304192B true CN108304192B (zh) 2021-06-15

Family

ID=62869240

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710681421.9A Active CN108304192B (zh) 2017-08-10 2017-08-10 一种自动生成can交互层代码的方法及系统

Country Status (1)

Country Link
CN (1) CN108304192B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110806855B (zh) * 2019-10-30 2021-06-08 中山大学 一种can设备开发系统及其方法
CN111008018A (zh) * 2019-12-04 2020-04-14 东风电驱动系统有限公司 一种can信号解包处理方法及系统
CN111123764A (zh) * 2019-12-04 2020-05-08 东风电驱动系统有限公司 一种can信号打包处理方法及系统
CN113741879B (zh) * 2021-08-30 2022-03-22 北京宇信科技集团股份有限公司 一种可视化开发平台、方法、介质和设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013048468A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Instruction and logic to perform dynamic binary translation
CN103777934A (zh) * 2012-10-23 2014-05-07 广州汽车集团股份有限公司 一种基于matlab生成控制器can交互层的方法及系统
CN104850027A (zh) * 2014-08-13 2015-08-19 北汽福田汽车股份有限公司 一种can数据接口建模自动生成方法及系统
CN105703990A (zh) * 2014-11-28 2016-06-22 联创汽车电子有限公司 车载控制器can通信报文解析方法和构建方法
CN106950864A (zh) * 2017-04-11 2017-07-14 重庆长安汽车股份有限公司 一种整车控制器的can通信程序生成方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013048468A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Instruction and logic to perform dynamic binary translation
CN103777934A (zh) * 2012-10-23 2014-05-07 广州汽车集团股份有限公司 一种基于matlab生成控制器can交互层的方法及系统
CN104850027A (zh) * 2014-08-13 2015-08-19 北汽福田汽车股份有限公司 一种can数据接口建模自动生成方法及系统
CN105703990A (zh) * 2014-11-28 2016-06-22 联创汽车电子有限公司 车载控制器can通信报文解析方法和构建方法
CN106950864A (zh) * 2017-04-11 2017-07-14 重庆长安汽车股份有限公司 一种整车控制器的can通信程序生成方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"MATLAB simulink CAN消息帧收发与代码生成的实现";小灰笔记_Grey;《http://blog.sina.com.cn/s/blog_627927570102w6uu.html》;20160204;第1-4页 *

Also Published As

Publication number Publication date
CN108304192A (zh) 2018-07-20

Similar Documents

Publication Publication Date Title
CN108304192B (zh) 一种自动生成can交互层代码的方法及系统
CN108280023B (zh) 任务执行方法、装置和服务器
CN111428462A (zh) 通讯协议模板构建的方法及终端设备
CN112667415B (zh) 数据调用方法、装置、可读存储介质及电子设备
CN109828759A (zh) 代码编译方法、装置、计算机装置及存储介质
CN113806037A (zh) 服务的调用方法、装置、存储介质及电子设备
CN111506579A (zh) 一种智能合约代码的生成方法、程序及设备
CN103425692A (zh) 数据导出方法和装置
CN107688456B (zh) 文件生成方法、设备以及计算机可读存储介质
CN115136256A (zh) 信息处理方法、装置、计算设备、介质和计算机程序
CN109542419B (zh) 一种can信息处理软件开发的方法、系统及设备
CN114048415A (zh) 表单生成方法及装置、电子设备和计算机可读存储介质
CN112181417B (zh) 前端研发配置装置及方法
CN109800539B (zh) 一种仿真测试方法及系统
CN115065945B (zh) 短信链接生成方法、装置、电子设备及存储介质
CN109905253B (zh) 一种日志信息采集方法及装置
CN115935909A (zh) 一种文件生成方法、装置及电子设备
CN106648912A (zh) 数据采集平台中数据处理的模块化方法及装置
CN105868092B (zh) 一种日志文件的处理方法及装置
CN111124378B (zh) 代码生成方法和装置
CN114171107A (zh) 固态硬盘vpd信息的检测方法、装置、设备及存储介质
CN107329880A (zh) 一种java环境中动态获取日志实例的方法及系统
CN112541327A (zh) 一种数据读取方法、装置、电子设备及存储介质
CN114296674B (zh) 屏幕适配方法、装置、计算机设备及存储介质
CN112380829B (zh) 一种文档生成方法及装置

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