CN117201625A - 一种can协议代码生成方法 - Google Patents
一种can协议代码生成方法 Download PDFInfo
- Publication number
- CN117201625A CN117201625A CN202311071413.4A CN202311071413A CN117201625A CN 117201625 A CN117201625 A CN 117201625A CN 202311071413 A CN202311071413 A CN 202311071413A CN 117201625 A CN117201625 A CN 117201625A
- Authority
- CN
- China
- Prior art keywords
- protocol
- target
- code
- value
- target function
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 21
- 238000006243 chemical reaction Methods 0.000 claims abstract description 19
- 230000006870 function Effects 0.000 claims description 97
- 238000007667 floating Methods 0.000 claims description 3
- 125000000524 functional group Chemical group 0.000 claims description 2
- 238000012356 Product development Methods 0.000 abstract description 3
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
Landscapes
- Communication Control (AREA)
Abstract
本发明提供CAN协议代码生成方法,方法包括:步骤1、读取目标原始CAN协议文件,获取转换所需的目标转换信息;步骤2、根据所述目标转换信息生成对应的中间代码;步骤3、根据所述中间代码生成目标编程语言的CAN协议代码。本发明实现了有效降低人为编码带来的失误,提升代码的鲁棒性,缩短HAL层代码的编写时间,缩短产品开发周期,提高产品竞争力。
Description
技术领域
本发明涉及CAN技术领域,尤其涉及一种CAN协议代码生成方法。
背景技术
随着汽车电子技术的快速发展,汽车上的功能越来越丰富,车载设备随之越来越多,各个设备之间需要交互的信息也越来越多,且大部分是通过CAN通讯方式实现的。其中,与整车控制器的CAN通讯协议,一般都是由整车厂制定,并以EXCEL表格的方式提供给车载设备的开发人员,该EXCEL文件中包含了大量的CAN协议数据。
目前,对于这些数据的处理,通常是研发人员采用人工处理的方式转化为目标编程语言的CAN协议代码,并且每个车厂的CAN协议格式都不同,这就导致研发人员不仅需要花费大量的时间手动转换,且手动对每个信号逐一编写代码出错的概率较大,排查起来比较困难,大大降低了开发效率。
发明内容
本发明提供一种CAN协议代码生成方法,旨在解决现有技术中的缺陷,实现有效降低人为编码带来的失误,提升代码的鲁棒性,缩短HAL层代码的编写时间,缩短产品开发周期,提高产品竞争力。
为达到上述目的,本发明所采取的技术方案为:
本发明提供一种CAN协议代码生成方法,包括:
步骤1、读取目标原始CAN协议文件,获取转换所需的目标转换信息;
步骤2、根据所述目标转换信息生成对应的中间代码;
步骤3、根据所述中间代码生成目标编程语言的CAN协议代码;
所述目标转换信息包括:目标功能在目标CAN协议中的信息、所述目标功能在目标代码中的信息、数值类型、功能区域、读写类型、读权限、写权限、最大值、最小值、初始值;
所述目标功能在目标CAN协议中的信息至少包括字节序号、协议分类值(FUN)、协议子类值(CMD)、子命令ID(CMD)、起始位(StartBit)、位长度(bitLen)字段;
所述目标功能在目标代码中的信息至少包括自定义Key名称、Key ID、功能分组(VehiclePropertyGroup,包括系统原生、车厂定制)字段;
所述数值类型(VehiclePropertyType)包括字符串、整型、数组、浮点型;
所述功能区域(Vehicle Area)包括全车、座椅、车窗、车门。
具体地,所述步骤2包括:
步骤201、读取自定义key名称字段的值,并将其作为所述目标功能的变量名称;
步骤202、读取功能分组、KeyID、功能区域、数值类型字段的值,并按照预设规则进行运算,将所述运算的结果作为所述目标功能的变量值;
步骤203、读取读写类型的值,将其作为所述目标功能的变量读写权限;
步骤204、读取最大值、最小值、初始值的值,并分别将其作为所述目标功能变量的最大值、最小值、初始值;
步骤205、读取读权限、写权限的属性,将其作为上层应用注册所述目标功能时所需权限;
步骤206、读取所述目标功能在目标CAN协议中的信息,将其作为所述目标功能接收CAN信息的解析依据;
步骤207、读取所述目标功能在目标代码中的信息,将其作为所述目标功能发送CAN信息的解析依据。
具体地,所述预设规则为或运算。
具体地,所述步骤3包括:
步骤301、根据所述中间代码生成目标编程语言的CAN接口功能代码文件;
步骤302、根据所述中间代码生成CAN协议接收解析代码文件以及CAN协议发送解析代码文件。
具体地,所述步骤301包括:
步骤3011、根据所述目标功能的变量名称和所述目标功能的变量值生成第一接口功能代码文件;
步骤3012、根据所述目标功能的变量名称、所述所述目标功能的变量读写权限以及所述目标功能变量的最大值、最小值、初始值生成第二接口功能代码文件;
步骤3013、根据所述目标功能的变量名称、所述目标功能的变量值以及所述目标功能的变量读写权限生成第三接口功能代码文件。
具体地,所述第一接口功能代码文件为types.hal,所述第二接口功能代码文件为DefaultConfig.h,所述第三接口功能代码文件为VeiclePropertys.java。
具体地,所述步骤302包括:
步骤3021、将所述目标功能的变量值和所述目标功能接收CAN信息的解析依据生成CAN协议接收解析代码文件;
步骤3022、将所述目标功能的变量值和所述目标功能发送CAN信息的解析依据生成CAN协议发送解析代码文件。
具体地,所述成CAN协议接收解析代码文件、CAN协议发送解析代码文件的格式为.json。
进一步地,在所述步骤3之后还包括:
步骤S4、将所述目标编程语言的CAN协议代码上传到目标工程中编译,判断是否通过编译,是则判断原始CAN协议文件转换正确,否则输出错误信息。
具体地,所述原始CAN协议文件为EXCEL文件。
本发明的有益效果在于:本发明通过读取目标原始CAN协议文件,获取转换所需的目标转换信息,然后根据目标转换信息生成对应的中间代码,再根据所述中间代码生成目标编程语言的CAN协议代码,实现了有效降低人为编码带来的失误,提升代码的鲁棒性,缩短HAL层代码的编写时间,缩短产品开发周期,提高产品竞争力。
附图说明
图1是本发明的CAN协议代码生成方法的流程示意图。
具体实施方式
下面结合附图具体阐明本发明的实施方式,附图仅供参考和说明使用,不构成对本发明专利保护范围的限制。
在本发明的说明书、权利要求书或附图中描述的流程中,包含各个步骤的序号(如步骤10、20等),所述序号仅用于区分开各个步骤,所述序号本身不代表任何的执行顺序。需要说明的是,本文中的“第一”、“第二”等描述,仅用于区分描述对象等,不代表先后顺序,也不表示“第一”、“第二”等是不同的类型。
如图1所示,本实施例提供一种CAN协议代码生成方法,包括:
步骤1、读取目标原始CAN协议文件,获取转换所需的目标转换信息。
在本实施例中,所述目标转换信息包括:目标功能在目标CAN协议中的信息、所述目标功能在目标代码中的信息、数值类型、功能区域、读写类型、读权限、写权限、最大值、最小值、初始值;
所述目标功能在目标CAN协议中的信息至少包括字节序号、协议分类值(FUN)、协议子类值(CMD)、子命令ID(CMD)、起始位(StartBit)、位长度(bitLen)字段;
所述目标功能在目标代码中的信息至少包括自定义Key名称、Key ID、功能分组(VehiclePropertyGroup,包括系统原生、车厂定制)字段;
所述数值类型(VehiclePropertyType)包括字符串、整型、数组、浮点型;
所述功能区域(Vehicle Area)包括全车、座椅、车窗、车门。
在本实施例中,所述原始CAN协议文件为EXCEL文件。
步骤2、根据所述目标转换信息生成对应的中间代码。
在本实施例中,所述步骤2包括:
步骤201、读取自定义key名称字段的值,并将其作为所述目标功能的变量名称。
步骤202、读取功能分组、KeyID、功能区域、数值类型字段的值,并按照预设规则进行运算,将所述运算的结果作为所述目标功能的变量值。
在本实施例中,所述预设规则为或运算。
步骤203、读取读写类型的值,将其作为所述目标功能的变量读写权限。
步骤204、读取最大值、最小值、初始值的值,并分别将其作为所述目标功能变量的最大值、最小值、初始值。
步骤205、读取读权限、写权限的属性,将其作为上层应用注册所述目标功能时所需权限。
步骤206、读取所述目标功能在目标CAN协议中的信息,将其作为所述目标功能接收CAN信息的解析依据。
步骤207、读取所述目标功能在目标代码中的信息,将其作为所述目标功能发送CAN信息的解析依据。
步骤3、根据所述中间代码生成目标编程语言的CAN协议代码。
在本实施例中,所述步骤3包括:
步骤301、根据所述中间代码生成目标编程语言的CAN接口功能代码文件。
在本实施例中,所述步骤301包括:
步骤3011、根据所述目标功能的变量名称和所述目标功能的变量值生成第一接口功能代码文件。
在本实施例中,所述第一接口功能代码文件为types.hal。
步骤3012、根据所述目标功能的变量名称、所述所述目标功能的变量读写权限以及所述目标功能变量的最大值、最小值、初始值生成第二接口功能代码文件。
在本实施例中,所述第二接口功能代码文件为DefaultConfig.h。
步骤3013、根据所述目标功能的变量名称、所述目标功能的变量值以及所述目标功能的变量读写权限生成第三接口功能代码文件。
在本实施例中,所述第三接口功能代码文件为VeiclePropertys.java。
步骤302、根据所述中间代码生成CAN协议接收解析代码文件以及CAN协议发送解析代码文件。
在本实施例中,所述步骤302包括:
步骤3021、将所述目标功能的变量值和所述目标功能接收CAN信息的解析依据生成CAN协议接收解析代码文件receive.json;
步骤3022、将所述目标功能的变量值和所述目标功能发送CAN信息的解析依据生成CAN协议发送解析代码文件send.json。
在本发明的另一个实施例中,在所述步骤3之后还包括:
步骤S4、将所述目标编程语言的CAN协议代码上传到目标工程中编译,判断是否通过编译,是则判断原始CAN协议文件转换正确,否则输出错误信息。
以上所揭露的仅为本发明的较佳实施例,不能以此来限定本发明的权利保护范围,因此依本发明申请专利范围所作的等同变化,仍属本发明所涵盖的范围。
Claims (10)
1.一种CAN协议代码生成方法,其特征在于,包括:
步骤1、读取目标原始CAN协议文件,获取转换所需的目标转换信息;
步骤2、根据所述目标转换信息生成对应的中间代码;
步骤3、根据所述中间代码生成目标编程语言的CAN协议代码;
所述目标转换信息包括:目标功能在目标CAN协议中的信息、所述目标功能在目标代码中的信息、数值类型、功能区域、读写类型、读权限、写权限、最大值、最小值、初始值;
所述目标功能在目标CAN协议中的信息至少包括字节序号、协议分类值(FUN)、协议子类值(CMD)、子命令ID(CMD)、起始位(StartBit)、位长度(bitLen)字段;
所述目标功能在目标代码中的信息至少包括自定义Key名称、Key ID、功能分组(VehiclePropertyGroup,包括系统原生、车厂定制)字段;
所述数值类型(VehiclePropertyType)包括字符串、整型、数组、浮点型;
所述功能区域(Vehicle Area)包括全车、座椅、车窗、车门。
2.根据权利要求1所述的CAN协议代码生成方法,其特征在于,所述步骤2包括:
步骤201、读取自定义key名称字段的值,并将其作为所述目标功能的变量名称;
步骤202、读取功能分组、KeyID、功能区域、数值类型字段的值,并按照预设规则进行运算,将所述运算的结果作为所述目标功能的变量值;
步骤203、读取读写类型的值,将其作为所述目标功能的变量读写权限;
步骤204、读取最大值、最小值、初始值的值,并分别将其作为所述目标功能变量的最大值、最小值、初始值;
步骤205、读取读权限、写权限的属性,将其作为上层应用注册所述目标功能时所需权限;
步骤206、读取所述目标功能在目标CAN协议中的信息,将其作为所述目标功能接收CAN信息的解析依据;
步骤207、读取所述目标功能在目标代码中的信息,将其作为所述目标功能发送CAN信息的解析依据。
3.根据权利要求2所述的CAN协议代码生成方法,其特征在于,所述预设规则为或运算。
4.根据权利要求2所述的CAN协议代码生成方法,其特征在于,所述步骤3包括:
步骤301、根据所述中间代码生成目标编程语言的CAN接口功能代码文件;
步骤302、根据所述中间代码生成CAN协议接收解析代码文件以及CAN协议发送解析代码文件。
5.根据权利要求4所述的CAN协议代码生成方法,其特征在于,所述步骤301包括:
步骤3011、根据所述目标功能的变量名称和所述目标功能的变量值生成第一接口功能代码文件;
步骤3012、根据所述目标功能的变量名称、所述所述目标功能的变量读写权限以及所述目标功能变量的最大值、最小值、初始值生成第二接口功能代码文件;
步骤3013、根据所述目标功能的变量名称、所述目标功能的变量值以及所述目标功能的变量读写权限生成第三接口功能代码文件。
6.根据权利要求5所述的CAN协议代码生成方法,其特征在于,所述第一接口功能代码文件为types.hal,所述第二接口功能代码文件为DefaultConfig.h,所述第三接口功能代码文件为VeiclePropertys.java。
7.根据权利要求4所述的CAN协议代码生成方法,其特征在于,所述步骤302包括:
步骤3021、将所述目标功能的变量值和所述目标功能接收CAN信息的解析依据生成CAN协议接收解析代码文件;
步骤3022、将所述目标功能的变量值和所述目标功能发送CAN信息的解析依据生成CAN协议发送解析代码文件。
8.根据权利要求7所述的CAN协议代码生成方法,其特征在于,所述成CAN协议接收解析代码文件、CAN协议发送解析代码文件的格式为.json。
9.根据权利要求1所述的CAN协议代码生成方法,其特征在于,在所述步骤3之后还包括:
步骤S4、将所述目标编程语言的CAN协议代码上传到目标工程中编译,判断是否通过编译,是则判断原始CAN协议文件转换正确,否则输出错误信息。
10.根据权利要求1~9任一项所述的CAN协议代码生成方法,其特征在于,所述原始CAN协议文件为EXCEL文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311071413.4A CN117201625A (zh) | 2023-08-23 | 2023-08-23 | 一种can协议代码生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311071413.4A CN117201625A (zh) | 2023-08-23 | 2023-08-23 | 一种can协议代码生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117201625A true CN117201625A (zh) | 2023-12-08 |
Family
ID=89002644
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311071413.4A Pending CN117201625A (zh) | 2023-08-23 | 2023-08-23 | 一种can协议代码生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117201625A (zh) |
-
2023
- 2023-08-23 CN CN202311071413.4A patent/CN117201625A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102098131B (zh) | 一种基于动态参数配置的串口数据帧通用组帧解帧方法 | |
CN101283349B (zh) | 用Golomb码压缩语言模型 | |
CN111427940B (zh) | 一种自适应数据库转换方法及装置 | |
CN109861998B (zh) | 一种基于北斗短报文协议的插件式动态解析系统及方法 | |
CN112445160B (zh) | 一种ecu配置码的自动生成方法及装置 | |
CN114546394B (zh) | 统一的物联网外设接入与控制方法 | |
CN117201625A (zh) | 一种can协议代码生成方法 | |
CN114510357A (zh) | 一种卫星发射场试验鉴定业务消息交互方法及系统 | |
CN111464267B (zh) | 通信数据校验方法、装置、计算机设备和存储介质 | |
CN110839022A (zh) | 一种基于xml语言的车载控制软件通信协议解析方法 | |
CN102377894A (zh) | 成像盒芯片修改方法和修改装置 | |
CN115345600A (zh) | 一种rpa流程的生成方法和装置 | |
CN115150483A (zh) | 一种网络数据包解析方法、系统及可读存储介质 | |
CN110909256A (zh) | 计算机用的人工智能信息过滤系统 | |
KR20030080872A (ko) | 주변 기기의 상태 체크 방법 및 장치 | |
CN115203096B (zh) | 一种sim卡拉远的实现方法 | |
CN116634036A (zh) | 一种航电数据接口装置的协议转换配置方法及系统 | |
CN114595296A (zh) | 一种汽车整车电子电气数据全配置化定义方法 | |
CN118070742B (zh) | 文档生成方法、装置、设备、存储介质及产品 | |
CN115348320B (zh) | 一种通信数据的转换方法、装置、及电子设备 | |
CN103092752A (zh) | 一种仪器属性的错误识别方法 | |
CN115567340B (zh) | Can总线的测试工程生成方法、装置、设备及介质 | |
CN112817988B (zh) | 一种企业业务的同步加速方法 | |
US8144730B2 (en) | Automated tactical datalink translator | |
CN117880392A (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 |