[CAN Analyzer] CAPL(Communication Access Programming Language) 사용법
작성일: 23년 3월 23일
Contents
1. CAPL 프로그래밍 작성
2. Program Node 추가하기
3. 실행결과
1. CAPL 프로그래밍 작성
- 메뉴의 "Tools" 선택하여 "CAPL Browser" 버튼을 클릭함
- CAN 데이터 전송을 위한 예제코드
- 작성후 저장함
includes
{
}
//사용할 변수 선언하는 공간
variables {
//변수 선언
int cntTest_CH01 = 0;
//보내는 데이터 변수 생성
//앞에 0x101은 필자가 랜덤으로 적은 숫자임(안쓰면 컴파일 안됨, 용도는 잘 모르겠음)
message 0x101 msgData;
//타이머 생성함
msTimer testTimer;
}
//타이머 동작에 따른 코드 작성
on timer testTimer
{
//printf 역할을 함
write("cntTest_CH01 %d", cntTest_CH01);
//데이터 전송할 CAN 채널 설정함
msgData.can = 1;
//데이터의 개수
msgData.dlc = 8;
//보낼 CAN 데이터의 ID 설정
msgData.id = 0x151;
//보낼 데이터
msgData.byte(0) = cntTest_CH01;
//데이터 전송함
output(msgData);
//타이머 다시 시작
setTimer(testTimer, 1000);
}
on start
{
write("start:");
//타이머 다시 시작
setTimer(testTimer, 1000);
}
//키보드 'a' 눌렀을때 이벤트
on key 'a'
{
write("press a button:");
}
//키보드 's' 눌렀을때 이벤트
on key 's'
{
write("press s button:");
}
- CAPL에서 지원하는 이벤트들을 알 수 있음
2. Program Node 추가하기
- "Analysis & Stimulation" 탭에서 "Measurement Setup" 버튼을 클릭함
- 화살표 네모박스 위에서 우클릭하여 "Insert Program Node" 클릭
- "P" 네모박스가 생성되면 우클릭하여 "Edit"을 클릭함
- 위에서 생성한 코드 파일을 선택함
- CAPL Browser가 뜨면 상단의 "Compile" 버튼을 클릭함
- 다시 돌아와서 상단의 "Start" 버튼을 누르면 실행되는 것을 알 수 있음
3. 실행결과
- Trace를 통하여 데이터가 출력되는 것을 알 수 있음
- Write 패널에서 cntTest_CH01 변수의 값이 증가하는 것을 알 수 있음
- 키보드 이벤트에 의해 "a" 또는 "s"의 버튼이 눌렸다는 것을 알 수 있음
Referece:
CAPL 사용 방법 및 예제
원본 링크(저자 본인): https://blog.naver.com/jsh_pa_/221310828796 Canoe 9.0.86 CAPL을 실행하는 방법은 두가지가 있다. 하나는 리본 메뉴에 CAPL Browser를 통해 CAPL을 생성하고 추후에 노드에 적용하는 방법 두번
suho413.tistory.com
https://cheonee.tistory.com/entry/CAPL-CAN-Channel-%EC%84%A4%EC%A0%95
CAPL CAN Channel 설정
CAPL Test Environments for Test Moudles 통해서 작성 시 CANoe 상에 CAN1, 2, 3 등 여러가지가 있는데 CAPL 코드에서 메시지를 원하는 CAN에 날려줘야 함 EX) your_mesage_name.CAN = 1;your_mesage_name.CAN = 2; 설정 뒤 output(you
cheonee.tistory.com
https://stackoverflow.com/questions/45369254/send-message-inject-a-message-with-capl
Send Message/ Inject a message with CAPL
I am new in CANoe, and also CAPL language. But I want to ask you: How can I send a message with CAPL on the network of ECU's. For example: I want to send an Hex number( it is a question for an ECU)...
stackoverflow.com