목표
함수 정리 및 개인적인 시간이 있을 때 설명 읽어두기.
각 함수 설명
on sysVar
🔹 기능
- 시스템 변수의 값이 변경될 때 실행됨.
- 동일한 시스템 변수에 대해 여러 CAPL 노드에서 독립적으로 반응 가능.
🛠 사용법
on sysVar 시스템변수_이름
{
// 변경된 시스템 변수 값 가져오기
int newValue = @this;
write("New value: %d", newValue);
}
📌 예제
on sysVar Vehicle::Speed
{
write("Speed Changed! New Value: %d", @this);
}
➡️ Vehicle::Speed 시스템 변수 값이 변경될 때마다 실행됨.
※메모: @this를 쓰려면 해당 변수가 int 혹은 float이어야 함
on sysVar_change
🔹 기능
- 값이 변경될 때만 실행됨.
- 같은 값이 연속해서 입력되면 실행되지 않음.
🛠 사용법
on sysVar_change 시스템변수_이름
{
write("Value changed: %d", @this);
}
📌 예제
on sysVar_change Vehicle::RPM
{
write("RPM Changed! New Value: %d", @this);
}
➡️ Vehicle::RPM 값이 변경될 때 실행됨.
➡️ 같은 값이 입력되면 실행되지 않음.
on sysVar_update
🔹 기능
- 값이 변경되지 않아도, 업데이트가 발생하면 실행됨.
- 센서 데이터나 주기적으로 업데이트되는 값 처리에 적합.
🛠 사용법
on sysVar_update 시스템변수_이름
{
write("Variable Updated: %d", @this);
}
📌 예제
on sysVar_update Vehicle::Speed
{
write("Speed Updated (Even if unchanged): %d", @this);
}
➡️ Vehicle::Speed가 변경되지 않아도 주기적으로 업데이트될 때 실행됨.
on sysVarMember
🔹 기능
- 구조체(struct) 또는 배열(array)의 특정 멤버 값이 변경될 때 실행.
- on sysVar과 같은 역할을 하지만, 특정 멤버 변수만 감지할 수 있음.
🛠 사용법
on sysVarMember 시스템변수_이름::멤버_이름
{
write("Member value changed: %d", @this);
}
📌 예제
on sysVar Vehicle::Status::EngineTemp
{
write("Engine Temperature Updated: %d", @this);
}
➡️ Vehicle::Status 구조체의 EngineTemp 값이 변경될 때 실행됨.
on sysVar (변수1 | 변수2 | …)
🔹 기능
- 여러 개의 시스템 변수에 대한 감지를 한 번에 처리.
- 모든 변수 타입이 동일해야 this 키워드 사용 가능.
🛠 사용법
on sysVar (변수1 | 변수2 | 변수3)
{
write("Variable Changed: %s, New Value: %d", this.name, @this);
}
📌 예제
on sysVar (IO::DI_0 | IO::DI_1)
{
write("Changed Variable: %s, New Value: %d", this.name, @this);
}
➡️ IO::DI_0 또는 IO::DI_1 값이 변경될 때 실행됨.
➡️ this.name을 사용하면 변경된 변수 이름을 출력할 수 있음.
'Programming > CANoe' 카테고리의 다른 글
CANoe 함수: sysGetVariableString (0) | 2025.03.02 |
---|---|
CANoe 함수: elcount (0) | 2025.03.02 |
CANoe UI Panel 만들기: 시작, 종료 버튼 (0) | 2025.02.28 |
CANoe CAN/CANFD 진단통신 전송 5: 시작 시에 Write에 프로그램 시작 출력 (0) | 2025.02.28 |
CANoe 함수: Console 로그 관련 함수 (0) | 2025.02.28 |