이벤트 구조가 인디케이터의 '값 변경'을 캡쳐 하지 않음

업데이트 됨 Oct 20, 2023

해당 제품

소프트웨어

  • LabVIEW Full
  • LabVIEW Base
  • LabVIEW Professional

문의사항

이벤트 구조를 사용하여, 프런트 패널 인디케이터의 값 변경이 있을 때 실행 되는 이벤트 구조 케이스를 만들었습니다. 제 VI의 인디케이터는 내 코드의 다른 파트에 있는 값을 나타냅니다. VI를 실행하면 인디케이터 값이 변경되는 것을 볼 수 있지만 구성한 이벤트 케이스의 코드는 실행되지 않습니다.

해결책

이벤트 구조는 직접적인 사용자 상호 작용에 의해 생성 된 이벤트만 프런트 패널에 나타냅니다. 이 문제에서는 인디케이터 값이 프로그래밍 방식으로 변경되므로 LabVIEW가 값 변경 이벤트를 캡처하지 않습니다. 또한 VI 서버, 글로벌 변수, 로컬 변수 등을 사용하여 VI 또는 프런트 패널 객체를 프로그래밍 방식으로 변경하는 경우 값 변경 이벤트가 발생하지 않습니다.

한 가지 예외가 있습니다. 컨트롤 및 인디케이터의 이벤트는 프로퍼티 노드를 사용하여 프로그래밍 방식으로 생성 될 수 있습니다. (Value (Signaling)), (Val (Sgnl)) , 아래 그림을 참고해 주시면 됩니다. 이 쓰기 전용 프로퍼티는 작성 될 때마다 프런트 패널 값 변경과 같은 역할을하는 이벤트를 만듭니다. 그러나 루프의 반복마다 작성된 경우 값이 실제로 변경되었는지 여부에 관계없이 각 반복마다 값 변경 트리거가 생성되므로 루프에서 이 프로퍼티를 사용 할때 주의해야 합니다.

Val (Sgnl) 속성을 사용한 값 변경 이벤트에 대한 데모는 아래 그림을 참조하십시오.
이 VI는 Val (Sgnl) 속성을 사용하여 인디케이터를 업데이트하고 이벤트를 생성합니다. "A * B"표시기가 업데이트되면 이벤트 구조가 이벤트를 등록하고 "Last Updated" 인디케이터를 현재 시간으로 업데이트합니다.

반대로 Value 프로퍼티를 사용한 값 변경 이벤트에 대한 데모는 아래 그림을 참조하십시오.
 
이 VI는 값 변경 프로퍼티를 사용하여 인디케이터를 업데이트합니다. "A * B"인디케이터가 업데이트되면 등록 할 이벤트가 없기 때문에 이벤트 구조가 이벤트를 등록하지 않습니다.

위 VI 모두 인디케이터 "A * B"에 프로그래밍 방식으로 기록됩니다. 두 VI는 "A * B"인디케이터의 값 변경 이벤트를 캡처하기위한 이벤트 구조를 가지고 있습니다. Value (Signaling) 프로퍼티를 사용하는 VI 만 "A * B"인디케이터가 업데이트 될 때 이벤트를 등록합니다.