在自動化開發(fā)中,無論是CAN通信測試,還是網(wǎng)絡管理測試,亦或是休眠喚醒等等存在時間相關的,都可能會使用相關的時間函數(shù);今天主要介紹的就是獲取當前時間,我們知道vector工具的最大優(yōu)勢就是穩(wěn)定和精確度高,這體現(xiàn)在我們使用工具的方方面面,今天我們來介紹的就是獲取的運行的相對時間,包含10微秒級和納秒級,下面我們就來看下CAPL都提供哪些獲取當前時間函數(shù)吧!
10微秒級
timeNow
返回值:10ms級的CANoe工程啟動到執(zhí)行到該函數(shù)的時間;整數(shù)類型
常見用法:time_now_ms = timeNow()/100, time_now_ms就是CANoe啟動到執(zhí)行到該行的運行時間,單位為ms,一般來說大部分測試達到滿足毫秒級即可,極個別需要精確到微秒甚至納秒的時候我們才會使用其他方法。
timeNow :time_now_ms的最大值:2^32*10微秒=11小時55分鐘49秒672毫秒96微秒;如果是長時間壓力測試的時候使用該函數(shù)需要注意處理最大值,以免測試結果的誤判。
timeNowint64 :如果是長時間壓力測試的時候建議使用該函數(shù)。
timeNowFloat
返回值:10ms級的CANoe工程啟動到執(zhí)行到該函數(shù)的時間;浮點類型
常見用法:time_now_ms = timeNow()/100, time_now_ms就是CANoe啟動到執(zhí)行到該行的運行時間,單位為ms,一般來說大部分測試達到滿足毫秒級即可,極個別需要精確到微秒甚至納秒的時候我們才會使用其他方法。
如果是長時間壓力測試的時候使用該函數(shù)需要注意處理最大值,以免測試結果的誤判。
timeDiff
message:CAN報文 例如:message 0x100 msg;則msg就代表報文ID為0x100的報文,msg.dlc即為報文0x100的長度都可通過msg.xx進行設置(FDF/BRS/R0/R1等等參數(shù)),設置內容函數(shù)MessageTimeNS中的message介紹。
NOW:當前時間
返回值:報文m1到當前的時間差或者報文m1和報文m2之間的時間差。
單位:10微秒
diff = timeDiff(m100, now);
diff = this.time - m100.time;
//this代表當前時間
納秒級
timeNowNS & timeNowInt64
返回值:納秒級的CANoe工程啟動到執(zhí)行到該函數(shù)的時間;整數(shù)類型
常見用法:time_now_ns =timeNowNS(), time_now_ns就是CANoe啟動到執(zhí)行到該行的運行時間,單位為ns,這里函數(shù)能夠滿足納秒級的測試,滿足更加精確的時間精度。
如果是長時間壓力測試的時候使用該函數(shù)需要注意處理最大值,以免測試結果的誤判。
MessageTimeNS
message:CAN報文 例如:message 0x100 msg;則msg就代表報文ID為0x100的報文,msg.dlc即為報文0x100的長度都可通過msg.xx進行設置(FDF/BRS/R0/R1等等參數(shù))
message 100 msg;
msg.DLC = 1;
msg.BYTE(0) = 0xff;
output(msg);
linFrame:LIN報文 參考上面
以報文為參數(shù),其中包含CAN報文或者LIN報文,返回值為CANoe啟動到當前函數(shù)的時間,單位為納秒,精度相當?shù)母?,這個主要用于檢查特定報文出現(xiàn)的時間,比如檢查Autosar網(wǎng)絡管理中的的重復報文出現(xiàn)的時間和時間差,可直接用當前函數(shù)去獲取并進行檢查。
以上是我們在使用CAPL編程中常用的獲取當前時間和或者時間差函數(shù)!??!
-
CAN通信
+關注
關注
5文章
97瀏覽量
18423 -
LIN
+關注
關注
4文章
225瀏覽量
41155 -
BRS
+關注
關注
0文章
7瀏覽量
4054
發(fā)布評論請先 登錄
用什么函數(shù),可以獲取NTP網(wǎng)絡時間
如何在RT1170-EVK上獲取當前時間?
基于時間衰減協(xié)同偏好獲取方法
基于AUTOSAR的應用層如何獲取準確的時間戳嗎?
C語言內聯(lián)函數(shù),提升C技巧必備
如何使用arduino從衛(wèi)星獲取當前時間

評論