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