代码测试环境:
电脑系统:win11 x64
CANoe版本:CANoe 12.0 SP5
这里可以明确告诉大家,CAPL脚本函数不能通过return直接返回一个数组,但是由于CAPL是一个类C的语言,我们可以像C语言一样让函数把数组传递出来。
on key 'k'
{
byte getval[4];
byte idx;
testfunc(getval);
for(idx=0;idx<elCount(getval);idx++)
{
writeLineEx(-3,1,"getval[%d] = 0x%x",idx,getval[idx]);
}
}
void testfunc(byte outval[])
{
byte var[4] = {0x01,0x02,0x03,0x04};
byte outval_length,idx;
outval_length=elCount(outval);
if(outval_length<4)return;
for(idx=0;idx<outval_length;idx++)
{
outval[idx]=var[idx];
}
}
输出结果:
这种方式也可以用来传递单个变量
on key 'k'
{
byte getval;
byte idx;
testfunc(getval);
writeLineEx(-3,1,"getval = 0x%x",getval);
}
void testfunc(byte& outval)
{
byte var = 0x02;
outval = var;
}
输出结果: