CAPL入门之使用CAPL记录测试Logging

0 前言

        以往测试的log都是直接从trace导出,但是最近发现trace中能导出的数据是有限的,如果测试的时间过长,新的数据就会把之前的数据全部覆盖,并且对于长时间的测试,直接导出trace的内容也会造成查找效率低下的问题。因此熟练的使用Logging功能还是很有必要的。

1 函数介绍

、CAPL代码很简单,一共三个函数,结构如下所示:

    setLogFileName("StressTest","..\\TestLogging\\Flash100");
    startLogging("StressTest");
     
    /*
        需要记录的过程放在这里
    */
    stopLogging("StressTest");

setLogFileName:

setLogFileName(char fileName[]); // form 1

setLogFileName(char strLoggingBlockName[], char fileName[]); // form 2

fileName:名称可以是绝对路径、单个文件名或相对路径。如果提供了绝对路径或相对路径,则将创建该路径的所有非现有目录。如果提供了单个文件名,则日志记录文件将放置在当前配置的目录中,如果提供了相对路径,则将放置在与配置文件相关的路径中。路径的目录必须用反斜杠 (\\) 分隔。文件名可以包含文件扩展名。如果未输入扩展名,则将自动设置上次使用的文件类型。如果给定了无效的扩展名,则该函数将不执行任何操作。

strLoggingBlockName:Logging Block的名字,后续在TIPS中有具体讲解。

startLogging:

void startLogging(); // from 1

void startLogging(char strLoggingBlockName[]); // from 2

void startLogging(char strLoggingBlockName[], long preTriggerTime); // from 3

如果是格式1,那就是开启所有的Logging Block进行录制。

格式2,就是开启你想开启的LoggingBlock进行录制,比如你有很多个LoggingBlock,有的录制Flash,有的录制诊断,这时候你就可以选择开启哪个LoggingBlock进行录制,

格式3,就是在格式2的基础上,设定提前trigger前多久开始录制,时间单位为ms。

stopLogging:

void stopLogging(); // from 1

void stopLogging(char strLoggingBlockName[]); // from 2

void stopLogging(char strLoggingBlockName[], long postTriggerTime); // from 3

与startLogging:基本一致就不做过多介绍了

TIPS:

1.对于新手来说,首先需要注意的是,measurement中的Logging功能需要打开,不然是无法记录的:

2.在默认设置下,所有的log会被保存在同一个文件中:

 如果想要是做压力测试,想要分段保存每一次的Log便于后期排查,可以将文件名称改成按trigger次数增加,这样文件就是按照次数依次分开:

3. 函数内容与文件名的相对应关系如下所示(因涉及项目,部分内容将隐去)

 

4.如果是通过capl来控制记录的话,logging存储的地址需要在CAPL函数中进行更改而不是在measurement中更改。

5. trigger模式下,只要测量一开始就会开始记录,因此想用capl控制的话这里需要注意模式调整。

-----2024/05/22更新 -------

这两天看到北汇也出了一篇文章讲logging,和本篇搭配学习基本可以解决百分之99%的logging问题。在这里分享给大家,链接如下:https://polelink.youkuaiyun.com/664d61dc5eb5ae7f64157193.html?utm_medium=notify.im.marketing.399.a&username=weixin_47469084icon-default.png?t=N7T8https://polelink.youkuaiyun.com/664d61dc5eb5ae7f64157193.html?utm_medium=notify.im.marketing.399.a&username=weixin_47469084

### 回答1: CAPL是一种高级编程语言,广泛应用于汽车电子领域。其中的openfileread函数可用于读取文件的内容并存储到变量中。路径参数指定要读取的文件路径,可以是绝对路径或相对路径。 相对路径指相对于当前工作目录的路径,可以使用相对路径指定要打开的文件,如“./data.txt”或“../logs/logfile.txt”等。如果要访问外部文件夹,可以使用绝对路径。 使用openfileread函数打开文件并读取内容时,如果文件打开成功,则函数返回一个非负整数,表示该文件的文件描述符,可以用于后续文件操作。如果文件打开失败,则返回一个负数值。 读取文件内容后,可以使用该文件描述符调用读取函数来获取文件中的数据,并将其存储到相应的变量中。读取函数返回已读取的字节数。如果读取成功,则返回读取的字节数;如果发生错误,则返回-1。 在使用openfileread函数时,需要注意以下几点: 1. 打开文件时应该使用“rb”模式,以二进制方式打开,保证正确读取文件内容。 2. 读取文件时需要使用循环进行多次读取,以确保文件中所有数据都被读取。 3. 执行完读取操作后,应该关闭文件以释放资源,并将文件描述符变量设置为-1。 4. 在使用该函数之前,需要确保文件存在并有足够的读取权限,否则会导致函数执行失败。 ### 回答2: capl openfileread 路径是一个CANoe中专门用于打开并读取文件的代码函数。这个函数可以读取一些文本文件,包括日志文件、配置文件和数据文件等等。在该函数中,路径指的是文件在电脑中存储的本地路径。如果文件位于CANoe文件夹下的子文件夹内,则路径需要设置为相对路径,例如“config\myfile.txt”。而如果文件不在CANoe文件夹下,则需要将路径设置为绝对路径,例如“C:\Users\username\Documents\myfile.txt”。 当调用这个函数时,必须要将路径作为参数传入。如果路径不存在或者文件无法打开,则这个函数将会返回一个错误码,而文件也无法被读取。如果文件被成功打开,则可以通过之后的读取函数来逐行读取文件内容,获取所需要的信息。 Capl openfileread 路径功能强大、使用简便、控制方便、效果良好,是CANoe最常用的函数之一。因此,对于需要进行文件读取工作的工程师来说,熟悉 capl openfileread 路径的使用方法是非常重要的。 ### 回答3: CAPL语言中,openFileRead()函数可以用于打开一个文档文件,并以只读模式读取文件内容。该函数的参数为一个字符串类型的文件路径,表示要打开的文件的文件名和路径。函数执行成功后,可使用fileGetChar()、fileGetString()等函数来读取文件内容。如果打开文件失败,则会返回一个负数值。在使用openFileRead()函数时,需要注意路径中的反斜杠应该用两个反斜杠或单斜杠代替,以避免转义符带来的问题。 例如: int fileHandle; fileHandle = openFileRead("C:\\Users\\Documents\\test.txt"); 这段代码表示在用户文档目录下打开名为test.txt的文件,并将文件句柄保存在变量fileHandle中,以便后续读取文件。 总之,openFileRead()函数是CAPL语言中常用的文件处理函数之一,使用起来要注意路径格式和打开文件的权限。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IAMeee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值