日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CAPL函数 Test Node中注册事件(TestJoin xxx)函数

發布時間:2023/12/31 编程问答 79 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CAPL函数 Test Node中注册事件(TestJoin xxx)函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 🍅 我是螞蟻小兵,專注于車載診斷領域,尤其擅長于對CANoe工具的使用

  • 🍅 尋找組織 ,答疑解惑,摸魚聊天,博客源碼,點擊加入👉【相親相愛一家人】

  • 🍅 玩轉CANoe,博客目錄大全,點擊跳轉👉

📘前言

  • 🍅 如果你看到這篇文章,我認為你應該先應該了解CAPL中,等待單個事件發生的相關內置函數:CAPL函數 Test Node中TestWait xxx 常用函數因為本次會以CAN總線為例,通過你個TestJoin內置函數來說下,注冊多個事件,然后再等待多個事件發生的測試場景

  • 🍅 我們知道CAPL是基于事件驅動的邏輯,我們可以通過on message ,on siganl 。。。等等監控到事件的觸發,我們在simulation node節點中常常這樣做;但是在Test Node節點中,我們CAPL腳本就不易再這樣做了,我們可以通過CAPL自動的一些注冊事件的函數,來監控期望事件的發生

  • 🍅 演示軟硬件環境 Windows11 x64 ; CANoe 16 demo

目錄

  • 📘前言
  • 📙 CAN總線幾個代表性注冊事件函數
    • 🍅 注冊CAN報文事件(TestJoinMessageEvent )
    • 🍅 注冊環境變量事件(TestJoinEnvVarEvent)
    • 🍅 注冊系統變量事件(TestJoinSysVarEvent)
    • 🍅 注冊Symbols 值匹配事件(TestJoinSignalMatch)
    • 🍅 注冊期望文本事件(TestJoinTextEvent)
  • 📙 等待注冊事件的發生
    • 🍅 所有已注冊的事件全部發生(TestWaitForAllJoinedEvents)
    • 🍅 所有已注冊的事件發生了任何一個(TestWaitForAllJoinedEvents)
    • 🍅 返回觸發事件時的時間戳(testGetJoinedEventOccured)
  • 📙 測試腳本
    • 🍅 所有已注冊的事件全部發生(TestWaitForAllJoinedEvents)
    • 🍅 所有已注冊的事件發生了任何一個(TestWaitForAllJoinedEvents)
  • 🌎總結


📙 CAN總線幾個代表性注冊事件函數


🍅 注冊CAN報文事件(TestJoinMessageEvent )


🍅 注冊環境變量事件(TestJoinEnvVarEvent)

  • 這里help中特意強調,如果在等待環境變量改變的等待指令之前改變了環境變量的值,那么TestWaitForAnyJoinedEvent 函數立即生效
putValue (evMyEnvVar, 1); TestJoinEnvVarEvent (evMyEnvVar); TestWaitForAnyJoinedEvent (1000); // Does not wait, is immediately discontinued by an environment variable change!


🍅 注冊系統變量事件(TestJoinSysVarEvent)


🍅 注冊Symbols 值匹配事件(TestJoinSignalMatch)

  • 這個函數的名字雖然是SIgnal ,但是不只是SIgnals,也可以用來表示系統變量和環境變量


🍅 注冊期望文本事件(TestJoinTextEvent)

  • 可以使用TestSupplyTextEvent函數,來觸發文本事件

📙 等待注冊事件的發生


🍅 所有已注冊的事件全部發生(TestWaitForAllJoinedEvents)

  • 只要調用過此函數,先前注冊事件,就會被清空,無論測試結果如何


🍅 所有已注冊的事件發生了任何一個(TestWaitForAllJoinedEvents)

  • 只要調用過此函數,先前注冊事件,就會被清空,無論測試結果如何


🍅 返回觸發事件時的時間戳(testGetJoinedEventOccured)

  • 只要調用過此函數,先前注冊事件,就會被清空,無論測試結果如何

📙 測試腳本


🍅 所有已注冊的事件全部發生(TestWaitForAllJoinedEvents)

  • 這里注冊了兩個事件:等待100報文出現 和 等待 “ErrorFrame occurred!”文本出現
on key 'a' {message 100 msg;msg.DLC = 1;msg.BYTE(0) = 0xff;output(msg); } on key 'b' {TestSupplyTextEvent("ErrorFrame occurred!"); }testcase WaitForAllEvent() {const dword waitDuration = 10000; // [ms]long eventHandle1, eventHandle2;int64 eventTime1 , eventTime2 ;long res;eventHandle1 = TestJoinMessageEvent(100);eventHandle2 = TestJoinTextEvent("ErrorFrame occurred!");res = TestWaitForAllJoinedEvents(waitDuration);if (res > 0) // all events ocurred, last one is stored in res{write("All expected events occured");}else{if (testGetJoinedEventOccured(eventHandle1, eventTime1) == 1){write("Received 100 message at %I64d", eventTime1);}else{write("Not Received 100 message ");}if (testGetJoinedEventOccured(eventHandle2, eventTime2) == 1){write("Errorframe occured at %I64d", eventTime2);}else{write("No Errorframe");}}}void MainTest () {WaitForAllEvent(); }
  • 不按下任何按鍵,打印結果


  • 只按下任何按鍵’a‘,只觸發了一個事件,打印結果


  • 按下任何按鍵’a‘和’b‘,觸發全部,打印結果

🍅 所有已注冊的事件發生了任何一個(TestWaitForAllJoinedEvents)

  • 只要調用過此函數,先前注冊事件,就會被清空,無論測試結果如何
  • 這里注冊了兩個事件:等待100報文出現 和 等待 “ErrorFrame occurred!”文本出現
testcase WaitForAnyEvent() {const dword waitDuration = 10000; // [ms]long eventHandle1, eventHandle2;int64 eventTime1 , eventTime2 ;long res;TestCaseTitle("Demo","WaitForAnyJoinedEvents");eventHandle1 = TestJoinMessageEvent(100);eventHandle2 = TestJoinTextEvent("ErrorFrame occurred!");write("eventHandle1:%d",eventHandle1);write("eventHandle2:%d",eventHandle2);res = TestWaitForAnyJoinedEvent (waitDuration);if (res > 0){if (res == eventHandle1){res = testGetJoinedEventOccured(res, eventTime1);write("Received 100 message at %I64d", eventTime1);}if (res == eventHandle2){res = testGetJoinedEventOccured(res, eventTime2);write("Errorframe occured at %I64d", eventTime2);}}else{write("No one event occured.");} }void MainTest () {//WaitForAllEvent();WaitForAnyEvent(); }
  • 按下任何按鍵’a‘,觸發一個事件,打印結果

🌎總結

  • 🍅 有需要演示中所用demo工程的,可以關注下方公眾號網盤自取啦,感謝閱讀。

  • 🚩要有最樸素的生活,最遙遠的夢想,即使明天天寒地凍,路遙馬亡!

  • 🚩如果這篇博客對你有幫助,請 “點贊” “評論”“收藏”一鍵三連 哦!碼字不易,大家的支持就是我堅持下去的動力。

總結

以上是生活随笔為你收集整理的CAPL函数 Test Node中注册事件(TestJoin xxx)函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。