Automotive/Testing

[CAPL] Panel 버튼과 CAPL 연결하여 메시지 송신하기

코딩쪼앙 2025. 6. 18. 14:45

🧩 왜 CAPL과 Panel을 함께 사용할까?

CANoe에서 테스트를 수행할 때, 보다 직관적이고 간편하게 메시지를 송수신하기 위해 CAPL 스크립트와 패널 기능을 함께 활용할 수 있다.
특히 반복적인 테스트사용자 입력 기반의 시나리오를 구성할 때, 패널의 버튼과 System Variable을 연동하고 CAPL을 통해 메시지를 제어하면 테스트 효율성과 가독성이 크게 향상된다.
이번 글에서는 패널에 버튼을 생성하고 System Variable을 연결한 뒤, CAPL을 통해 버튼 클릭 시 메시지를 송신하는 전체 과정을 단계별로 정리하려한다.

 


🛠️ 1. Panel에 버튼 생성하기

1. CANoe -> Home -> Panel -> New Panel

 
2. Tool Box에서 Button 생성

 
3. Properties에서 원하는 이름으로 변경

🔗 2. System Variable 연결하기

1. File -> System Variables

 
2. User_Defined에서 원하는 변수 생성 후 Apply

 
3. Symbol -> Symbol Filer -> Variable로 변경 후 새로 만든 System Variable 연결 후 저장

⚙️ 3. CAPL과 연동하기

1. File -> CAPL Browser

 
2. Send 버튼을 클릭했을 때 메시지를 송신하는 CAPL 스크립트 작성 후 compile

/*@!Encoding:949*/

variables
{
  // DBC에 있는 메시지 객체화
  message FD_C::ABS_ESC_01_10ms FD_C_ABS_ESC_01_10ms;
}

/*
	on start 메시지 계측이 시작했을 때
    1. 송신할 채널 지정 후 로그 출력
    2. 메시지 송신
*/
on start
{
  FD_C_ABS_ESC_01_10ms.can = 3;
  @sysvar::FD_C = FD_C_ABS_ESC_01_10ms.can;
  write("ABS_ESC_01_10ms is sent by CAN %d channel", @sysvar::FD_C);
  output(FD_C_ABS_ESC_01_10ms);
}


/*
	버튼 눌렀을 때
    1. Active Button 로그 출력
    2. 메시지 송신
*/
on sysvar ABS_ESC_01_10ms
{
  if (@sysvar::ABS_ESC_01_10ms == 1)
  {
    write("Active Button");
    output(FD_C_ABS_ESC_01_10ms);
  }
}

 
3. Nodes -> Instert  -> 작성한 CAPL 스크립트 삽입 후 노드 생성됐는지 확인

 

✨ 4. 동작 확인

1. Home -> Panel에서 작성한 Panel 열기
2. 메시지 계측 시작 후 on start에 정의한 동작이 수행되는지 확인

3. Active 버튼 클릭 후 Active button 메시지 확인 후 Trace 창에서 메시지가 정상적으로 송신되는지 확인