CANoe_UDS-boorloader 自动化测试系列(六)基本功能:CAPL实现bin文件数据解析

一、前言

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值