Vector - CAPL - Write窗口常用函数

在CAPL自动化开发中,特别是通过Vector CAPL Browser开发中,最终都是通过仿真节点来进行最终的测试,然而这种测试方式没有自动化执行过程报告,只能通过最后的html报告来查看执行过程,那我们是否有更好的调试方法呢?当然是有的,那就是write窗口,通过该窗口我们不但可以打印执行流程的log,也可以输出任意我们需要的数据,方便快捷的实现自动化调试;下面我们就来介绍与之相关的常见函数。

Write

功能:将文本消息输出到写入窗口。Write基于C函数printf。

编译器无法检查格式字符串。非法的格式条目将导致未定义的结果。使用写入功能输出的消息将显示在单独的行上。

注意:%n格式无效,不能使用

参数介绍:

CAPL Type

Display Description

Format Windows

Format Linux

int

int型显示

%d

%d

long

long型显示

%ld

%d

int64

int64型显示

%I64d or %lld

%ld or %lld

byte/word

无符号显示

%u

%u

dword

无符号显示

%lu

%u

qword

无符号显示

%I64u or %llu

%lu or %llu

byte/word/int

十六进制显示

%x

%x

dword/long

十六进制显示

%lx

%x

qword/int64

十六进制显示

%I64x or %llx

%lx or %llx

byte/word/int

十六进制显示(大写)

%X

%X

dword/long

十六进制显示(大写)

%lX

%X

qword/int64

十六进制显示(大写)

%I64X or %llX

%lX or %llX

byte/word/int

八进制显示

%o

%o

dword/long

八进制显示

%lo

%o

qword/int64

八进制显示

%I64o or %llo

%lo or %llo

float/double

浮点型显示

%g or %f

%g or %f

字符型显示

%c

%c

字符串显示

%s

%s

%字符的显示

%%

%%

dword

32-bit pointer (without implicit pointer format 0xABABABAB)

%p

%08x

32-bit pointer (with implicit pointer format 0xABABABAB)

%#p

%p

qword

64-bit pointer (without implicit pointer format 0xABABABABABABABAB)

%I64p

%016lx

64-bit pointer (with implicit pointer format 0xABABABABABABABAB)

%#I64p

%p

代码示例:

float f=123.456;
on key 'h'
{
   write("Hello World!");
   write("f = %5.3f",f);
   write("format is not supported for the given variable");
   write("f = %7.3f",f);
   write("f = %9.3f",f);
}

on key 'q'
{
   qword q = 0x1234567890ABCDEFLL;
   write("Decimal: %I64u", q);
   write("Hexadecimal: %I64X", q);
}

on key 'd'
{
   dword d = 0x1234;
   write("Decimal: %u", d);
   write("Hexadecimal: %X", d);
}

WriteClear

功能:清除“写入窗口”中指定页面的内容。目标标识符或消息类型使用以下常量:

//写入接收器

双字WRITE_SYSTEM=0;

双字WRITE_CAPL=1;

使用writeCreate函数返回的目标标识符之一。可以使用“-1”作为参数清除所有选项卡。Overview页面不能单独清除。

sink:要删除的页面的目标标识符。

WriteCreate

功能:在写入窗口中生成具有指定名称的新页面;下次开始测量时,页面将自动删除。

name:创建新页面的名字

返回值:对输出到新页面有效的接收器标识符

WriteDestory

功能:从写入窗口中删除指定的页面。只能删除借助writeCreate函数创建的页面。

sink:要删除的页面的目标标识符

代码示例:

variables
{
    //接收器标识符
    long mNewPage; 
}

on start
{
    //在写入窗口创建新页面
    mNewPage= writeCreate("New Page");
    
    //配置页面以记录其内容
    writeConfigure(mNewPage, 20, 1, "c:\\temp\\writelog.TXT");
    
    //清除CAPL页面的内容
    writeclear(1);
    
    //显示程序说明
    writeLineEx(mNewPage,2,"This program shows the keyboard sequence in a new created Page ");
    writeLineEx(mNewPage,4,"\nKeyboard sequence: ");
}

on key *
{
    //在“新建页面”中显示当前密钥
    char currentKey;
    currentKey = this;
    writeEx(mNewPage,4,"%c ",currentKey);
}

on stopMeasurement
{
    //关闭新创建的页面
    writeDestroy(mNewPage);
}

WriteEx

功能:将文本写入指定窗口的最后一行或写入写入窗口的页面,而不必创建新行。

说明:将文本写入指定CANoe窗口的最后一行、写入窗口的页面或日志文件中,而无需创建新行。

要写入CANoe Trace Window,请在跟踪窗口的预定义过滤器中激活CAPL系统消息。

sink:将向其进行输出的页面的接收器标识符

-3

CANoe Trace窗口

-2

输出到日志文件(仅以ASC格式,如果CAPL节点插入到日志块前面的测量设置中)保留

-1

保留值

0

输出到write窗口的System页面

1

输出到write窗口的CAPL页面

4

输出到write窗口的Test页面

severity:消息类型的常量。

0

Success

1

Information

2

Warning

3

Error

format:输出类型,参考write参数介绍

writeLineEX

功能:将文本写入指定窗口的新行或写入窗口的页面

说明:将文本写入指定CANoe窗口的最后一行、写入窗口的页面或日志文件中,而无需创建新行。

要写入CANoe Trace Window,请在跟踪窗口的预定义过滤器中激活CAPL系统消息。

其他参数参考WriteEx函数

writeTextBkgColor

功能:设置“写入窗口”中指定页面的文本背景颜色

说明:设置“写入窗口”中指定页面的文本背景颜色;您可以使用以下常量作为目标标识符:

//写入接收器

双字WRITE_SYSTEM=0;

双字WRITE_CAPL=1;

此外,您可以使用writeCreate函数返回的目标标识符之一;颜色设置也会影响“写入窗口”的“全部”页面。

sink:颜色设置应影响的页面的目标标识符。

red:指定红色的强度。

green:指定绿色的强度。

blue:指定蓝色的强度。

WriteTextBkgColor(0,0,255,0);
WriteLineEx(0,1,"This is red text with green background");

WriteTextColor(0,0,0,0);
WriteTextBkgColor(0,255,255,255);
WriteLineEx(0,1,"This is black text with white background");

writeTextColor

功能:设置“写入窗口”中指定页面的文本颜色

参数参考函数writeTextBkgColor

代码示例:

WriteTextColor(0,255,0,0);
WriteLineEx(0,1,"This is red text");

以上就是write窗口或log输出常用函数,方便大家的代码调试和问题分析,欢迎评论区沟通!!!

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
可以使用CAPL语言中的`write`函数来将trace窗口的报文写入到一个文件中,然后再使用CAPL语言中的文件操作函数将文件中的内容读取到一个数组中。 以下是一个示例代码,将trace窗口中的报文统计到一个数组中: ``` variables { message messages[1000]; // 定义一个数组来存储报文 int msgCount = 0; // 报文数量 file traceFile; // 文件对象 } on start { traceFile = fopen("trace.log", "w"); // 打开文件,以写入模式 if(traceFile == NULL) { write("Error opening trace file"); return; } setTraceFormat(1); // 设置trace窗口的格式为ASCII } on message CAN1.* { write(traceFile, this); // 将报文写入文件 msgCount++; // 统计报文数量 } on stop { fclose(traceFile); // 关闭文件 traceFile = fopen("trace.log", "r"); // 以读取模式打开文件 if(traceFile == NULL) { write("Error opening trace file"); return; } char line[256]; int i = 0; while(fgets(line, sizeof(line), traceFile) != NULL) // 逐行读取文件内容 { messages[i] = this; // 将报文存入数组 i++; } writef("Total messages: %d", msgCount); // 输出报文数量 fclose(traceFile); // 关闭文件 } ``` 在上述代码中,我们使用`setTraceFormat`函数将trace窗口的格式设置为ASCII,然后在`on message`事件中使用`write`函数将报文写入到一个文件中。在`on stop`事件中,我们再次打开文件,逐行读取文件内容,并将报文存入一个数组中。最后,我们输出报文数量并关闭文件。 需要注意的是,以上代码仅供参考,具体实现可能需要根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

车载网络测试

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

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

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

打赏作者

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

抵扣说明:

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

余额充值