타이머 콜백 함수
참고
콜백에 Figure 업데이트와 같이 CPU 사용량이 많은 작업이 포함되는 경우 콜백 함수 실행이 지연될 수 있습니다.
명령과 timer 객체 이벤트 연결하기
timer 객체는 timer 이벤트가 발생할 때, 그리고 기타 timer 객체 이벤트(예: 시작, 중지)나 오류가 발생할 때 실행되는 MATLAB® 명령을 지정할 수 있는 속성을 지원합니다. 이러한 속성을 콜백이라고 합니다. MATLAB 명령을 timer 객체 이벤트와 연결하려면 관련 timer 객체 콜백 속성의 값을 설정하십시오.
다음 도식에서는 timer 객체를 실행하는 동안 이벤트가 언제 발생하는지, 그리고 각 이벤트와 관련된 timer 객체 속성의 이름을 보여줍니다. 예를 들어, MATLAB 명령을 시작 이벤트와 연결하려면 StartFcn
콜백 속성에 값을 할당해야 합니다. 오류 콜백은 언제든지 발생할 수 있습니다.
timer 객체 이벤트 및 관련 콜백 함수
콜백 함수 생성하기
timer 객체에 의해 지정된 기간이 경과하면 timer 객체는 선택된 하나 이상의 MATLAB 함수를 실행합니다. 함수를 콜백 속성의 값으로 직접 지정할 수 있습니다. 또한 함수 파일에 명령을 포함시킨 다음, 함수를 콜백 속성의 값으로 지정할 수도 있습니다.
콜백 함수 직접 지정하기
이 예제에서는 5초 후에 인사말을 표시하는 timer 객체를 만듭니다. 이 예제에서는 TimerFcn
콜백 속성의 값을 직접 지정하고 명령을 문자형 벡터에 포함시킵니다.
t = timer('TimerFcn',@(x,y)disp('Hello World!'),'StartDelay',5);
참고
콜백 명령을 콜백 함수 속성의 값으로 직접 지정할 경우 이 명령은 MATLAB 작업 공간에서 실행됩니다.
콜백 함수에 명령 포함시키기
MATLAB 명령을 콜백 속성의 값으로 직접 지정하는 대신, MATLAB 프로그램 파일에 명령을 포함시킨 다음 이 파일을 콜백 속성의 값으로 지정할 수 있습니다.
콜백 함수를 만들 때 처음 두 개의 인수는 timer 객체에 대한 핸들과 이벤트 구조체여야 합니다. 이벤트 구조체는 두 개의 필드, Type
그리고 Data
를 포함합니다. Type
필드에는 콜백을 발생시킨 이벤트의 유형을 식별하는 문자형 벡터가 포함됩니다. 이 필드의 값은 'StartFcn'
, 'StopFcn'
, 'TimerFcn'
, 'ErrorFcn'
중 하나일 수 있습니다. Data
필드에는 이벤트가 발생한 시간이 포함됩니다.
이러한 두 개의 필수 입력 인수 외에도, 콜백 함수는 응용 프로그램 특수(전용) 인수를 받을 수 있습니다. 이러한 입력 인수를 받으려면, 함수 이름을 콜백 속성의 값으로 지정할 때 셀형 배열을 사용해야 합니다. 자세한 내용은 콜백 함수 속성값 지정하기 항목을 참조하십시오.
예제: 콜백 함수 작성하기
이 예제에서는 콜백을 트리거한 이벤트의 유형과 콜백이 발생한 시간을 표시하는 간단한 콜백 함수를 구현합니다. 응용 프로그램 특수(전용) 인수 전달을 보여주기 위해 이 예제 콜백 함수는 문자형 벡터를 추가 인수로 받고 표시된 출력값에 이 텍스트를 포함합니다. 이 함수를 콜백 속성과 함께 사용하는 방법을 보려면 콜백 함수 속성값 지정하기 항목을 참조하십시오.
function my_callback_fcn(obj, event, text_arg) txt1 = ' event occurred at '; txt2 = text_arg; event_type = event.Type; event_time = datestr(event.Data.time); msg = [event_type txt1 event_time]; disp(msg) disp(txt2)
콜백 함수 속성값 지정하기
적절한 콜백 속성의 값을 설정하여 콜백 함수를 특정 이벤트와 연결합니다. 콜백 함수를 셀형 배열이나 함수 핸들로 지정할 수 있습니다. 콜백 함수가 추가 인수를 받는 경우에는 셀형 배열을 사용해야 합니다.
다음 표에서는 몇 가지 예제 콜백 함수의 구문을 보여주고 이러한 콜백 함수를 호출하는 방법을 설명합니다.
콜백 함수 구문 | 객체 |
---|---|
| t.StartFcn = @myfile |
| t.StartFcn = @(~,~)myfile |
| t.StartFcn = {@myfile, 5, 6} |
다음 예제에서는 timer 객체 콜백 함수 속성의 값을 지정할 수 있는 여러 가지 방법을 보여줍니다. 어떤 것은 인수를 사용하고 어떤 것은 인수를 사용하지 않습니다. 콜백 함수 my_callback_fcn
의 코드를 보려면 예제: 콜백 함수 작성하기 항목을 참조하십시오.
timer 객체를 만듭니다.
t = timer('StartDelay', 4, 'Period', 4, 'TasksToExecute', 2, ... 'ExecutionMode', 'fixedRate');
StartFcn
콜백의 값을 지정합니다. 참고로, 이 예에서는 콜백 함수가 자신에게 전달된 인수에 액세스해야 하므로 값을 셀형 배열로 지정합니다.t.StartFcn = {@my_callback_fcn, 'My start message'};
StopFcn
콜백의 값을 지정합니다. 마찬가지로, 콜백 함수가 자신에게 전달된 인수에 액세스해야 하므로 값은 셀형 배열로 지정됩니다.t.StopFcn = { @my_callback_fcn, 'My stop message'};
TimerFcn
콜백의 값을 지정합니다. 이 예에서는 MATLAB 명령을 문자형 벡터로 지정합니다.t.TimerFcn = @(x,y)disp('Hello World!');
timer 객체를 시작합니다.
start(t)
다음 값이 출력됩니다.
StartFcn event occurred at 10-Mar-2004 17:16:59 My start message Hello World! Hello World! StopFcn event occurred at 10-Mar-2004 17:16:59 My stop message
timer 객체를 다 사용한 후에는 삭제합니다.
delete(t)