在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输出常用函数,方便大家的代码调试和问题分析,欢迎评论区沟通!!!