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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

CAPL学习之路-关键字

發布時間:2023/12/31 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CAPL学习之路-关键字 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在capl中,關鍵字具有特殊的含義和用途,因此,不得將關鍵字用作變量或函數的名稱

聲明數據類型的關鍵字

可以用不同的關鍵字,聲明或引用不同類型的數據

byte

聲明一個字節的變量

word

聲明兩個字節的變量

dword

聲明四個字節的變量

int

聲明兩個字節的整數

long

聲明四個字節的變量

qword

聲明八個字節的變量

char

聲明一個字符串

float

聲明一個浮點數,8個字節

double

聲明一個浮點數,8個字節

定義一個結構體或枚舉類型

struct

struct Data { int type; long l; char name[50]; };

enum

enum State { State_Off = -1, State_On = 1 };

聲明消息/信號

message

capl程序要在總線上傳輸的CAN報文是用關鍵字message聲明的

兩種聲明方式:

  • 用dbc里的消息名聲明消息
  • message Ignition_on msg_wakeup;
  • 用消息id聲明消息
  • message 0x5f0 msg_wakeup;

    linFrame

    capl程序要在lin線上傳輸的lin幀是用關鍵字linFrame聲明的

    dbMsg *

    聲明一個dbc類型的消息

    這里有三種使用方式:

  • 如果你想傳入一個dbc里的message名作為形參,可以使用這種方式,調用時直接把dbc里的消息傳進去即可
  • void function1(dbMsg * dbcmsg)
  • 也可以先聲明一個dbc消息,然后用=把dbc里的消息EngineData賦值給它
  • dbMsg * dbcmsg; dbcmsg = EngineData;
  • 還可以用函數lookupMessage函數賦值dbc消息,傳入的字符串是dbc里消息名
  • dbMsg * dbcmsg; dbcmsg = lookupMessage("EngineData")

    還有dbNode等關鍵字,用來聲明dbc里的其他參數

    signal *

    聲明一個dbc類型的信號

    這里也提供了一個lookupSignal的方法

    signal * dbcsignal; dbcsignal = lookupSignal("EngineSignal");

    serviceSignal *

    用來聲明數據庫里SOME/IP服務信號,也有一個lookup的方法

    類似的還有很多,比如:serviceSignalData */serviceSignalNumber * /serviceSignalString *

    聲明診斷服務

    diagRequest

    聲明診斷請求,具體用法見公眾號其他文章

    用cdd里的診斷請求聲明

    diagRequest Door.defaultSessionStart req;

    diagResponse

    聲明診斷響應,具體用法見公眾號其他文章

    很好玩的是,請求的響應也是用cdd里的診斷請求來聲明

    diagResponse Door.defaultSessionStart resp;

    聲明系統變量或計時器

    sysvar *

    聲明系統變量

    類似的還有:sysvarInt */sysvarFloat */sysvarString *等

    timer

    聲明一個定時器,時間單位為秒

    timer t_sendmsg;

    類似的還有:msTimer,聲明毫秒級定時器

    定義一個test case/test function

    testcase

    定義一個test case

    testcase mytestcase() { }

    testfunction

    定義一個test function,它能被用在test case或test sequence中

    其他

    this

    在接收CAN對象或系統變量或環境變量的回調事件中,可以用this來指定這個接收的對象

    on message 100 { byte byte_0; byte_0 = this.byte(0); }

    $

    如果想直接給信號賦值,必須要在信號的前面加一個$符號

    $EngineSpeed = 500.0;

    .raw

    讀取信號的原始值

    EngineMsg.EngineSpeed.raw

    類似的還有.phys,讀取信號的物理值

    if, else, switch, case, default, for, while, continue, break, return都是關鍵字

    以上,就是capl中關鍵字的內容,請幫忙點贊或轉發哦


    總結

    以上是生活随笔為你收集整理的CAPL学习之路-关键字的全部內容,希望文章能夠幫你解決所遇到的問題。

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