System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于DBC的协议层代码生成装置制造方法及图纸_技高网

一种基于DBC的协议层代码生成装置制造方法及图纸

技术编号:41363649 阅读:3 留言:0更新日期:2024-05-20 10:12
本发明专利技术涉及一种基于DBC的协议层代码生成装置,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现前述所述的基于DBC的协议层代码生成方法,所述方法包括:获取DBC文件并遍历DBC文件以获取DBC文件信息;基于所述DBC文件及DBC文件信息,依据预先输入的目标节点选择项和大小端选择项,生成协议层代码文件。方法以DBC文件作为输入文件,支持多路CAN总线的代码实现,适用于标准CAN的标准帧,可高效率生成协议层代码,开发过程减少甚至避免了手动编写代码,减少了代码错误率,降低了人力和时间成本,缩短了开发周期。

【技术实现步骤摘要】

本专利技术主要关于计算机软件开发,特别是关于一种基于dbc的协议层代码生成装置。


技术介绍

1、can是control area network的缩写,即控制局域网,是一种用于实时应用的串行通讯协议总线,它可以使用双绞线来传输信号,是世界上应用最广泛的现场总线之一,can总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,can协议用于汽车中各种不同元件之间的通信,以此取代昂贵而笨重的配电线束。由于can总线协议本身的特点,其应用范围目前已不再局限于汽车行业,而是向自动控制、航空航天、航海、过程工业、纺织机械、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。can已经形成国际标准,并已被公认为几种最有前途的现场总线之一。

2、can协议通信是汽车各个电控单元之间最基本也是最重要的通讯方式,而各个通信节点及其信号的基本物理信息都包含在多个can数据库文件即dbc中,dbc即databasecan的缩写,其代表的是can的数据库文件;在这个文件中把can通讯的信息定义的非常完整清楚,而can网络的通讯就是依据这个文件的描述进行的,所以dbc文件的作用非常强大,正是因为有了它才可以使得整个can网路的节点控制器无差错的协同同步开发。can信号的适配是基础软件开发中的一个重要工作。然而,对于不同的项目或者对于相同的项目的不同开发人员,can通信协议可能存在较大差异,can通信代码设计也各有不同,因此随着设计的长时间持续和深入,代码版本会越来越多并且缺少统一的规范和标准,不利于项目开发、项目管控及后续设计的延展。

3、前述
技术介绍
知识的记载旨在帮助本领域普通技术人员理解与本专利技术较为接近的现有技术,同时便于对本申请专利技术构思及技术方案的理解,应当明确的是,在没有明确的证据表明上述内容在本专利申请的申请日前已公开的情况下,上述
技术介绍
不应当用于评价本申请技术方案的新创性。


技术实现思路

1、为解决上述
技术介绍
中提及的至少一种技术问题,本专利技术的目的旨在提供一种基于dbc的协议层代码生成方法及生成工具,方法以dbc文件作为输入文件,支持多路can总线的代码实现,适用于标准can的标准帧,可高效率生成协议层代码,开发过程减少甚至避免了手动编写代码,减少了代码错误率,降低了人力和时间成本,缩短了开发周期。

2、一个方面,提供一种基于dbc的协议层代码生成方法,包括:

3、获取dbc文件并遍历dbc文件以获取dbc文件信息;

4、基于所述dbc文件及dbc文件信息,依据预先输入的目标节点选择项和大小端选择项,生成协议层代码文件。

5、部分具体实施方案中,所述dbc文件信息包括:dbc文件里定义的帧的帧个数、帧的帧信息、帧的所有信号信息、基于信号名的信号描述的信息。

6、部分具体实施方案中,所述协议层代码文件包括后缀名为c的代码文件和后缀名为h的代码文件。

7、部分具体实施方案中,所述后缀名为c的代码文件包括asi_can.c文件、can_app.c文件的至少一种。

8、部分具体实施方案中,所述后缀名为h的代码文件包括asi_can.h文件、can_app.h文件的至少一种。

9、部分具体实施方案中,所述基于dbc的协议层代码生成方法具体包括:

10、(1)获取dbc文件;

11、(2)遍历所述dbc文件,获取所述dbc文件里定义的帧的帧个数,并根据帧个数定义msg数组,用以保存信息;

12、(3)获取所述帧的帧信息,并将所述帧信息存入msg数组中;

13、(4)获取所述帧的所有信号信息,并将所述所有信号信息存入信号相对的msg数组中;

14、(5)将步骤(4)中获取的所述帧的信号个数存入msg数组中;

15、(6)遍历所述dbc文件,依据信号名获取信号描述的信息,并存入信号相对的msg数组中;

16、(7)依据信号的起始位置对msg数组进行排序;

17、(8)遍历msg数组,筛选出发送节点为目标节点的帧;

18、(9)将步骤(8)筛选出的帧以及该帧的所有信号信息存入对应的used信号数组;

19、(10)遍历msg数组,筛选出发送节点不是目标节点但该帧任一信号接收节点有包含目标节点的帧;

20、(11)将步骤(10)筛选出的帧以及帧内接收节点包含目标节点的信号信息存入相应的used信号数组;

21、(12)对used信号数组中的跨字节的信号进行分割,对信号间存在间隔的用reserved进行填充,生成连续信号数组;

22、(13)根据当前帧的msg数组,生成接收、发送的函数,将其分别存入canapp.h缓存和canapp.c缓存中;

23、(14)根据used信号数组,对接收、发送函数填充代码;信号通过位域结构体从buffer中解析出来,跨字节的信号还要通过used信号数组的信息进行移位等操作;

24、(15)将步骤(14)生成的代码存入canapp.c缓存中;

25、(16)如果最后一个信号的结束位置小于帧的长度,对used信号数组用reserved进行填充,并更新连续信号数组;

26、(17)根据输入的大小端信息,对连续信号数组进行转换;

27、(18)依次对单个字节内的信号进行排序,在步骤(12)中已经对跨字节信号进行分割和信号间隔的填充,所以单字节内信号是连续的;

28、(19)对used信号数组按id名生成位域的结构体和联合体,并将结构体存放到位域结构体缓存数组中,将联合体存放到联合体缓存数组中;

29、(20)对步骤(2)里创建的所有msg数组执行完(8)到(19)的步骤;

30、(21)将结构体缓存、联合体缓存以及canapp.h缓存写入到canapp.h,将canapp.c缓存写入canapp.c中;

31、(22)根据步骤(2)里创建的msg数组,生成can收发buffer以及收发接口函数,并存入到asi_can.c的缓存和asi_can.h的缓存;

32、(23)根据步骤(2)里创建的msg数组,在收发接口函数中添加步骤(13)中定义的函数调用,参数为(22)中定义的can收发buffer,并写入asi_can.c的缓存中;

33、(24)将asi_can.c缓存写入asi_can.c文件中,将asi_can.h缓存写入asi_can.h文件中。

34、部分具体实施方案中,所述步骤(3)的所述帧信息包括:帧id、帧名、帧长度(dlc)和该帧的发送节点。

35、部分具体实施方案中,所述步骤(4)的所述所有信号信息包括:信号名、起始位置、信号长度、符号位、分辨率、偏移量、下限值、上限值、单位、接收节点。

36、部分具体实施方案中,所述步骤(13)的所述函数的函数名为本文档来自技高网...

【技术保护点】

1.一种基于DBC的协议层代码生成装置,包括:

2.根据权利要求1所述的基于DBC的协议层代码生成装置,其特征在于:

3.根据权利要求1或2所述的基于DBC的协议层代码生成装置,其特征在于:

4.根据权利要求1或2所述的基于DBC的协议层代码生成装置,其特征在于具体包括:

5.根据权利要求4所述的基于DBC的协议层代码生成装置,其特征在于:

6.根据权利要求4所述的基于DBC的协议层代码生成装置,其特征在于:

7.根据权利要求4所述的基于DBC的协议层代码生成装置,其特征在于:

8.根据权利要求4所述的基于DBC的协议层代码生成装置,其特征在于:

9.根据权利要求4所述的基于DBC的协议层代码生成装置,其特征在于:

【技术特征摘要】

1.一种基于dbc的协议层代码生成装置,包括:

2.根据权利要求1所述的基于dbc的协议层代码生成装置,其特征在于:

3.根据权利要求1或2所述的基于dbc的协议层代码生成装置,其特征在于:

4.根据权利要求1或2所述的基于dbc的协议层代码生成装置,其特征在于具体包括:

5.根据权利要求4所述的基于dbc的协...

【专利技术属性】
技术研发人员:李兆平
申请(专利权)人:浙江万里扬新能源驱动有限公司杭州分公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1