사용자가 직접 정의한 데이터를 사용하는 사용자 이벤트를 생성하고 이름을 지정할 수 있습니다. 사용자 이벤트를 사용하면 어플리케이션의 각각 다른 부분이 비동기적 통신을 할 수 있도록 합니다. 사용자가 직접 프런트패널 객체와 상호작용해야 하는 사용자 인터페이스 이벤트와는 달리, 사용자 이벤트를 사용하면 사용자는 객체의 프로그램적인 변경 사항에 응답하는 어플리케이션을 생성할 수 있습니다. 하나의 이벤트 구조에서 사용자 인터페이스 이벤트와 프로그램적으로 생성되는 사용자 이벤트를 모두 처리할 수 있습니다.

사용 객체

다음 블록다이어그램 객체를 사용하여 사용자 이벤트를 생성합니다.
  • 사용자 이벤트 생성—사용자 이벤트 생성
  • —이벤트 등록
  • —이벤트 구조
  • — 사용자 이벤트 발생
  • — 이벤트 등록 해제
  • —사용자 이벤트 삭제
  • 실행 단계

    다음 블록다이어그램을 생성하여 사용자가 정의하는 데이터를 프로그램적으로 전달하는 사용자 이벤트를 만듭니다.


    위에 열거된 함수를 포함하는 LabVIEW G 코드의 스크린샷.

    위의 블록다이어그램에 대한 중요한 상세 정보가 다음 리스트에 설명되어 있습니다.

  • 1—사용자 이벤트를 정의하려면, 블록다이어그램 객체를 [사용자 이벤트 생성] 함수에 연결합니다. [사용자 이벤트 생성] 함수의 입력은 개별 원소이거나 클러스터이며, 해당 입력의 이름과 데이터 타입이 사용자 이벤트의 이름과 데이터 타입을 정의합니다. 또한 LabVIEW는 고유 라벨을 사용하여 사용자 이벤트가 사용하는 데이터를 식별하므로, 입력 데이터 또는 입력 데이터의 각 원소에는 설명적인 고유 라벨을 붙입니다. 사용자 이벤트의 입력 데이터에는 라벨을 붙여야 이벤트 구조의 이벤트 데이터 노드에 라벨이 나타납니다. 위의 블록다이어그램에서 사용자 이벤트의 이름은 내 사용자 이벤트이고 이벤트 데이터 아이템의 이름은 문자열입니다.
  • 2—[사용자 이벤트 생성] 함수의 사용자 이벤트 출력은 그 사용자 이벤트의 이름과 데이터 타입을 사용하는 엄격한 타입의 참조 번호입니다. 이벤트를 등록하고 사용자 이벤트를 생성할 때에는, 이벤트 이름 및 데이터 타입에 대한 참조 번호를 사용하십시오.
  • 3— [이벤트 등록] 함수를 사용하여 다이나믹하게 이벤트를 등록합니다. 사용자 이벤트와 사용자 인터페이스 이벤트의 조합을 [이벤트 등록] 함수에 연결할 수 있습니다.
  • 4— [이벤트 등록] 함수의 이벤트 등록 참조 번호 출력을 이벤트 구조의 왼쪽에 있는 다이나믹 이벤트 터미널에 연결합니다. 다이나믹 이벤트 터미널을 디스플레이하려면, 이벤트 구조에서 마우스 오른쪽 버튼을 클릭한 후 다이나믹 이벤트 터미널 보이기를 선택합니다. 사용자 이벤트 데이터 아이템은 이벤트 구조의 왼쪽 경계에 있는 이벤트 데이터 노드에 나타납니다.
  • 5—이벤트 데이터 노드에 더 많은 데이터 아이템을 추가하려면, 노드를 수직으로 크기 조정합니다. 이벤트 데이터 노드를 사용하여 특정 이벤트와 연관된 이벤트 데이터 원소에 접근할 수 있습니다.
  • 6이벤트 편집 대화 상자를 사용하여 이벤트를 처리할 이벤트 구조의 케이스를 설정합니다. 사용자 이벤트의 이름이 대화 상자의 이벤트 소스 섹션에서 다이나믹 부표제 아래에 나타납니다.
  • 7—[사용자 이벤트 발생] 함수를 사용하여 이벤트 처리를 위해 설정된 이벤트 구조를 통해서 사용자 이벤트 및 연계된 데이터를 어플리케이션의 다른 부분으로 전달합니다. [사용자 이벤트 발생] 함수는 사용자 이벤트 참조 번호와 이벤트 데이터의 값을 받습니다. 데이터 값은 반드시 사용자 이벤트의 데이터 타입과 일치해야만 합니다.
    노트 사용자 이벤트가 등록되지 않은 경우 [사용자 이벤트 발생] 함수는 작동하지 않습니다. 사용자 이벤트가 등록되었지만 대기 중인 이벤트 구조가 없을 경우, LabVIEW는 이벤트 구조가 이벤트를 처리할 때까지 사용자 이벤트와 데이터를 큐에 저장합니다.
  • 8— [이벤트 등록 해제] 함수 및 [사용자 이벤트 삭제] 함수를 사용하여 연계된 이벤트 및 사용자 이벤트 참조를 해제할 수 있습니다. LabVIEW는 최상위 VI가 실행을 끝내면 자동으로 모든 이벤트를 등록 해제하고 기존의 사용자 이벤트를 삭제합니다. 하지만 메모리 자원을 절약하기 위해, National Instruments는 특히 오랜 시간 동안 실행되는 어플리케이션의 사용자 이벤트를 명확하게 등록 해제하고 삭제할 것을 권장합니다.
  • 유의점 및 권장사항

    • 사용자 이벤트를 정적으로 등록할 수는 없습니다.
    • 별개의 [이벤트 등록] 함수를 사용하여 하나의 사용자 이벤트를 여러 번 등록할 수 있습니다. 이런 경우, 이벤트 등록 참조 번호에 연계된 각 큐는 사용자 이벤트의 복사본과 [사용자 이벤트 발생] 함수가 매번 실행하는 연계된 이벤트 데이터를 받습니다.
    • 사용자 이벤트는 알림 이벤트이며, 사용자 인터페이스 이벤트 또는 다른 사용자 이벤트로 이벤트 구조의 동일한 이벤트 케이스를 공유할 수 있습니다.
    • 기존의 사용자 인터페이스 이벤트와 이름 및 데이터 타입이 같은 이벤트 데이터 아이템을 가진 사용자 이벤트를 만들어서 프런트패널과 사용자의 상호 작용을 시뮬레이션할 수 있습니다. 예를 들어, OldValNewVal로 명명된 두 불리언 필드의 클러스터를 사용하여 MyValChg로 불리는 사용자 이벤트를 생성할 수 있습니다. 이때 두 불리언 필드는 값 변경 사용자 인터페이스 이벤트가 불리언 컨트롤에 연계시키는 것과 같은 이벤트 데이터 아이템입니다. 같은 이벤트 구조 케이스를 시뮬레이션된 MyValChg 사용자 이벤트와 실제 불리언 값 변경 이벤트에서 공유할 수 있습니다. 이벤트 구조는 [사용자 이벤트 생성] 함수가 사용자 이벤트를 발생시키거나 사용자가 컨트롤의 값을 변경하는 경우 이벤트 케이스를 실행합니다.

    예제

    다이나믹한 이벤트 등록에 관한 예제는 labview\examples\Dialog and User Interface\Events\Events.lvproj를 참조하십시오.

    사용자 이벤트 사용에 대한 예제는 labview\examples\Dialog and User Interface\Events 디렉토리에 있는 User Event Generation VI를 참조하십시오.