LabVIEW에서의 이벤트 프로그래밍

개요

이 문서는 순차적 프로그래밍과 이벤트 프로그래밍간의 차이점을 설명하고 LabVIEW에서 이벤트 구동 프로그래밍을 사용하는 방법을 간략히 설명합니다. 이벤트 구동 프로그램은 실행 중에 사용자가 결정한 순서로 실행됩니다. 사용자는 LabVIEW에서 이벤트 구조를 이용하여 어플리케이션의 이벤트를 처리합니다. 이벤트 구조를 사용하면 블록 다이어그램이 간단해지며 CPU 사용률은 최소화되고 이전 버전의 LabVIEW에서 처리할 수 없었던 사용자 인터페이스 이벤트를 처리합니다.

내용

순차적 구동 아키텍처와 이벤트 구동 아키텍처

이벤트는 사용자가 수행하는 작동에 의해 유발됩니다. 예를 들어, 마우스를 클릭하면 마우스 이벤트가 생성되고 키보드의 키를 누르면 키보드 이벤트가 생성됩니다. 시스템 이벤트 발생 시, 운영체제는 이벤트를 식별하고 응답하기 위해 반응합니다. 다른 운영체제들은 이 프로세스를 다양한 방식으로 구현합니다. 하지만 모든 운영체제들은 시스템 이벤트 메시지를 브로드캐스팅함으로써 시스템 이벤트에 응답합니다. 시스템에서 실행되는 모든 어플리케이션은 특정한 시스템 이벤트에 반응하는 코드를 통해서 시스템 이벤트에 반응할 수 있습니다.

순차적 구동 또는 top-down 아키텍처에서 어플리케이션은 지정된 시퀀스대로 명령을 실행하여 태스크를 수행합니다. 사용자에 의한 동작이 아닌, 프로그램의 구조와 시퀀스가 순차적 구동 어플리케이션의 실행 순서를 제어합니다. 이 프로그램 실행은 메인에서 시작된 후, 예측 가능한 방식으로 메소드 호출과 명령을 실행합니다.

이벤트 구동 프로그램에서 프로그램은 우선 발생하게 될 이벤트를 기다리고, 이 이벤트에 응답하며, 다음 이벤트 대기상태로 돌아갑니다. 프로그램이 응답하는 방식은 특정 이벤트를 위해 작성된 코드에 따라 다릅니다. 이벤트 구동 프로그램이 실행하는 순서는 어떤 이벤트가 발생하고 이벤트가 발생하는 순서에 따라 다릅니다. 프로그램이 다음 이벤트를 기다리는 동안 이 프로그램은 CPU 리소스를 차지하지 않기 때문에, CPU는 다른 처리 태스크를 수행하는데 사용될 수 있습니다.

 

LabVIEW에서의 이벤트 사용

LabVIEW에서는 어플리케이션의 이벤트를 이벤트 구조를 이용하여 처리할 수 있습니다. 케이스 구조와 마찬가지로 여러 케이스를 이벤트 구조에 추가할 수도 있습니다. 다음으로 이 케이스들을 사용자가 원하는대로 설정하여 하나 또는 그 이상의 이벤트를 처리할 수 있습니다. 이 이벤트들이 발생할 때, LabVIEW는 이벤트에 상응하는 케이스를 실행합니다. 다음 블록 다이어그램은 이벤트 구조의 한 예를 보여주고 있습니다.

이벤트 구조의 경계에서 마우스 오른쪽 버튼을 클릭하여 바로가기 메뉴의 이 케이스에 의해 핸들되는 이벤트 편집…을 선택하면 이벤트 구조를 설정하는 설정창이 팝업됩니다. 이 이벤트 편집 설정창을 통해 하나 또는 여러 개의 케이스를 편집합니다.

이벤트 구조를 사용하면 VI가 더 이상 이벤트의 변경에 대한 프런트 패널 폴링을 하지 않아도 되기 때문에 CPU 사용률이 최소화됩니다. 폴링과 대조적으로 이벤트 구조는 이벤트 큐를 사용하여 발생한 사용자 이벤트를 저장하고 이벤트가 발생한 순서대로 사용자 이벤트를 처리하기 때문에 사용자 이벤트를 잃지버리지 않습니다.

이벤트 유형

이벤트의 종류로는 정적 이벤트와 동적 이벤트가 있습니다. 정적 이벤트에는 알림 이벤트 또는 필터 이벤트가 있습니다. 정적 이벤트는 프런트 패널과의 연동만을 위한 것입니다. 그 중에서 정적 알림 이벤트가 가장 일반적이며 프런트 패널에서 발생하는 것에만 반응합니다. 정적의 한 예로, 알림 이벤트는 OK 버튼에 대한 “값 변경(Value Change)” 에서 발생되도록 할 수 있을 것입니다. 정적, 필터 이벤트는 LabVIEW가 이 이벤트를 처리하기 전에 사용자가 수행하는 이벤트를 캐치합니다. 다음으로 이벤트 구조 내의 코드는 이 이벤트가 처리되어야 하는지 아닌지를 결정할 수 있습니다. 필터 이벤트의 한 예로는 사용자가 프런트 패널의 닫기를 클릭할 때 “Panel Close?”가 될 수 있습니다. 이벤트 편집 창에서 필터 이벤트는 빨간색 화살표를 표시되며, 알림 이벤트는 초록색 화살표로 표시됩니다.

때때로, 프런트 패널에서 발생하지 않는 이벤트를 사용해야 하는 경우가 존재합니다. 이럴 때는 다이나믹 이벤트를 등록하여 사용하면 됩니다. 다이나믹 이벤트를 사용하면 블록 다이어그램에 존재하는 코드에서 발생하는 이벤트에 대해서도 이벤트 구조가 응답할 수 있게 됩니다. 이 모든 이벤트에 대한 사례는 본 웹사이트에 첨부되어 있습니다.

 

다운로드