필수: VI 스크립팅

[새 VI 객체] 함수 및 터미널:와이어 연결 메소드를 사용하여 복잡한 VI를 한 번에 한 객체씩 프로그램적으로 생성할 수도 있지만, 그러한 방식에는 복잡하고 광대한 스크립팅 코드가 필요해 작성하는데 시간이 많이 소요되고 읽기 어렵습니다. 생성하려는 VI에 아주 근사한 템플릿 VI를 작성하는 것이 더 용이한 경우가 많습니다. 이때 VI 스크립팅을 사용하여 템플릿 VI의 복사본을 생성하고 복사한 코드의 일부를 약간 편집하면 스크립팅 목적을 달성할 수 있습니다.

사용 객체

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

다음 단계

시작하기 전: 다음 과정을 각 단계별로 보여주는 예제를 확인하려면 labview\examples\Application Control\VI Scripting\Creating VIs 디렉토리의 Creating New VI From Template VI를 열어 보십시오.

  1. 원하는 타겟 VI의 형태에 가능한 가장 가까운 템플릿 VI를 디자인합니다.

    템플릿 디자인에 다음 구성요소를 포함시킵니다:

    • 한 번에 하나씩 프로그램적으로 생성하지 않을 모든 객체
    • 아무것도 없는 상태에서 처음부터 프로그램적으로 생성하지 않을 연결 모두
    • 실행 시 지정하려는 객체에 대한 자리 표시자 객체 스크립팅 VI에서 처음부터 연결을 프로그램적으로 생성하는 대신, 자리 표시자 객체를 통해 템플릿에서 자리 표시자의 터미널을 연결할 수 있습니다.
    • 스크립팅 VI로 위치를 찾거나 수정하려는 모든 객체에서 눈에 보이는 라벨

    예제 세부사항

    예제에서, 템플릿은 배열 입력, 숫자형 출력, 자리 표시자 subVI, 이러한 필수 객체의 연결에 필요한 와이어 연결을 포함하는 디자인을 보여줍니다. 실행 시, 스크립팅 VI는 사용자가 지정한 계산을 수행하는 subVI로 자리 표시자 subVI를 대체할 수 있습니다.

    노트 의도적으로 자리 표시자 SubVI는 가능한 대체 SubVI 모두에 대해 동일한 커넥터 팬 패턴을 가집니다. 일치하는 커넥터 팬 패턴 때문에 스크립팅 VI는 터미널을 다시 연결하지 않고도 쉽게 자리 표시자 subVI를 대체할 수 있습니다. 템플릿 VI의 자리 표시자 객체가 대체 객체와 다른 커넥터 팬을 지니는 경우, 의도한 바와 달리 LabVIEW가 대체 객체에 데이터를 연결하지 않을 수도 있습니다.
  2. [새 VI] 함수로 템플릿 VI의 경로를 함수에 연결하여 템플릿 VI의 복사본을 생성합니다.

    경로 컨트롤, 경로 상수 또는 템플릿 VI 참조의 VI:VI 경로 프로퍼티를 사용하여 템플릿 VI의 경로를 지정할 수 있습니다.

    예제 세부사항

    예제에서, VI:VI 경로 프로퍼티는 템플릿 VI의 경로를 제공합니다.

  3. 템플릿 VI에서 수정하려는 객체의 참조를 얻습니다. 템플릿 VI에서 객체의 참조를 얻는 가장 일반적인 방법은 [VI 객체 참조 열기] 함수를 사용하는 것입니다.

    예제 세부사항

    예제에서, 스크립팅 VI는 자리 표시자 subVI를 스크립팅 VI의 사용자가 실행 시에 지정하는 작업을 수행하는 subVI로 대체해야 합니다. 자리 표시자 subVI에는 고유 라벨이 있기 때문에, [VI 객체 참조 열기] 함수는 해당 subVI의 참조를 얻을 수 있습니다.

  4. 스크립팅 목적에 부합하도록 참조된 객체를 검사하거나 수정합니다.

    VI 스크립팅을 사용한 VI 편집 방법에 대한 추가 정보는 일반적인 스크립팅 태스크 리스트를 참조하십시오.

    예제 세부사항

    예제에서, 스크립팅 VI는 [대체] 메소드를 사용하여 자리 표시자 subVI를 사용자 지정 계산 작업 수행이 가능한 subVI로 대체합니다. 실행 시 동작 라디오 버튼의 값에 따라, 케이스 구조는 자리 표시자 subVI를 더하기 subVI와 곱하기 subVI 중 무엇으로 대체할지 선택합니다.

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

    예제 세부사항

    예제에서, 스크립팅 VI는 타겟 VI의 참조뿐만 아니라 대체 subVI의 참조를 닫습니다. 그러나 스크립팅 VI는 원래 자리 표시자 subVI의 참조는 닫지 않으며, 이는 대체 메소드가 해당 참조를 무효화하기 때문입니다.

유의점 및 권장사항

  • 원하는 참조를 모아서 반환하는 중간 subVI 생성―템플릿에 수정을 많이 하는 VI 스크립팅 어플리케이션의 경우, 참조를 subVI로 모으는 코드를 따로 분리하여 사용자 코드를 명확하게 할 수 있습니다. 수정하려는 참조를 반환하는 subVI를 따로 생성하려면, 최상위 레벨의 스크립팅 VI가 아닌 새 subVI에서 단계 2부터 단계 4까지 수행합니다. 그러면 최상위 레벨의 스크립팅 VI가 새 subVI를 호출하고 반환된 참조로 수정합니다.
  • 열어 놓은 참조 모두 닫기―지나치게 많은 수의 참조가 열려 있으면 VI의 성능에 부정적인 영향을 미칩니다. 성능에 대한 세부사항은 VI 및 객체 참조 닫기를 참조하십시오.

추가 예제

한 번에 한 객체씩 새 VI를 생성하는 것에 대한 예제는 labview\examples\Application Control\VI Scripting\Creating VIs 디렉토리의 Creating New VI From Scratch VI를 참조하십시오. 이 예제의 복잡한 정도 그리고 템플릿을 사용하지 않고 작업을 완료하는데 필요한 참조의 수에 유의합니다.