- CANoe_UDS-booroader 自动化测试系列(一)创建一个CANoe测试工程(测试节点的选选择)
- CANoe_UDS-booroader 自动化测试系列(二)基本刷写流程
- CANoe_UDS-booroader 自动化测试系列(三)基本功能:CAPL实现UDS协议下的CAN报文接收#解析#发送
- CANoe_UDS-booroader 自动化测试系列(四)基本功能:CAPL实现#10服务会话控制
- CANoe_UDS-booroader 自动化测试系列(五)基本功能:CAPL实现#27服务安全解锁
- CANoe_UDS-booroader 自动化测试系列(六)基本功能:CAPL实现bin文件数据解析
- CANoe_UDS-booroader 自动化测试系列(七)基本功能:CAPL实现#34#36#37服务#数据下载
- CANoe_UDS-booroader 自动化测试系列(八)基本功能:CAPL实现#31服务#例程控制
- CANoe_UDS-booroader 自动化测试系列(九)基本功能:CAPL实现#22#2E服务#DID读写
- CANoe_UDS-booroader 自动化测试系列(十)基本功能:CAPL实现#28#85服务#预编程操作
- CANoe_UDS-booroader 自动化测试系列(十一)基本功能:CAPL实现CRC数据校验
- CANoe_UDS-booroader 自动化测试系列(十二)基本功能:CAPL实现pane面板制作
- CANoe_UDS-booroader 自动化测试系列(十三)CAPL框架下的全流程测试
一、前言
hello,大家好,我是小鸟鹏。
上一篇给大家介绍了如何通过CAPL脚本实现一键通过#0x27安全访问,今天我打算介绍一下在CAPL中如何获取panel 上 Path Diaglog 文件路径信息,并且通过CAPL内置的函数接口解析文件信息,提取出文件数据和数据大小。分析源码和思路。
二、面板
#文件路径组件 Path Diaglog
面板大概是下面这个样子,最重要的是两个Path Diaglog,一个用于加载app的文件路径,一个用于加载flashdriver的文件路径。其实并不复杂,定义好后将组件和系统变量关联起来即可,我们需要时读取系统变量就能得到相对应的文件路径。
#系统变量
三、CAPL读取文件路径
1、读取文件路径
#读取系统变量所使用的函数接口:
sysGetVariableString();
#读取一个字符串类型的系统变量到缓存区
sysGetVariableString(sysvar::SysVar_Flash_Driver_File, FlashDrvFileAddress, elCount(FlashDrvFileAddress));
#函数的三个参数:
①.系统变量(sysvar::SysVar_Flash_Driver_File)
②.系统变量缓存区(FlashDrvFileAddress)
③.缓存区大小(FlashDrvFileAddress)
2、通过文件路径得到句柄
#打开文件函数接口
OpenFileRead();
#得到文件句柄
glbHandle = OpenFileRead(FlashDrvFileAddress, 1);
以上的这个函数接口同通过文件路径得到了一个句柄,通过这个句柄我们就能够轻松得到文件的数据和大小了。
3.解析文件
#读取文件数据的函数接口
fileGetBinaryBlock();
#读取文件数据和大小
ulDataLength = fileGetBinaryBlock(ucDataBuf, BIN_FILE_MAX_SIZE, glbHandle);
通过以上的接口,我们只需要传入句柄和一个数据缓存区就可以得到.bin文件的数据和大小,文件数据由参数返回,函数返回值则是数据的大小。通过以上的步骤我们得到了固件的数据和大小,因为这一篇讲的是解析.bin文件,所以还没有地址信息,我们根据项目需求自行设置即可,使用时在面板输入文件路径后在测试用例开始前调用即可。这一步完成后下一步就可以进行固件传输了。
#完整代码
void GetApplicationFileInformation(void)
{
dword glbHandle = 0;
char ApplicationFileAddress[200];
sysGetVariableString(sysvar::SysVar_Application_File, ApplicationFileAddress, elCount(ApplicationFileAddress));
if (ApplicationFileAddress[0] != 0)
{
write("ApplicationFileAddress:%s", ApplicationFileAddress);
glbHandle = OpenFileRead(ApplicationFileAddress, 1);
ulDataLength = fileGetBinaryBlock(g_stApplicationInfor.ucDataBuf, BIN_FILE_MAX_SIZE, glbHandle);
ulStartAddress = AppStartAddrs;
ulStopAddress = ulStartAddress + ulDataLength;
}
}
四、总结
今天给大家介绍了在CAPL中如何使用面板和一些内置的函数接口去获取文件路径以及解析我们的固件信息,相信看完后你也轻松实现了,基于前面几篇的知识点结合今天的内容,搭建起一个CAPL测试脚本框架基本上没啥问题的。如果对大家有帮助,求个三连,码字不易,大家的支持是我更新的最大动力【感谢】。
下一篇:
CANoe_UDS-booroader 自动化测试系列(七)基本功能:CAPL实现#34#36#37服务#数据下载
如果这篇博客对你有帮助,请 “点赞” “评论”“收藏”一键三连 哦!码字不易,大家的支持就是我坚持下去的动力。
作者:小鸟鹏
联系方式:
邮箱:502756962@qq.com
标签:bin,UDS,测试,文件,CANoe,CAPL,booroader From: https://blog.csdn.net/m0_68882790/article/details/141429348