You are here

LabVIEW의 .NET 지원

Murali Parthasarathy 저

목차 :

  • .NET의 기초
  • ActiveX/COM과 비교
  • LabVIEW 7 Express의 .NET 지원
  • 기타 .NET LabVIEW 함수

LabVIEW는 새로운 .NET 기술에 .NET 클라이언트로 쉽게 연결할 수 있습니다. .NET 클래스의 인스턴스(Instance)를 생성하고 메소드(Method)를 호출하여 인스턴스에 등록 정보를 설정하여 가져올 수 있습니다. 패러다임은 LabVIEW와 ActiveX 자동화 VI가 비슷합니다.

저자 소개 : Murali Parthasarathy는 LabVIEW R&D 팀의 관리자입니다. Murali는 애리조나 주립대에서 컴퓨터 공학 석사 과정을 졸업하였습니다.

 

.NET의 기초

.NET 프레임워크는 인터넷의 고도로 분산된 환경에서 어플리케이션 개발을 단순화할 수 있도록 설계된 새로운 Microsoft 컴퓨팅 플랫폼입니다. .NET 프레임워크에는 2개의 주요 컴포넌트인 CLR(Common Language Runtime)과 .NET 프레임워크 클래스 라이브러리가 있습니다.
CLR은 프로그래밍 언어와 운영 체제 영역을 총괄하는 타입 시스템을 제공합니다. CLR은 개발자들이 시스템을 메모리와 스레드가 아닌 타입과 객체의 세계로 볼 수 있도록 해주는 추상화의 수준을 도입합니다. CLR을 위한 어플리케이션을 개발하려면 컴파일러 및 링커에서 새로운 메타 데이터(Meta Data) 포맷으로 정보를 생성해야 합니다. 컴파일러는 Win32 시스템에서는 어셈블리 코드보다는 CLR IL(Intermediate Language) 코드를 생성합니다. CLR은 “Managed” 모드라 하는 실행 모드에서 IL을 실행합니다. 기존의 방식 즉, 비CLR 컴파일러에 의해 생성된 코드는 “Unmanaged” 모드라는 별도의 실행 모드에서 실행됩니다. .NET 프레임워크는 Win32/COM 시스템에서 Win32 함수와 같이 동일한 함수를 수행하는 클래스의 세트입니다. .NET을 사용하면 한 .NET 언어로 클래스를 생성한 후 다른 .NET 언어로 이를 사용할 수 있습니다.

 

 

ActiveX/COM과 비교

ActiveX/COM 기술은 2 종류의 어플리케이션을 제공하였습니다. Active X 서버는 클래스와 메소드를 통해 기능을 엑스포트하는 것은 물론 코드에 이 기능을 사용하는 자동화 클라이언트도 엑스포트하였습니다. .NET 기술을 활용하면 유사한 역할이 존재하기는 하나 한층 심도 있는 통합을 이룰 수 있습니다. 스스로 공용이라 표시하는 클래스는 공용 함수와 함께 자동으로 엑스포트됩니다. 이러한 클래스를 사용하려면 클라이언트 클래스에서 .NET 프레임워크의 다른 클래스를 포함하듯이 이러한 클래스도 포함해야 합니다.

.NET 어셈블리는 .dll이나 .exe와 같은 확장명을 가지며 .NET 클래스의 메타 데이터를 포함합니다. 메타 데이터에는 디버깅 및 가비지(Garbage) 수집에 필요한 정보, 보안 속성, 마샬링 데이터, 확장 클래스 및 구성원 정의, 버전 바인딩 및 .NET 런타임에 필요한 기타 정보가 들어 있습니다. 그러나 어셈블리는 실제 Win32 실행 파일이 아니며 그 보다는 .NET 메타데이터 라이브러리라 할 수 있습니다. 이 라이브러리에는 엑스포트된 클래스, 메소드, 프로퍼티 및 이벤트에 대한 정보도 들어 있습니다.
LabVIEW의 .NET 지원

LabVIEW의 출시로 .NET 기술에 .NET 클라이언트로 쉽게 연결할 수 있습니다. .NET 클래스의 인스턴스를 생성하고 메소드를 호출하여 인스턴스에 등록 정보를 설정하여 가져올 수 있습니다. 패러다임은 LabVIEW와 ActiveX 자동화 VI가 비슷합니다. 이 섹션에서는 .NET 프레임워크에 의해 설치된 클래스를 사용하여 프로세서 사용 통계를 구하는 간단한 VI에 대해 살펴보도록 합니다. 이 예에서는 시스템 .NET 어셈블리에 의해 엑스포트된 PerformanceCounter 클래스를 사용합니다.

 

1 단계: 클래스의 인스턴스 생성
시스템 어셈블리에서 PerformanceCounter 클래스를 엑스포트합니다. Library 및 Class를 선택합니다.
a. Communication 팔레트의 .NET 팔레트로 이동하여 Constructor 노드를 드롭 다운합니다.
 

그러면 시스템에 전역적으로 등록된 모든 어셈블리를 찾아보는 데 사용할 수 있는 대화상자가 나타납니다. 시스템 어셈블리의 System.Diagnostics 이름 공간이 성능 카운터를 엑스포트합니다.

b. 어셈블리 리스트에서 시스템 어셈블리를 선택합니다.

 

c. System.Diagnostics 이름 공간을 선택합니다.


 
d. PerformanceCounter 클래스 및 원하는 생성자를 선택합니다.

e. 매개변수 값을 생성자 노드에 와이어 경로 지정하여 구성을 완료합니다. 
 

2 단계: 메소드 선택
이제 선택한 카운터의 값을 반환하는 메소드 NextValue를 선택합니다. 호출 노드를 드롭하고 생성자 노드에서 참조 숫자 출력을 호출 노드 참조 숫자 입력으로 와이어 경로 지정한 후 호출 노드를 마우스 오른쪽 버튼으로 클릭하여 메소드를 선택합니다.

 

3 단계: 참조 닫기
마지막으로 Close Reference 함수를 드롭 다운하여 인스턴스를 생성하였던 .NET 참조 숫자를 닫습니다.

 

아래 다이어그램은 VI의 프런트패널을 나타냅니다. 
 

 

기타 .NET LabVIEW 함수

 

생성자, 호출 및 프로퍼티 노드 그리고 Close Reference 함수뿐 아니라 다음의 함수도 LabVIEW .NET 팔레트에서 사용할 수 있습니다.

To More Specific Class

 

 

이 함수는 상속 계층구조에서 클래스로부터 더욱 구체적인 클래스로 참조를 다운 캐스팅합니다. 예를 들어, 클래스 A가 B로부터 상속하는 경우 타입 B의 변수가 타입 A의 값을 가지도록 할 수 있습니다. 그리고 나서 위의 함수를 사용하여 B에서 A로 다운 캐스팅합니다. 함수가 실패하면 에러가 생깁니다.

To More Generic Class

 

 

이 함수는 클래스에서 더욱 일반적인 클래스로 참조를 업캐스팅합니다. 예를 들어, 클래스 A가 B로부터 상속하는 경우 위의 함수를 사용하여 타입 A의 변수를 타입 B의 변수로 다운 캐스팅할 수 있습니다. 이 함수는 항상 성공적입니다.