CAPL脚本函数不能返回数组的替代方案
代码测试环境:
电脑系统: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; }输出结果:
