본문 바로가기
자동차 임베디드 SW/CAN통신 & LIN통신

CAPL - Dbc 속 메세지들에 접근하기

by 존버매니아.임베디드 개발자 2024. 1. 25.
반응형

Dbc에 정의된 모든 메세지에 접근하는건 모르겠고.

특정 노드의 tx, rx 메세지들을 for loop 순회로 접근하는건 가능하다.

예를 들어 프로젝트에 import 된 dbc 파일속에
네트워크이름이 Net_A이고
Node_A 가 정의된 경우 아래와 같이 가능.
이때 네트워크 이름 생략하고 노드이름만 바로 써도 된다.
즉 Net_A::Node_A 가 아니라
그냥 Node_A 라고 써도 됨.

message * m;
int i, mx;
mx=elcount(Net_A::Node_A.Tx);
for (i = 0; i < mx; ++i)
{
  m.id=Net_A::Node_A.TX[i];
  write(DBLookup(m).Name);
}

한편, Node_A.tx[] 의 결과값은 메세지의 id 이다.

dblookup 함수를 위 예시와 같이 사용해서
dbc에 정의된 메세지들의 attribute에 접근할 수 있다.


반응형