Main Content

타이머 콜백 함수

참고

콜백에 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의 속성값으로 지정하는 방법

function myfile(obj, event)

t.StartFcn = @myfile

function myfile

t.StartFcn = @(~,~)myfile

function myfile(obj, event, arg1, arg2)

t.StartFcn = {@myfile, 5, 6}

다음 예제에서는 timer 객체 콜백 함수 속성의 값을 지정할 수 있는 여러 가지 방법을 보여줍니다. 어떤 것은 인수를 사용하고 어떤 것은 인수를 사용하지 않습니다. 콜백 함수 my_callback_fcn의 코드를 보려면 예제: 콜백 함수 작성하기 항목을 참조하십시오.

  1. timer 객체를 만듭니다.

    t = timer('StartDelay', 4, 'Period', 4, 'TasksToExecute', 2, ...
              'ExecutionMode', 'fixedRate');
  2. StartFcn 콜백의 값을 지정합니다. 참고로, 이 예에서는 콜백 함수가 자신에게 전달된 인수에 액세스해야 하므로 값을 셀형 배열로 지정합니다.

    t.StartFcn = {@my_callback_fcn, 'My start message'};
  3. StopFcn 콜백의 값을 지정합니다. 마찬가지로, 콜백 함수가 자신에게 전달된 인수에 액세스해야 하므로 값은 셀형 배열로 지정됩니다.

    t.StopFcn = { @my_callback_fcn, 'My stop message'};
  4. TimerFcn 콜백의 값을 지정합니다. 이 예에서는 MATLAB 명령을 문자형 벡터로 지정합니다.

    t.TimerFcn = @(x,y)disp('Hello World!');
  5. 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
  6. timer 객체를 다 사용한 후에는 삭제합니다.

    delete(t)

참고 항목

관련 항목