来看下CAPL都提供哪些获取当前时间函数吧!

电子说

1.2w人已加入

描述

在自动化开发中,无论是CAN通信测试,还是网络管理测试,亦或是休眠唤醒等等存在时间相关的,都可能会使用相关的时间函数;今天主要介绍的就是获取当前时间,我们知道vector工具的最大优势就是稳定和精确度高,这体现在我们使用工具的方方面面,今天我们来介绍的就是获取的运行的相对时间,包含10微秒级和纳秒级,下面我们就来看下CAPL都提供哪些获取当前时间函数吧!

10微秒级

timeNow

LIN

返回值:10ms级的CANoe工程启动到执行到该函数的时间;整数类型

常见用法:time_now_ms = timeNow()/100, time_now_ms就是CANoe启动到执行到该行的运行时间,单位为ms,一般来说大部分测试达到满足毫秒级即可,极个别需要精确到微秒甚至纳秒的时候我们才会使用其他方法。

timeNow :time_now_ms的最大值:2^32*10微秒=11小时55分钟49秒672毫秒96微秒;如果是长时间压力测试的时候使用该函数需要注意处理最大值,以免测试结果的误判。

timeNowint64 :如果是长时间压力测试的时候建议使用该函数。

timeNowFloat

LIN

返回值:10ms级的CANoe工程启动到执行到该函数的时间;浮点类型

常见用法:time_now_ms = timeNow()/100, time_now_ms就是CANoe启动到执行到该行的运行时间,单位为ms,一般来说大部分测试达到满足毫秒级即可,极个别需要精确到微秒甚至纳秒的时候我们才会使用其他方法。

如果是长时间压力测试的时候使用该函数需要注意处理最大值,以免测试结果的误判。

timeDiff

LIN

message:CAN报文 例如:message 0x100 msg;则msg就代表报文ID为0x100的报文,msg.dlc即为报文0x100的长度都可通过msg.xx进行设置(FDF/BRS/R0/R1等等参数),设置内容函数MessageTimeNS中的message介绍。

NOW:当前时间

返回值:报文m1到当前的时间差或者报文m1和报文m2之间的时间差。

单位:10微秒

diff = timeDiff(m100, now); 
diff = this.time - m100.time; 
//this代表当前时间

纳秒级

timeNowNS & timeNowInt64

LIN

返回值:纳秒级的CANoe工程启动到执行到该函数的时间;整数类型

常见用法:time_now_ns =timeNowNS(), time_now_ns就是CANoe启动到执行到该行的运行时间,单位为ns,这里函数能够满足纳秒级的测试,满足更加精确的时间精度。

如果是长时间压力测试的时候使用该函数需要注意处理最大值,以免测试结果的误判。

MessageTimeNS

LIN

message:CAN报文 例如:message 0x100 msg;则msg就代表报文ID为0x100的报文,msg.dlc即为报文0x100的长度都可通过msg.xx进行设置(FDF/BRS/R0/R1等等参数)

message 100 msg;
msg.DLC = 1;
msg.BYTE(0) = 0xff;
output(msg);

linFrame:LIN报文 参考上面

以报文为参数,其中包含CAN报文或者LIN报文,返回值为CANoe启动到当前函数的时间,单位为纳秒,精度相当的高,这个主要用于检查特定报文出现的时间,比如检查Autosar网络管理中的的重复报文出现的时间和时间差,可直接用当前函数去获取并进行检查。

以上是我们在使用CAPL编程中常用的获取当前时间和或者时间差函数!!!

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分