TIMER EVENT를 이용한 widget의 반복작업

GUI widget을 사용하게 되면, 주기적인 반복작업을 요구하게 되는 경우가 있습니다. 가령, 5분에 한번씩 업데이트를 쉬지 않고 반복해야 하는 작업 같은 경우입니다. 이러한 작업을 수월하게 하기 위해서, IDL의 widget은 다음과 같은 TIMER라는 이벤트를 지원합니다.

이러한 형식으로 이루어진 이벤트는 설정된 widget에서 지정한 시간 간격을 가지고 반복되는 작업을 수행하게 됩니다.

 

예를 들어, 다음과 같은 버튼을 2개가진 위젯을 구성합니다.

 timer_event_gui<실행된 위젯>

각각의 버튼들은 이름과 같이 5초 혹은 10초의 시간 간격을 뜻하는데, 각 위젯의 버튼을 누르게되면, auto_5s 또는, auto_10s라는 이벤트 프로시저로 이동하게 됩니다.

위젯의 이벤트는 넘어오자마자 interval Time을 설정해주고, 현재시간을 찾아 print하게 됩니다. 이 이벤트가 끝나게 되면 이벤트의 /structure_name은 WIDGET_TIMER로 바뀌게 되고 이어서 auto_event로 넘겨주게 됩니다.

 

auto_5s 또는, auto_10s에서 넘겨받은 이벤트에서 /structure_name이 WIDGET_TIMER와 같은지 확인한 다음, /structure_name이 같다면, auto_5s 또는, auto_10s에서 설정한 interval time에 맞춰 반복적으로 다음과 같이 시간을 print합니다.

 

이렇게 서버 혹은 개인용 컴퓨터에서 widget을 이용한 프로그램이 반복된 작업을 요구할 때, 이러한 TIMER 이벤트를 사용하게 된다면, 유용할 것이라고 생각합니다.

 

덧붙여, 제가 소개해드린 방법은 widget을 이용하는 방법인데, IDL8.3버전에서는 TIMER라는 함수가 새로 나왔습니다. 이 함수 또한 반복된 작업을 할 때 사용할 수 있으며, 추가적으로 실행하는 횟수까지도 정해줄 수 있는 함수입니다. 이상우 박사님의 블로그에 자세한 설명이 있고, 사용하기 좋은 함수이기에 같이 소개합니다.

http://blog.daum.net/swrush/258 (이상우의 IDL블로그 – 타이머(TIMER) 이벤트의 활용 방법)