久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    CAPL腳本基本語法

     Kuai2012 2022-10-08 發布于北京

    在車載控制器測試中,CAPL是常用的總線測試腳本之一,今天來簡單梳理一下常用的一些語法。

    1.定時器

    首先肯定是定時器了,在編寫CAPL腳本中,使用的頻率很高,比如我們需要周期性的發送CAN報文,或者周期性的檢測某個系統變量的變化時就需要用到定時器。

    使用定時器的第一步就是申明定時器,如下。

    msTimer  msTimer50;  //聲明了一個ms定時器;timer    sTimer1;  //聲明了一個為s定時器;

    申明完后,就需要設置定時器。

    setTimer(msTimer50,50);//設置定時器msTimer50的時間為50ms;setTimerCyclic(sTimer1,1);//設置定時器sTimer1為1s為周期的循環定時器;

    在這些都做完之后,可以設計定時器到時之后,需要執行的操作了,以msTimer50為例。

    on timer msTimer50{   .......}

    2.信息的發送操作

    CAN報文操作,是我們常用的之一,下面就以CAN報文的發送操作為示例。這里如果在CANOE工程中添加了dbc文件,則可以直接通過dbc來定義message。

    message Msg;//聲明一個message;Msg.dlc=8;//設置其DLC=8;Msg.id=0x100;//設置CAN ID=0x100;Msg.byte(0)=A5;//設置數據場的第一個字節為A5output(Msg);//發送Msg

    3.CAN錯誤幀檢查

    進行CAN總線測試時,檢查錯誤幀是很常見的,用CAPL腳本實現自動檢測錯誤幀也不困難,CAPL中有現成的函數接口ChkStart_ErrorFrameOccured()。

    該函數一旦被調用,CANoe就會從此函數被調用時開始持續檢測總線上有沒有出現錯誤幀。

    dword chechId;dword numCheckEvents;
    checkId=ChkStart_ErrorFrameOccured();//開始檢測錯誤幀TestAddCondition(checkId);//添加檢測條件,如果出現了錯誤幀,則輸出報告中會記錄下來TestWaitForTimeout(10000);//持續檢測10scheckControl_Stop(checkId);//停止檢測錯誤幀numCheckEvents=ChkQuery_NumEvents(checkId);//對5s內的檢測情況進行獲取,若函數返回0則沒有出現錯誤幀
    if(numCheckEvents>0)     TestStepFail("Error Frames Occured");

    4.添加事件信號

    一般使用是某個事件發生,然后需要執行一些動作,比如打印出錯誤信息等。

    具體做法是:在一個位置添加需要等待的事件,程序中的其他地方,如果某個事件發生了(如周期超界、錯誤幀出現等),提供該事件的供應,則等待的程序段獲得了該事件,繼續執行下面的操作。幾個核心的函數接口如下所示。

    //供應text事件,主要用于關聯事件的觸發源,以及特定的textlong TestSupplyTextEvent( char aText[] );//添加text事件long TestJoinTextEvent(char[]aText);//等待text事件,有一個出現則程序執行下一步long TestWaitForAnyJoinedEvent(dword aTimeout);//等待text事件,所有等待事件都出現則程序執行下一步long TestWaitForAllJoinedEvents(dword aTimeout);

    5.回調函數

    CAPL中也有類似于C語言中的回調函數的機制,如檢測報錯誤幀的函數中就可以使用,當總線出現錯誤幀就會自動調用回調函數執行一些操作。

    ErrChkId=ChkStart_ErrorFramesOccured("Callback_ErrorFrameOccured");//檢查錯誤幀,如果發現錯誤幀就調用回調函數回調函數設計如下:void Callback_errorFrameOccured(dword chk_id){  float t;  t=timeNow()/100000.0;//記錄出現錯誤幀的時間  testStep("ErrorFrame_TimeStamp","%.7f s",t);//打印事件戳  TestSupplyTextEvent("ErrorFrameOccured");//設置前面提到的事件}

    6.總線節點檢測

    監控總線上有沒有出現通訊異常的情況。需要使用函數接口ChkStart_NodeBabbling( ),例如檢測一段時間內總線有沒有出現停止通訊的情況。

    CheckId=ChkStart_NodeBabbling(CAN::ACAN,0);//立即開始檢查總線狀態testWaitForTimeout(5000);//延時5sChkControl_Stop(CheckId);//停止檢測NumberEvents=ChkQuery_NumEvents(CheckId);//如果在2s內總線停止通訊,則NumberEvents!=0

      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 鲁丝片一区二区三区免费| 又爽又黄又无遮挡的激情视频免费 | 99热精品毛片全部国产无缓冲| 人人超人人超碰超国产| 人人妻人人藻人人爽欧美一区| 亚洲人妻精品中文字幕| 亚洲精品无码你懂的| 国产亚洲精品第一综合另类无码无遮挡又大又爽又黄的视频 | 国产精品国产三级国产AV主播| 国产精品中文字幕在线| 亚洲色成人网站WWW永久| 四虎国产精品永久入口| 国产成人久久精品流白浆| 亚洲国产成人精品无码区蜜柚| 久久天天躁狠狠躁夜夜2020老熟妇| 精品无码国产自产拍在线观看| 免费现黄频在线观看国产| 熟妇人妻一区二区三区四区| 天堂亚洲免费视频| 少妇久久久久久久久久| 欧美视频专区一二在线观看| 欧美xxxx做受欧美.88| 邻居少妇张开腿让我爽了一夜| 亚洲精品漫画一二三区| 亚洲AV永久无码精品一区二区国产| 熟女系列丰满熟妇AV| 亚洲另类激情专区小说图片| 国产成人欧美日本在线观看| 中文字幕在线精品国产| 久久婷婷国产剧情内射白浆| 国产一区二区三区日韩精品| 一区二区不卡国产精品| 亚洲国产精品久久一线不卡| 天天综合亚洲色在线精品| 亚洲精品综合网二三区| 伊人久久大香线蕉AV五月天| 国产99在线 | 免费| 亚洲欧美日韩成人综合一区| 无码精品久久久久久人妻中字 | 在线观看免费人成视频播放| 狠狠噜天天噜日日噜视频麻豆|