用于汽车导航测试的信号模拟方法、系统及电子设备与流程

文档序号:23997811发布日期:2021-02-20 16:12阅读:191来源:国知局
用于汽车导航测试的信号模拟方法、系统及电子设备与流程

[0001]
本发明涉及汽车导航设备测试技术领域,尤其是涉及一种用于汽车导航测试的信号模拟方法、系统及电子设备。


背景技术:

[0002]
传统的汽车导航主机开发过程中的测试需要通过实车测试进行验证,该方案有以下缺点:
[0003]
(1)该测试验证是在开发阶段,实车测试验证及修改代码不方便,效率低,而且一般测试测试需要安排驻场车厂,产生相关费用过高;
[0004]
(2)测试所用的台架通过usbcan盒配套canpro,cantest以及相关二次开发软件测试验证,canpro,cantest软件在使用上不能支持同时发生多个报文,单个报文只能通过手动修改某个信号的值,没有相关的操作面板,并且没有工程保存,所有操作都是从头开始配置。使用中发生,操作繁琐,效率低,不能接收导航主机的信号做出反馈;
[0005]
(3)虽然canoe方案可以满足上述台架测试要求,但是在导航主机开发过程中所用的开发人员较多,由于canoe采购费用昂贵,难以满足所有开发人员都使用canoe。


技术实现要素:

[0006]
有鉴于此,本发明的目的在于提供一种用于汽车导航测试的信号模拟方法、系统及电子设备,能够基于dbc实现自动化生成发送及接收报文,解决了现有技术中canpro,cantest需要人工手动输入添加等缺点;同时实现了原车数据的模拟,避免安排软件工程师在开发阶段需要进行实车测试验证,有利于增加开发效率;并且可利用vspy进行二次开发,降低了开发成本。
[0007]
第一方面,本发明实施例提供了一种用于汽车导航测试的信号模拟方法,该方法包括:
[0008]
获取dbc数据库文件;dbc数据库文件包含汽车导航测试所用的测试数据;
[0009]
根据dbc数据库文件中包含的测试数据,确定汽车导航测试所用的测试报文、测试信号以及属性信息;
[0010]
将汽车导航测试所用的测试报文、测试信号以及属性信息写入至已初始化的解析对象中;其中,解析对象包含多个can测试节点;can测试节点通过对应的发送报文和接收报文,将测试报文、测试信号以及属性信息保存在解析对象中;
[0011]
通过解析对象中can测试节点的数据生成可视化控件;
[0012]
利用可视化控件,通过解析对象中的测试报文、测试信号以及属性信息确定测试工程文件,并通过测试工程文件得到汽车导航测试的信号模拟结果。
[0013]
在一些实施方式中,上述获取dbc数据库文件的步骤之后,方法还包括:
[0014]
判断dbc数据库文件是否完整;
[0015]
如果dbc数据库文件不完整,停止当前的信号模拟过程并重新获取dbc数据库文
件。
[0016]
在一些实施方式中,上述根据dbc数据库文件中包含的测试数据,确定汽车导航测试所用的测试报文、测试信号以及属性信息的步骤,包括:
[0017]
遍历dbc数据库文件,分别将包含报文标记的字符串、包含信号标记的字符串以及包含配置属性的字符串作为报文处理文本、信号处理文本以及配置属性处理文本;
[0018]
初始化测试报文,将报文处理文本及其对应的属性信息保存至已初始化的测试报文中;
[0019]
初始化测试信号,将信号处理文本及其对应的属性信息保存至已初始化的测试信号中,并将测试信号添加至对应的测试报文中;
[0020]
根据配置属性处理文本,确定对应的测试报文以及测试信号,并更新对应的属性信息。
[0021]
在一些实施方式中,上述将汽车导航测试所用的测试报文、测试信号以及属性信息写入至已初始化的解析对象中的步骤,包括:
[0022]
获取can测试节点对应的发送报文以及接收报文;
[0023]
遍历can测试节点对应的发送报文,获取发送报文对应的报文结构体定义、id列表、报文长度列表、报文结构体对象列表、报文预发送函数列表、报文发送确认函数列表,并将上述数据写入至已初始化的解析对象中;
[0024]
遍历can测试节点对应的接收报文,获取接收报文对应的报文结构体定义、id列表、报文长度列表、报文结构体对象列表、报文接收拷贝函数列表、报文接收确认函数列表,并将上述数据写入至已初始化的解析对象中。
[0025]
在一些实施方式中,上述将汽车导航测试所用的测试报文、测试信号以及属性信息写入至已初始化的解析对象中的步骤,还包括:
[0026]
遍历can测试节点对应的发送报文,将发送报文对应的信号、信号名称以及信号长度转化为发送报文的ilput函数,并将发送报文的ilput函数对应的函数声明以及函数时间保存至已初始化的解析对象中;
[0027]
遍历can测试节点对应的接收报文,将接收报文对应的信号、信号名称以及信号长度转化为接收报文的ilput函数,并将接收报文的ilput函数对应的函数声明以及函数时间保存至已初始化的解析对象中。
[0028]
在一些实施方式中,上述可视化控件为vspy可视化控件。
[0029]
在一些实施方式中,上述利用可视化控件,通过解析对象中的测试报文、测试信号以及属性信息确定测试工程文件的过程,包括:
[0030]
通过可视化控件,获取汽车导航测试的所有发送报文;
[0031]
提取汽车导航测试的所有发送报文的id列表、报文长度列表、报文结构体对象列表、报文预发送函数列表以及报文发送确认函数列表对应的发送报文文本,并将发送报文文本写入至已初始化的测试工程文件中;
[0032]
提取汽车导航测试的所有接收报文的id列表、报文长度列表、报文结构体对象列表、报文接收拷贝函数列表以及报文接收确认函数列表对应的接收报文文本,并将接收报文文本写入至测试工程文件中。
[0033]
第二方面,本发明实施例提供了一种用于汽车导航测试的信号模拟系统,该系统
包括:
[0034]
数据获取模块,用于获取dbc数据库文件;dbc数据库文件包含汽车导航测试所用的测试数据;
[0035]
测试数据确定模块,用于根据dbc数据库文件中包含的测试数据,确定汽车导航测试所用的测试报文、测试信号以及属性信息;
[0036]
数据写入模块,用于将汽车导航测试所用的测试报文、测试信号以及属性信息写入至已初始化的解析对象中;其中,解析对象包含多个can测试节点;can测试节点通过对应的发送报文和接收报文,将测试报文、测试信号以及属性信息保存在解析对象中;
[0037]
可视化生成模块,用于通过解析对象中can测试节点的数据生成可视化控件;
[0038]
测试文件生成模块,用于利用可视化控件,通过解析对象中的测试报文、测试信号以及属性信息确定测试工程文件,并通过测试工程文件得到汽车导航测试的信号模拟结果。
[0039]
第三方面,本发明实施例还提供一种电子设备,包括:处理器和存储器;存储器上存储有计算机程序,计算机程序在被处理器运行时实现上述第一方面任意可能的实施方式中提到的用于汽车导航测试的信号模拟方法的步骤。
[0040]
第四方面,本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,其中,计算机程序被处理器运行时实现上述第一方面任意可能的实施方式中提到的用于汽车导航测试的信号模拟方法的步骤。
[0041]
本发明实施例带来了以下有益效果:
[0042]
本发明提供了一种用于汽车导航测试的信号模拟方法、系统及电子设备,该方法首先获取dbc数据库文件;dbc数据库文件包含汽车导航测试所用的测试数据,然后根据dbc数据库文件中包含的测试数据,确定汽车导航测试所用的测试报文、测试信号以及属性信息;再将汽车导航测试所用的测试报文、测试信号以及属性信息写入至已初始化的解析对象中;其中,解析对象包含多个can测试节点;can测试节点通过对应的发送报文和接收报文,将测试报文、测试信号以及属性信息保存在解析对象中;通过解析对象中can测试节点的数据生成可视化控件;利用可视化控件,通过解析对象中的测试报文、测试信号以及属性信息确定测试工程文件,并通过测试工程文件得到汽车导航测试的信号模拟结果。该方法能够基于dbc实现自动化生成发送及接收报文,解决了现有技术中canpro,cantest需要人工手动输入添加等缺点;同时实现了原车数据的模拟,避免安排软件工程师在开发阶段需要进行实车测试验证,有利于增加开发效率;并且可利用vspy进行二次开发,降低了开发成本。
[0043]
本发明的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本发明的上述技术即可得知。
[0044]
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附附图,作详细说明如下。
附图说明
[0045]
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的
附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0046]
图1为本发明实施例提供的一种用于汽车导航测试的信号模拟方法的流程图;
[0047]
图2为本发明实施例提供的一种用于汽车导航测试的信号模拟方法中,获取dbc数据库文件的步骤之后需要对dbc数据库文件进行校验的流程图;
[0048]
图3为本发明实施例提供的一种用于汽车导航测试的信号模拟方法中步骤s102的流程图;
[0049]
图4为本发明实施例提供的一种用于汽车导航测试的信号模拟方法中步骤s103的流程图;
[0050]
图5为本发明实施例提供的一种用于汽车导航测试的信号模拟方法中步骤s103的另一流程图;
[0051]
图6为本发明实施例提供的一种用于汽车导航测试的信号模拟方法中的可视化控件示意图;
[0052]
图7为本发明实施例提供的一种用于汽车导航测试的信号模拟方法中,通过解析对象中的测试报文、测试信号以及属性信息确定测试工程文件过程的流程图;
[0053]
图8为本发明实施例提供的另一种用于汽车导航测试的信号模拟方法的流程图;
[0054]
图9为本发明实施例提供的一种用于汽车导航测试的信号模拟系统的结构示意图;
[0055]
图10为本发明实施例提供的一种电子设备的结构示意图。
[0056]
图标:
[0057]
910-数据获取模块;920-测试数据确定模块;930-数据写入模块;940-可视化生成模块;950-测试文件生成模块;101-处理器;102-存储器;103-总线;104-通信接口。
具体实施方式
[0058]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0059]
传统的导航主机开发过程中的测试需要通过实车测试进行验证,该方案有以下缺点:
[0060]
(1)该测试验证是在开发阶段,实车测试验证及修改代码不方便,效率低,而且一般测试测试需要安排驻场车厂,产生相关费用过高;
[0061]
(2)测试所用的台架通过usbcan盒配套canpro,cantest以及相关二次开发软件测试验证,canpro,cantest软件在使用上不能支持同时发生多个报文,单个报文只能通过手动修改某个信号的值,没有相关的操作面板,并且没有工程保存,所有操作都是从头开始配置。使用中发生,操作繁琐,效率低,不能接收导航主机的信号做出反馈;
[0062]
(3)虽然canoe方案可以满足上述台架测试要求,但是在导航主机开发过程中所用的开发人员较多,由于canoe采购费用昂贵,难以满足所有开发人员都使用canoe。
[0063]
由此可见,现有的汽车导航主机开发过程中还存在着:信号模拟困难导致开发人
员必须现场实车调试,且调试过程中参数修改繁琐、费用较高等问题。
[0064]
基于此,本发明实施例提供了一种用于汽车导航测试的信号模拟方法、系统及电子设备,能够基于dbc实现自动化生成发送及接收报文,解决了现有技术中canpro,cantest需要人工手动输入添加等缺点;同时实现了原车数据的模拟,避免安排软件工程师在开发阶段需要进行实车测试验证,有利于增加开发效率;并且可利用vspy进行二次开发,降低了开发成本。
[0065]
为便于对本实施例进行理解,首先对本发明实施例所公开的一种用于汽车导航测试的信号模拟方法进行详细介绍。
[0066]
参见图1所示的一种用于汽车导航测试的信号模拟方法的流程图,包括以下步骤:
[0067]
步骤s101,获取dbc数据库文件;dbc数据库文件包含汽车导航测试所用的测试数据。
[0068]
dbc(database can,can协议的数据库)数据即can的数据库文件,在这个文件中把汽车导航测试所涉及的can通讯信息定义的非常完整清楚,测试过程中can网络的通讯就是依据这个文件的描述进行的。dbc数据库文件中包含了汽车导航测试所用的所有测试数据,该数据通常在其它汽车导航设备测试时保存在相关设备中。例如,这些汽车导航测试数据事先保存在测试人员或开发人员的开发电脑中,通过相关的dbc文件读取程序或相关开发环境来对dbc数据库文件进行读取或编辑。
[0069]
步骤s102,根据dbc数据库文件中包含的测试数据,确定汽车导航测试所用的测试报文、测试信号以及属性信息。
[0070]
由于dbc数据库文件是数据库格式,测试数据以类似键值对的形式进行保存,相邻数据之间通过分隔符或其它标点实现分割。在测试数据进行读取的时候,可先根据分隔符或标点对dbc数据库文件进行分割读取,进而再根据测试报文、测试信号以及属性信息中包含的特殊字符串进行查找进而获得相应的测试数据。
[0071]
测试报文在汽车导航测试过程中具有关键作用,通过报文的发送通常需要特定格式,依次在发送给相应测试接口时才能发挥测试效果;测试接口再测试完毕后再通过报文发送给测试端,测试端此时将接收报文进行接收,通过判断接收报文的内容来获得导航测试的结果。
[0072]
测试报文、测试信号以及属性信息之间通过各自特定的命名规则进行区分,例如测试报文中包含字符串为“bo_*”;测试信号文本中包含字符串为“*sg_*”;配置属性文本中包含字符串为“ba_*”。因此在对测试报文、测试信号以及属性信息进行查找时,可通过遍历dbc数据库文件中的文本是否包含上述字符串,进而获取与之相对应的测试数据。
[0073]
步骤s103,将汽车导航测试所用的测试报文、测试信号以及属性信息写入至已初始化的解析对象中;其中,解析对象包含多个can测试节点;can测试节点通过对应的发送报文和接收报文,将测试报文、测试信号以及属性信息保存在解析对象中。
[0074]
该步骤中的解析对象为can解析对象,该解析对象中包含多个can测试节点。这些can测试节点通过相应的发送报文和接收报文,将测试用的报文数据、测试信号以及属性信息进行重构,进而保存至已初始化的解析对象中。
[0075]
can解析对象可理解为对can节点进行解析后生成的测试工程对象,这些测试工程对象作为信号模拟过程的实现主体,最后根据can测试节点实现自动化的报文发送,能够实
现自动化生成发送及接收报文。
[0076]
步骤s104,通过解析对象中can测试节点的数据生成可视化控件。
[0077]
可视化控件可为vspy可视化控件工程,通过遍历can解析对象所有的发送报文,提取相关报文及信号信息创建可视化控件。具体实施过程中,可根据获取发送报文申请新的vspy控制面板,并按报文的排序生成该发送报文的全部信号。处理完后的可视化控件文本替换vspy工程中的关于可视化文本的内容,并生成相应的测试工程文件。
[0078]
步骤s105,利用可视化控件,通过解析对象中的测试报文、测试信号以及属性信息确定测试工程文件,并通过测试工程文件得到汽车导航测试的信号模拟结果。
[0079]
通过可视化控件生成相应的测试工程文件后,遍历解析对象中所有的发送报文,提取相关发送报文的数据并写入至测试工程文件中;然后对接收报文进行遍历提取,将获得的相关接收报文的数据写入至测试工程文件中。发送报文的数据和接收报文的数据中均包含着测试用的报文数据、测试信号以及属性信息,因此最终的测试工程文件中包含着上述数据。
[0080]
测试工程文件获取后,即可通过发送报文和接收报文对汽车导航测试的信号进行模拟,并可根据相应的回调反馈控制汽车导航的反馈过程。由于该方法基于dbc数据库文件实现了自动化生成、发送及接收报文,避免了现有技术中需要人工手动输入相关报文等缺点,自动化程度更好,有利于减少人工成本。
[0081]
通过上述实施例中提供的可知,该方法能够基于dbc实现自动化生成发送及接收报文,解决了现有技术中canpro,cantest需要人工手动输入添加等缺点;同时实现了原车数据的模拟,避免安排软件工程师在开发阶段需要进行实车测试验证,有利于增加开发效率;并且可利用vspy进行二次开发,降低了开发成本。
[0082]
在一些实施方式中,上述获取dbc数据库文件的步骤之后需要对dbc数据库文件进行校验,如图2所示,该方法还包括:
[0083]
步骤s201,判断dbc数据库文件是否完整。
[0084]
具体实现过程中,可遍历dbc数据库文件,查找"bu_:"字符串,并在查找到该字符串的位置开始查找到换行为止。如果查找到该段字符串则dbc存在network节点,否则dbc文件不完整。查找到的network节点信息,按照”,”分开多个节点存放在dbc节点组中。
[0085]
步骤s202,如果dbc数据库文件不完整,停止当前的信号模拟过程并重新获取dbc数据库文件。
[0086]
如果dbc数据库文件不完整,表示该文件具有较高的数据异常风险,需要重新获取新的dbc数据库文件。内容完整的dbc文件有利于降低信号模拟过程中产生的异常概率。
[0087]
在一些实施方式中,上述根据dbc数据库文件中包含的测试数据,确定汽车导航测试所用的测试报文、测试信号以及属性信息的步骤s102,如图3所示,包括:
[0088]
步骤s301,遍历dbc数据库文件,分别将包含报文标记的字符串、包含信号标记的字符串以及包含配置属性的字符串作为报文处理文本、信号处理文本以及配置属性处理文本。
[0089]
例如,遍历dbc文件,查找每行首字符串为"bo_"的字符串作为报文处理文本;查找每行首字符串为"sg_"的字符串作为信号处理文本;查找每行首字符串为"ba_"的字符串作为配置属性处理文本。
[0090]
步骤s302,初始化测试报文,将报文处理文本及其对应的属性信息保存至已初始化的测试报文中。
[0091]
属性信息的获取通常结合换行符“\n”所实现,例如遍历dbc文件,查找"\nba_def_"字符串,并在查找到该字符串的位置开始,查找"\nba_"字符串作为结束。获取到的属性信息默认值的字符串按照每行处理。遍历上述获取的字符串,查找每行首字符串为"ba_def_def_"的字符串作进一步处理,获取该字符串对应的属性名称以及默认值。
[0092]
步骤s303,初始化测试信号,将信号处理文本及其对应的属性信息保存至已初始化的测试信号中,并将测试信号添加至对应的测试报文中。
[0093]
初始化测试信号可通过新建一个报文的方式得以实现,通过新建一个空的报文,然后分别将信号处理文本及其对应的属性信息保存至已初始化的测试信号中,然后再将测试信号添加至对应的测试报文中。
[0094]
步骤s304,根据配置属性处理文本,确定对应的测试报文以及测试信号,并更新对应的属性信息。
[0095]
在一些实施方式中,上述将汽车导航测试所用的测试报文、测试信号以及属性信息写入至已初始化的解析对象中的步骤s103,如图4所示,包括:
[0096]
步骤s401,获取can测试节点对应的发送报文以及接收报文。
[0097]
具体实现过程中,可根据测试人员或开发人员手动选中的节点名称,遍历所有已保存的测试报文,按照测试报文的发送节点以及信号的接收节点重新整理对应的发送报文组以及接收报文组。
[0098]
步骤s402,遍历can测试节点对应的发送报文,获取发送报文对应的报文结构体定义、id列表、报文长度列表、报文结构体对象列表、报文预发送函数列表、报文发送确认函数列表,并将上述数据写入至已初始化的解析对象中。
[0099]
发送报文组以及接收报文组这两组报文可按照报文id从大到小重新排序,后续处理均通过已完成排序的发送报文组以及接收报文组进行。然后遍历所有选中can节点的发送报文,获取发送报文结构体定义;然后遍历发送报文,获取发送报文对象,对该发送报文对象中的信号展开作结构体定义。核心算法为创建一个8*8的位域空间,遍历该发送报文的所有信号,把信号占用的位域在位域空间标注。标注完成后的位域空间从第一行第一列遍历到最后一行最后一列,修改夸字节信号加上后缀,以及每一段信号的长度。重新遍历修改后的位域空间,创建定义结构体定义,并把结构体定义的文本保存在该报文的发送报文结构体属性中。
[0100]
遍历所有选中can节点的发送报文,获取发送报文的id,并把该id转化为字符串文本存放在测试工程对象中。
[0101]
遍历所有选中can节点的发送报文,获取发送报文的dlc,并把该dlc转化为字符串文本存放在测试工程对象中。
[0102]
遍历所有选中can节点的发送报文,获取发送报文的名称,并把该名称加上后缀作为报文结构体对象的指针,把该文本存放在测试工程对象中。
[0103]
遍历所有选中can节点的发送报文,获取发送报文的名称,并把该名称加上pretransmit后缀,作为报文预发送函数文本,存放在测试工程对象中。
[0104]
遍历所有选中can节点的发送报文,获取发送报文的名称,并把该名称加上
confirmation后缀,作为报文发送确认函数文本,存放在测试工程对象中。
[0105]
步骤s403,遍历can测试节点对应的接收报文,获取接收报文对应的报文结构体定义、id列表、报文长度列表、报文结构体对象列表、报文接收拷贝函数列表、报文接收确认函数列表,并将上述数据写入至已初始化的解析对象中。
[0106]
遍历接收报文获取接收报文对象,对该接收报文对象中的信号展开作结构体定义。核心算法为创建一个8*8的位域空间,遍历该接收报文的所有信号,把信号占用的位域在位域空间标注。
[0107]
标注完成后的位域空间从第一行第一列遍历到最后一行最后一列,修改夸字节信号加上后缀,以及每一段信号的长度。重新遍历修改后的位域空间,创建定义结构体定义,并把结构体定义的文本保存在该报文的接收报文结构体属性中。
[0108]
遍历所有选中can节点的接收报文,获取接收报文的id,并把该id转化为字符串文本存放在测试工程对象中。
[0109]
遍历所有选中can节点的接收报文,获取接收报文的dlc,并把该dlc转化为字符串文本存放在测试工程对象中。
[0110]
遍历所有选中can节点的接收报文,获取接收报文的名称,并把该名称加上后缀作为报文结构体对象的指针,把该文本存放在测试工程对象中。
[0111]
遍历所有选中can节点的接收报文,获取接收报文的名称,并把该名称加上precopy后缀,作为报文拷贝函数文本,存放在测试工程对象中。
[0112]
遍历所有选中can节点的接收报文,获取接收报文的名称,并把该名称加上ind后缀,作为报文接收确认函数文本,存放在测试工程对象中。
[0113]
在一些实施方式中,上述将汽车导航测试所用的测试报文、测试信号以及属性信息写入至已初始化的解析对象中的步骤s103,如图5所示,还包括:
[0114]
步骤s501,遍历can测试节点对应的发送报文,将发送报文对应的信号、信号名称以及信号长度转化为发送报文的ilput函数,并将发送报文的ilput函数对应的函数声明以及函数时间保存至已初始化的解析对象中。
[0115]
具体的说,遍历所有选中can节点的发送报文,获取发送报文并遍历该报文所有的信号,获取信号名称,长度并转化为ilput函数的声明以及对应的函数实现,并分别存放在测试工程对象中。
[0116]
步骤s502,遍历can测试节点对应的接收报文,将接收报文对应的信号、信号名称以及信号长度转化为接收报文的ilput函数,并将接收报文的ilput函数对应的函数声明以及函数时间保存至已初始化的解析对象中。
[0117]
具体的说,遍历所有选中can节点的接收报文,获取接收报文并遍历该报文所有的信号,获取信号名称,长度并转化为ilput函数的声明以及对应的函数实现,并分别存放在测试工程对象中。
[0118]
相关接收处理自动生成回调函数,只需要在回调函数处理对于的反馈,反馈使用发送信号的ilput函数即可控制接收主机导航的反馈。
[0119]
在一些实施方式中,上述可视化控件为vspy可视化控件。
[0120]
通过解析对象中can测试节点的数据生成vspy可视化控件。vspy是集合了网络监控、数据获取/记录、节点仿真、诊断、自动测试等功能的工具,具有友好的视图交互界面,每
个视图可单独悬浮停靠、叠加,使用方便(例如同时打开报文发送视图和报文监控视图等);此外,vspy提供了外部编程api接口,方便用户的二次开发,完成更为复杂的任务;相较canoe工具根据价格优势。该实施例中的可视化控件的示意图如图6所示。
[0121]
在一些实施方式中,上述利用可视化控件,通过解析对象中的测试报文、测试信号以及属性信息确定测试工程文件的过程,如图7所示,包括:
[0122]
步骤s701,通过可视化控件,获取汽车导航测试的所有发送报文。
[0123]
步骤s702,提取汽车导航测试的所有发送报文的id列表、报文长度列表、报文结构体对象列表、报文预发送函数列表以及报文发送确认函数列表对应的发送报文文本,并将发送报文文本写入至已初始化的测试工程文件中;
[0124]
步骤s703,提取汽车导航测试的所有接收报文的id列表、报文长度列表、报文结构体对象列表、报文接收拷贝函数列表以及报文接收确认函数列表对应的接收报文文本,并将接收报文文本写入至测试工程文件中。
[0125]
具体的说,通过可视化控件获取测试工程对象所有的发送报文,并提取相关报文信息写入到测试工程生成文件中。具体的说,获取发送报文id列表的文本,转发为can发送id类别数组的定义,并通过文件写入到测试工程生成文件中;获取发送报文dlc列表的文本,转化为can发送dlc列表数组的定义,并通过文件写入到测试工程生成文件中;获取发送报文结构体对象指针的文本,转化为can发送对象指针数组的定义,并通过文件写入到测试工程生成文件中;获取发送报文预发送函数的文本,转化为can预发送函数指针数组的定义,并通过文件写入到测试工程生成文件中;获取发送报文预发送函数的文本,转化为can发送确认函数指针数组的定义,并通过文件写入到测试工程生成文件中。
[0126]
然后再将测试工程对象所有接收报文,提取相关报文信息写入到测试工程生成文件中。具体的说,获取接收报文id列表的文本,转发为can接收id类别数组的定义,并通过文件写入到测试工程生成文件中;获取接收报文dlc列表的文本,转化为can接收dlc列表数组的定义,并通过文件写入到测试工程生成文件中;获取接收报文结构体对象指针的文本,转化为can接收对象指针数组的定义,并通过文件写入到测试工程生成文件中;获取接收报文拷贝函数的文本,转化为can接收拷贝函数指针数组的定义,并通过文件写入到测试工程生成文件中;获取接收报文接收确认函数的文本,转化为can接收确认函数指针数组的定义,并通过文件写入到测试工程生成文件中。
[0127]
通过上述实施例中提供的可知,该方法能够基于dbc实现自动化生成发送及接收报文,解决了现有技术中canpro,cantest需要人工手动输入添加等缺点;同时实现了原车数据的模拟,避免安排软件工程师在开发阶段需要进行实车测试验证,有利于增加开发效率;并且可利用vspy进行二次开发,降低了开发成本。
[0128]
参见图8所示的另一种用于汽车导航测试的信号模拟方法的流程图,包括以下步骤:
[0129]
步骤s810,读取dbc文件,选择can解析文件保存路径。
[0130]
基于pc端软件,通过加载选择dbc文件,把当前dbc文件所在文件夹路径保存下来,该文件夹路径设置为can代码生成文件所在文件夹路径。
[0131]
步骤s820,检查dbc文件内容格式,判断dbc文件完整性,读取dbc属性默认值。具体包括如下步骤:
[0132]
1.判断dbc文件完整性。
[0133]
遍历dbc文件,查找"bu_:"字符串,并在查找到该字符串的位置开始查找到换行为止。如果查找到该段字符串则dbc存在network节点,否则dbc文件不完整。查找到的network节点信息,按照”,”分开多个节点存放在dbc节点组中,dbc节点名字在pc端软件通过combox控件显示。
[0134]
2.读取dbc属性默认值。
[0135]
遍历dbc文件,查找"\nba_def_"字符串,并在查找到该字符串的位置开始,查找"\nba_"字符串作为结束。获取到的dbc属性默认值字符串按照每行处理。遍历上述获取的字符串,查找每行首字符串为"ba_def_def_"的字符串作进一步处理,获取该字符串对应的属性名称以及默认值。一般需要获取的属性值有以下:ilused;nmnode;nmstationaddress;genmsgdelaytime;genmsgcycletime;genmsgcycletimefast;genmsgcycletimeactive;genmsgstartdelaytime;genmsgilsupport;genmsgnrofrepetition;genmsgtimeouttime;genmsgfastonstart;genmsgsendtype;diagrequest;diagresponse;diagstate;nmmessage;gensigsendtype;gensiginvalidvalue;gensigstartvalue。
[0136]
步骤s830,获取dbc文件中相关报文,信号以及属性信息。具体包括:
[0137]
1.获取dbc文件中所有报文
[0138]
遍历dbc文件,查找每行首字符串为"bo_"的字符串作为报文处理文本。新建一个报文,并使用s22的属性默认值初始化该报文的默认属性。"bo_"开头的字符串处理提取到报文的id,报文名称,报文长度以及报文的发送节点,并把上述获取的信息保存到新建的报文中。
[0139]
2.获取dbc文件中的消息,并保持在该消息所在的报文中。遍历dbc文件,查找每行首字符串为"sg_"的字符串作为信号处理文本。新建一个信号,并使用s22的属性默认值初始化该信号的默认属性。"sg_"开头的字符串处理提取到信号的名称,开始位,信号长度,字节模式,接收该信号的节点把上述处理好的信号添加在该信号所对应的报文中。
[0140]
3.获取dbc文件中的配置属性。遍历dbc文件,查找每行首字符串为"ba_"的字符串作为配置属性处理文本。在上述提取的处理文本中获取报文id,信号名称,获取的报文id及信号名称查找到对应的报文以及该报文对应的信号,并更新该属性值。
[0141]
步骤s840,将获取的dbc数据内容写入can解析对象。具体包括:
[0142]
1.获取选中can节点的所有发送报文及接收报文。根据pc端软件选中的节点名称,遍历所有s830步骤保存的报文,按照报文的发送节点以及信号的接收节点重新整理对应的发送报文组以及接收报文组。
[0143]
2.根据can报文的id分开排序该节点发送及接收报文。将上一步骤操作后的两组报文按照报文id从大到小重新排序,保存更新到发送报文组以及接收报文组。
[0144]
3.遍历所有选中can节点的发送报文,获取发送报文结构体定义。遍历上一步操作后的发送报文,获取发送报文对象,对该发送报文对象中的信号展开作结构体定义。核心算法为创建一个8*8的位域空间,遍历该发送报文的所有信号,把信号占用的位域在位域空间标注。标注完成后的位域空间从第一行第一列遍历到最后一行最后一列,修改夸字节信号加上后缀,以及每一段信号的长度。重新遍历修改后的位域空间,创建定义结构体定义,并把结构体定义的文本保存在该报文的发送报文结构体属性中。
[0145]
4.遍历所有选中can节点的接收报文,获取接收报文结构体定义。
[0146]
遍历第2步接收报文,获取接收报文对象,对该接收报文对象中的信号展开作结构体定义。核心算法为创建一个8*8的位域空间,遍历该接收报文的所有信号,把信号占用的位域在位域空间标注。标注完成后的位域空间从第一行第一列遍历到最后一行最后一列,修改夸字节信号加上后缀,以及每一段信号的长度。重新遍历修改后的位域空间,创建定义结构体定义,并把结构体定义的文本保存在该报文的接收报文结构体属性中。
[0147]
5.遍历所有选中can节点的发送报文,获取发送报文的id列表,报文长度列表,报文结构体对象列表,报文预发送函数列表,报文发送确认函数列表,遍历所有选中can节点的发送报文,获取发送报文的id,并把该id转化为字符串文本存放在测试工程对象中。遍历所有选中can节点的发送报文,获取发送报文的dlc,并把该dlc转化为字符串文本存放在测试工程对象中。遍历所有选中can节点的发送报文,获取发送报文的名称,并把该名称加上后缀作为报文结构体对象的指针,把该文本存放在测试工程对象中。遍历所有选中can节点的发送报文,获取发送报文的名称,并把该名称加上pretransmit后缀,作为报文预发送函数文本,存放在测试工程对象中。遍历所有选中can节点的发送报文,获取发送报文的名称,并把该名称加上confirmation后缀,作为报文发送确认函数文本,存放在测试工程对象中。
[0148]
6.遍历所有选中can节点的发送报文,对为il属性的报文配置ilput函数。遍历所有选中can节点的发送报文,获取发送报文并遍历该报文所有的信号,获取信号名称,长度并转化为ilput函数的声明以及对应的函数实现,并分别存放在测试工程对象中。
[0149]
7.遍历所有选中can节点的接收报文,获取接收报文的id列表,报文长度列表,报文结构体对象列表,报文接收拷贝函数列表,报文接收确认函数列表。遍历所有选中can节点的接收报文,获取接收报文的id,并把该id转化为字符串文本存放在测试工程对象中。遍历所有选中can节点的接收报文,获取接收报文的dlc,并把该dlc转化为字符串文本存放在测试工程对象中。遍历所有选中can节点的接收报文,获取接收报文的名称,并把该名称加上后缀作为报文结构体对象的指针,把该文本存放在测试工程对象中。遍历所有选中can节点的接收报文,获取接收报文的名称,并把该名称加上precopy后缀,作为报文拷贝函数文本,存放在测试工程对象中。遍历所有选中can节点的接收报文,获取接收报文的名称,并把该名称加上ind后缀,作为报文接收确认函数文本,存放在测试工程对象中。
[0150]
8.遍历所有选中can节点的接收报文,对为il属性的报文配置ilget函数。遍历所有选中can节点的接收报文,获取接收报文并遍历该报文所有的信号,获取信号名称,长度并转化为ilput函数的声明以及对应的函数实现,并分别存放在测试工程对象中。
[0151]
步骤s850,根据节点信息,生成vspy可视化控件工程。
[0152]
遍历处理后的can解析对象所有发送报文,提取相关报文及信号信息创建相关控件生成vspy可视化控件工程。获取发送报文,申请新的vspy控制面板,并按排序生成该发送报文的全部信号。处理完后的可视化控件文本,替换pc上位机软件资源中的默认vspy工程中的关于可视化文本的内容,并生成该工程文件。
[0153]
步骤s860,根据测试工程对象的内容,生成测试工程文件。具体包括:
[0154]
1.遍历处理后的测试工程对象所有发送报文,提取相关报文信息写入到测试工程生成文件中;获取发送报文id列表的文本,转发为can发送id类别数组的定义,并通过文件写入到测试工程生成文件中;获取发送报文dlc列表的文本,转化为can发送dlc列表数组的
定义,并通过文件写入到测试工程生成文件中;获取发送报文结构体对象指针的文本,转化为can发送对象指针数组的定义,并通过文件写入到测试工程生成文件中;获取发送报文预发送函数的文本,转化为can预发送函数指针数组的定义,并通过文件写入到测试工程生成文件中;获取发送报文预发送函数的文本,转化为can发送确认函数指针数组的定义,并通过文件写入到测试工程生成文件中。
[0155]
2.遍历处理后的测试工程对象所有接收报文,提取相关报文信息写入到测试工程生成文件中;获取接收报文id列表的文本,转发为can接收id类别数组的定义,并通过文件写入到测试工程生成文件中;获取接收报文dlc列表的文本,转化为can接收dlc列表数组的定义,并通过文件写入到测试工程生成文件中;获取接收报文结构体对象指针的文本,转化为can接收对象指针数组的定义,并通过文件写入到测试工程生成文件中;获取接收报文拷贝函数的文本,转化为can接收拷贝函数指针数组的定义,并通过文件写入到测试工程生成文件中;获取接收报文接收确认函数的文本,转化为can接收确认函数指针数组的定义,并通过文件写入到测试工程生成文件中。
[0156]
通过上述实施例中提到的用于汽车导航测试的信号模拟方法,通过导入测试模拟原车数据的dbc文件,选择对应的节点,自动生成vspy工程。相关的发送底层代码自动生成,已经按照dbc相关属性发送,能够实现单次或者周期发送报文,并且满足同时发送车辆网络所有报文。相关接收处理自动生成回调函数,只需要在回调函数处理对于的反馈,反馈使用发送信号的ilput函数即可控制接收主机导航的反馈。该方法基于vspy软件的二次开发,采用的硬件设备为valuecan,在价格上远远低于canoe,满足所有开发软件工程师使用;同时该方法基于dbc实现自动化生成发送及接收报文,避免采用方案二中的canpro,cantest软件中人工手动输入添加等等缺点;最后该方法满足在办公室实现模拟原车数据,用于测试导航主机can功能逻辑,避免安排软件工程师在开发阶段出差实车测试验证。
[0157]
对应于上述方法实施例,本发明实施例还提供了一种用于汽车导航测试的信号模拟系统,其结构示意图如图9所示,该系统包括:
[0158]
数据获取模块910,用于获取dbc数据库文件;dbc数据库文件包含汽车导航测试所用的测试数据;
[0159]
测试数据确定模块920,用于根据dbc数据库文件中包含的测试数据,确定汽车导航测试所用的测试报文、测试信号以及属性信息;
[0160]
数据写入模块930,用于将汽车导航测试所用的测试报文、测试信号以及属性信息写入至已初始化的解析对象中;其中,解析对象包含多个can测试节点;can测试节点通过对应的发送报文和接收报文,将测试报文、测试信号以及属性信息保存在解析对象中;
[0161]
可视化生成模块940,用于通过解析对象中can测试节点的数据生成可视化控件;
[0162]
测试文件生成模块950,用于利用可视化控件,通过解析对象中的测试报文、测试信号以及属性信息确定测试工程文件,并通过测试工程文件得到汽车导航测试的信号模拟结果。
[0163]
本发明实施例提供的用于汽车导航测试的信号模拟系统,与上述实施例提供的用于汽车导航测试的信号模拟方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。为简要描述,实施例部分未提及之处,可参考前述方法实施例中相应内容。
[0164]
本实施例还提供一种电子设备,为该电子设备的结构示意图如图10所示,该设备包括处理器101和存储器102;其中,存储器102用于存储一条或多条计算机指令,一条或多条计算机指令被处理器执行,以实现上述用于汽车导航测试的信号模拟方法。
[0165]
图10所示的电子设备还包括总线103和通信接口104,处理器101、通信接口104和存储器102通过总线103连接。
[0166]
其中,存储器102可能包含高速随机存取存储器(ram,random access memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。总线103可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
[0167]
通信接口104用于通过网络接口与至少一个用户终端及其它网络单元连接,将封装好的ipv4报文或ipv4报文通过网络接口发送至用户终端。
[0168]
处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processor,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本公开实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本公开实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器102,处理器101读取存储器102中的信息,结合其硬件完成前述实施例的方法的步骤。
[0169]
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行前述实施例的方法的步骤。
[0170]
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0171]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0172]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0173]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以用软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0174]
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1