CAN信号的源文件自动生成方法及系统与流程

文档序号:13206357阅读:351来源:国知局
CAN信号的源文件自动生成方法及系统与流程

本发明涉及汽车技术领域,特别涉及一种can信号的源文件自动生成方法及系统。



背景技术:

汽车电子控制器在汽车中的应用越来越广泛,已经成为影响汽车性能的重要因素,而控制器与控制器的之间的数据交换都是通过can网络来实现的,这些数据体现在can总线上就是can信号,控制器在发送can信号前和接收can信号后要对can信号进行打包和解包的操作,而打包解包又是通过编写源代码来实现的。

相关技术中,can信号打包解包源文件是人工来手动编写和修改的,一个信号修改,就要找出所有跟它相关的源文件并一一进行修改,不仅费时费力、效率底下,而且还容易出错。



技术实现要素:

本发明旨在至少在一定程度上解决上述相关技术中的技术问题之一。

为此,本发明的第一个目的在于提出一种can信号的源文件自动生成方法。该方法节省人力成本,提升can信号的源文件的生成效率,并具有准确率高的优点。

本发明的第二个目的在于提出一种can信号的源文件自动生成系统。

为了实现上述目的,本发明的第一方面的实施例公开了一种can信号的源文件自动生成方法,包括以下步骤:从can信号文件中读取多个can信号;根据所述多个can信号生成can信号数组,其中,所述can信号数组存储有所述多个can信号的属性;根据所述多个can信号的属性得到对应于所述多个can信号的一个或多个can报文;根据所述一个或多个can报文生成相应的发送数组或者接收数组;将所述多个can信号分别添加到相应的发送数组或者接收数组中,以生成所述can信号的源文件。

根据本发明实施例的can信号的源文件自动生成方法,可以根据can信号文件自动生成can信号的源文件,尤其在can信号需要更改的情况下,不需要人工来查找并手动编写和修改与更改的can信号相关的所有源文件,只需要将变动的can信号在can信号文件中进行修改,便可以根据更改的can信号文件自动生成can信号的源文件,节省人力成本,提升can信号的源文件的生成效率,并具有准确率高的优点。

在一些示例中,所述can信号的属性至少包括can信号id和传输方向。

在一些示例中,所述根据所述多个can信号的属性得到对应于所述多个can信号的一个或多个can报文,包括:根据同一个can信号id得到一个can报文。

在一些示例中,所述根据所述一个或多个can报文生成相应的发送数组或者接收数组,包括:如果所述传输方向为发送方向,则生成相应的发送数组;如果所述传输方向为接收方向,则生成相应的接收数组。

在一些示例中,在将所述多个can信号分别添加到相应的发送数组或者接收数组中之前,还包括:根据每个can报文中的can信号生成相应的结构体变量;为所述结构体变量中每个can信号设置相应的打包或解包函数,并将所述结构体变量中每个can信号传递到相应的打包或解包函数中。

本发明的第二方面的实施例公开了一种can信号的源文件自动生成系统,包括:读取模块,用于从can信号文件中读取多个can信号;can信号数组生成模块,用于根据所述多个can信号生成can信号数组,其中,所述can信号数组存储有所述多个can信号的属性;源文件生成模块,用于根据所述多个can信号的属性得到对应于所述多个can信号的一个或多个can报文,并根据所述一个或多个can报文生成相应的发送数组或者接收数组,以及将所述多个can信号分别添加到相应的发送数组或者接收数组中,以生成所述can信号的源文件。

根据本发明实施例的can信号的源文件自动生成系统,可以根据can信号文件自动生成can信号的源文件,尤其在can信号需要更改的情况下,不需要人工来查找并手动编写和修改与更改的can信号相关的所有源文件,只需要将变动的can信号在can信号文件中进行修改,便可以根据更改的can信号文件自动生成can信号的源文件,节省人力成本,提升can信号的源文件的生成效率,并具有准确率高的优点。

在一些示例中,所述can信号的属性至少包括can信号id和传输方向。

在一些示例中,所述源文件生成模块用于根据同一个can信号id得到一个can报文。

在一些示例中,所述源文件生成模块用于在所述传输方向为发送方向时生成相应的发送数组,以及在所述传输方向为接收方向时生成相应的接收数组。

在一些示例中,所述源文件生成模块还用于在将所述多个can信号分别添加到相应的发送数组或者接收数组中之前,根据每个can报文中的can信号生成相应的结构体变量,并为所述结构体变量中每个can信号设置相应的打包或解包函数,并将所述结构体变量中每个can信号传递到相应的打包或解包函数中。

本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述的或附加的方面和优点结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1是根据本发明一个实施例的can信号的源文件自动生成方法的流程图;

图2是根据本发明另一个实施例的can信号的源文件自动生成方法的流程图;

图3是根据本发明一个实施例的can信号的源文件自动生成方法中can信号数组的示意图;以及

图4是根据本发明另一个实施例的can信号的源文件自动生成系统的结构框图。

附图标记说明:

can信号的源文件自动生成系统400、读取模块410、can信号数组生成模块420、源文件生成模块430。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。

以下结合附图描述根据本发明实施例的电机的标定方法及系统。

图1是根据本发明一个实施例的can信号的源文件自动生成方法的流程图。如图1所示,并结合图2,根据本发明一个实施例的can信号的源文件自动生成方法,包括如下步骤:

s101:从can信号文件中读取多个can信号。

其中,在从can信号文件中读取多个can信号之前,需要预先建立can信号文件。结合图2所示,预先创建含有can信号的can信号文件,如:can_signal.csv文件。

其中,can_signal.csv文件中预先写入了多个can信号。

s102:根据多个can信号生成can信号数组,其中,can信号数组存储有所述多个can信号的属性。

具体地说,例如通过python脚本读入can_signal.csv文件,对此文件进行解析转换成字符串保存到can信号数组中,can信号数组的行信息为每个can信号的属性,列信息为所有的can信号索引。如图3所示can_signal.csv文件对应的can信号数组为:string_tsignalarray[27][8]。

在该示例中,can信号的属性包括can信号所在的报文id(即:can信号id)以及传输方向(如rx和tx)。当然,can信号的属性还可以包括报文序号,报文发送或接收周期、信号名、信号数据类型、信号起始位以及信号长度等。

s103:根据多个can信号的属性得到对应于多个can信号的一个或多个can报文。

作为一个具体的示例,可以根据同一个can信号id得到一个can报文。例如:根据can信号id和传输方向在can信号数组signalarray[27][8]里把每帧can报文都筛选出来。如图3中,每个空行隔开的部分为筛选出来的一帧can报文。

s104:根据一个或多个can报文生成相应的发送数组或者接收数组。

其中,如果所述传输方向为发送方向,则生成相应的发送数组;如果所述传输方向为接收方向,则生成相应的接收数组。

具体地说,每个can报文都对应生成一个长度为8字节的发送数组或接收数组。例如根据图3所示的can_signal.csv文件中的第一个can报文,可以得到如下定义的发送数组或者接收数组:

uint8_tmsg_0x0cffedef_rxbuffer[8]。

s105:将多个can信号分别添加到相应的发送数组或者接收数组中,以生成can信号的源文件。

具体而言,在将多个can信号分别添加到相应的发送数组或者接收数组中之前,包括:根据每个can报文中的can信号生成相应的结构体变量;为所述结构体变量中每个can信号设置相应的打包或解包函数,并将所述结构体变量中每个can信号传递到相应的打包或解包函数中。

例如:根据每个can报文中的信号生成相应的结构体变量类型,此类型中的成员变量在结构体中的排列位置和长度与can信号在can报文中的位置和长度是一致的。

针对每一个信号设置相应的打包函数,把需要打包的信号传递到该函数中,然后把该信号再填充到生成的8字节长度的发送数组中。如:

针对每一个信号设置相应的解包函数,从该信号所在的can报文8字节长度的数组中把需要解包的信号读取出来,然后作为该函数的返回值。

根据本发明实施例的can信号的源文件自动生成方法,可以根据can信号文件自动生成can信号的源文件,尤其在can信号需要更改的情况下,不需要人工来查找并手动编写和修改与更改的can信号相关的所有源文件,只需要将变动的can信号在can信号文件中进行修改,便可以根据更改的can信号文件自动生成can信号的源文件,节省人力成本,提升can信号的源文件的生成效率,并具有准确率高的优点。

图4是根据本发明一个实施例的can信号的源文件自动生成系统的结构框图,如图4所示,根据本发明一个实施例的can信号的源文件自动生成系统400,包括:读取模块410、can信号数组生成模块420和源文件生成模块430。

其中,读取模块410用于从can信号文件中读取多个can信号。can信号数组生成模块420用于根据所述多个can信号生成can信号数组,其中,所述can信号数组存储有所述多个can信号的属性。源文件生成模块430用于根据所述多个can信号的属性得到对应于所述多个can信号的一个或多个can报文,并根据所述一个或多个can报文生成相应的发送数组或者接收数组,以及将所述多个can信号分别添加到相应的发送数组或者接收数组中,以生成所述can信号的源文件。

在本发明的一个实施例中,所述can信号的属性至少包括can信号id和传输方向。

在本发明的一个实施例中,所述源文件生成模块430用于根据同一个can信号id得到一个can报文。

在本发明的一个实施例中,所述源文件生成模块430用于在所述传输方向为发送方向时生成相应的发送数组,以及在所述传输方向为接收方向时生成相应的接收数组。

在本发明的一个实施例中,所述源文件生成模块430还用于在将所述多个can信号分别添加到相应的发送数组或者接收数组中之前,根据每个can报文中的can信号生成相应的结构体变量,并为所述结构体变量中每个can信号设置相应的打包或解包函数,并将所述结构体变量中每个can信号传递到相应的打包或解包函数中。

根据本发明实施例的can信号的源文件自动生成系统,可以根据can信号文件自动生成can信号的源文件,尤其在can信号需要更改的情况下,不需要人工来查找并手动编写和修改与更改的can信号相关的所有源文件,只需要将变动的can信号在can信号文件中进行修改,便可以根据更改的can信号文件自动生成can信号的源文件,节省人力成本,提升can信号的源文件的生成效率,并具有准确率高的优点。

需要说明的,本发明实施例的can信号的源文件自动生成系统的具体实现方式与本发明实施例的can信号的源文件自动生成方法的具体实现方式类似,具体请参见方法部分的描述,为了减少冗余,此处不做赘述。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不是必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1