【CAPL】CANoe数据监测功能statistics 及 获取并输出busload
CANoe数据监测功能
打开CANoe的数据监测窗口
-
Analysis标签下:statistics
- 除了busload外,还有很多总线数据值
- 运行中的数据监测窗口
在帮助文档中学习
CAPL获取busload
节点网络
- switch节点发送报文,light接收报文
要点注意
write("busload is %d",@sysvar::_Statistics::CAN1::Busload);
:- 不写
%d
会导致错误,只输出字符串,不输出后面的busload值
- 不写
- 插入busload参数:右键选择
代码示例
- 注:直接输出,值为0
on start { //.. setTimer(busloadTimer, 200); } on timer busloadTimer { write("busload is %d",@sysvar::_Statistics::CAN1::Busload); setTimer(busloadTimer,200); }
运行效果
- busload在write中输出为0,与statistic窗口中的值不一致,全为0
获取statistics窗口中的参数并输出
添加program node
- measurement的trace左侧小方块:右击-添加program node
打开此program node的CAPL代码
- 双击如图 P 可打开:第一次打开时为创建,输入文件名
- 注意:P节点,是串在trace的必经之路上的,要在获取到busload值后将其发给trace
创建系统变量保存busload的值
- 设置初始值为0
将busload赋值给系统变量busloadValue,并输出
-
traceNode.can:
on sysvar sysvar::_Statistics::CAN1::Busload { @sysvar::MyNamesapce::busloadValue = @this; }
-
switch.can
on start { setTimer(checkTimer,200); } on timer checkTimer { //write("busload: %d",@sysvar::_Statistics::CAN1::Bursts); write("busload: %d",@sysvar::MyNamesapce::busloadValue); setTimer(checkTimer,200); }
运行效果
- write可以输出正常的busload值
- 但trace窗口空白:因为 以上的P节点,作为中转没有将数据传递给trace
P节点的数据传递给trace
- traceNode.can: 添加
on message *
- 解释为:拿到的任何消息,都发出来,即传递给下游的trace
on message * { output(this); }