转眼间也工作了一月时间,在部门导师和论坛大牛带领下,我完成了工作内容之一:将0x22系列SID的需求转换为工程代码。在此记录一下,加深印象也方便以后回溯。
UDS协议中的各种格式等在此不再赘述。
简单介绍一下本次工作流程:工作形式与我想象中的有些不同,(懒得排版了)
工作流程为A<——>B<——>C(上位机),我本次充当了B这一角色。原以为我所交互的A和C会是MCU或是Eeprom等外设,实则不然,全是与同事的交互。
流程大致为
C向B发送他所需的功能、对应参数(0x22和SID)和所需数据格式
然后B向A发送读取内容请求,而后获取到A为B准备好的内容
B按照数据格式为C准备好C所需的数据
把数据存进固定的全局变量结构体中,同时告诉C本次读取DID数据完成
然后C来读取全局结构体中数据。
具体步骤如下。
一、根据需求中的数据撰写索引结构体
此结构体数组为自己创立,仅适用于0x22这一SID,用于在传入DID后可查询到DID的多个数据。
我将所需读取的多个DID的数据(DID、SA安全等级、需要读取的数据长度,我自己定义的触发函数,我自己定义的结果函数)封装进一个结构体中,结构体的元素类型为上述括号内数据,再将结构体封装成数组,数组的大小就是本项目中0x22功能所有的DID的个数,这就是保