필수: VI 스크립팅

템플릿에서 새 VI를 생성할 때, 사용자는 보통 LabVIEW가 템플릿에서 새 VI로 복사한 코드를 조금 수정하려 합니다. 이러한 수정을 위해서는, 검사하거나 수정하려는 새 VI에서 객체의 참조를 얻어야 합니다. 이 객체 참조를 얻고 난 후, 이들을 프로퍼티 노드인보크 노드에 연결하여, 참조된 객체에 대한 정보를 얻거나 설정할 수 있습니다. 새 VI에서 객체의 참조를 얻는 가장 쉬운 방법은 [VI 객체 참조 열기] 함수를 사용하는 것입니다. 그러나, 이 함수를 사용하려면, 새 VI의 원한는 객체에 고유 라벨이 있어야 합니다. 원하는 객체에 고유 라벨이 없는 경우, 보다 복잡한 또 다른 과정을 거쳐야만 라벨이 없거나 모르는 이런 객체의 참조를 얻을 수 있습니다.

사용 객체

이러한 VI 스크립팅 태스크에는 다음 객체가 필요합니다:

실행 단계

시작하기 전: 다음 과정을 각 단계별로 보여주는 예제를 확인하려면 labview\examples\Application Control\VI Scripting\Finding and Modifying Objects 디렉토리에 있는 Obtaining Known Object Reference VI를 엽니다.

  1. 상호작용하려는 객체를 포함하는 타겟 VI의 참조를 얻습니다.
  2. 참조를 얻으려는 객체의 식별 정보를 결정합니다.

    1. 클래스 타입―VI 스크립팅과 함께 사용할 수 있는 프런트패널 또는 블록다이어그램 객체는 모두 VI 서버 클래스의 멤버이므로, 해당 객체의 참조는 상응하는 클래스에 속하게 됩니다. 접근하려는 객체의 클래스 이름을 결정하려면 VI의 조직 을 참조하십시오. 클래스 지정자 상수를 사용하여 [VI 객체 참조 열기] 함수의 객체 클래스를 나타냅니다.

      예제 세부사항

      예제에서, Edit Me 컨트롤은 숫자 클래스의 멤버입니다.

    2. 소유자―프런트패널 및 블록다이어그램의 모든 객체에는 소유자가 있습니다. 가장 단순한 경우, 객체의 소유자는 VI의 프런트패널이거나 블록다이어그램입니다. 그러나, 객체가 루프, 케이스 구조, 시퀀스 구조 또는 클러스터와 같은 하위 구조 내에 위치하는 경우, 하위 구조가 객체를 소유합니다.

      예제 세부사항

      예제에서, Edit Me 컨트롤은 타겟 VI의 프런트패널에 위치하므로, 타겟 VI의 프런트패널은 이 컨트롤을 소유합니다. 따라서, 스크립팅 VI는 VI:프런트패널 프로퍼티를 사용하여 타겟 VI의 프런트패널에 대한 참조를 얻습니다.

      노트 Control 및 ControlTerminal 클래스는 자주 혼동됩니다. ControlTerminal 객체는 대응하는 프런트패널 Control 객체를 블록다이어그램에서 나타낸 것입니다. 따라서, 타겟 VI의 프런트패널은 Edit Me Control 객체를 소유하고, 타겟 VI의 블록다이어그램은 관련 Edit Me ControlTerminal 객체를 소유합니다. 사용자는 Control 객체의 숫자형을 변경할 수 있지만 ControlTerminal 객체의 숫자형은 변경할 수 없습니다.
    3. 라벨―이것은 타겟 VI에서 원하는 객체에 지정된 이름입니다.

      예제 세부사항

      예제에서, 변경할 컨트롤의 라벨은 Edit Me입니다.

  3. [VI 객체 참조 열기] 함수를 사용하여 단계 2의 식별 정보를 함수에 연결함으로써 원하는 객체의 참조를 얻습니다.
  4. [VI 객체 참조 열기] 함수의 객체 참조 번호 출력을 프로퍼티 노드 또는 인보크 노드에 연결하여 참조된 객체에 대한 정보를 얻고 설정합니다.

    예제 세부사항

    예제에서, 스크립팅 VI는 숫자형:형 프로퍼티를 사용하여 Edit Me 컨트롤의 숫자형을 설정합니다.

  5. [참조 닫기] 함수를 사용하여 모든 열린 객체 참조를 사용 후 닫습니다.

유의점 및 권장사항

  • 적어도 한 번 블록다이어그램 라벨을 디스플레이―[VI 객체 참조 열기] 함수는 라벨이 디스플레이되지 않은 객체는 찾을 수 없습니다. 블록다이어그램 객체가 라벨을 디스플레이하지 않도록 기본설정되기 때문에, [VI 객체 참조 열기] 함수를 사용해 찾으려는 블록다이어그램 객체가 있다면 무엇이든 그 라벨을 직접 디스플레이해야 합니다. 보이지 않는 객체의 라벨을 디스플레이하려면, 객체에서 마우스 오른쪽 버튼을 클릭한 후 보이는 아이템≫라벨을 선택합니다. 최소한 한 번 라벨을 디스플레이하면, 라벨을 다시 보이지 않게 하더라도 [VI 객체 참조 열기] 함수가 관련 객체를 찾을 수 있습니다.
  • 고유 라벨 생성―LabVIEW는 블록다이어그램 객체의 경우 고유 라벨을 강제하지 않습니다. 같은 클래스에 속하는 객체의 경우 대부분 같은 라벨이 붙도록 기본설정되어 있습니다. 예를 들어, 블록다이어그램에 For 루프 2개를 추가하는 경우, For 루프라는 라벨이 각 루프에 붙게 됩니다. 다른 객체와 라벨을 공유하는 어느 객체에 [VI 객체 참조 열기] 함수를 사용하는 경우, LabVIEW는 처음으로 찾는 객체의 참조를 반환합니다. 각 객체에 고유 라벨을 지정하면 LabVIEW가 원하는 참조를 반환하도록 할 수 있습니다.
  • 열어 놓은 참조 모두 닫기―지나치게 많은 수의 참조가 열려 있으면 VI의 성능에 부정적인 영향을 미칩니다. 성능에 대한 세부사항은 VI 및 객체 참조 닫기를 참조하십시오.

추가 예제

알고 있는 VI에서 참조를 얻는 예제는 labview\examples\Application Control\VI Scripting\Creating VIs 디렉토리에 있는 Creating New VI From Template VI를 참조하십시오.