NI-VISA .NET 라이브러리

개요

이 페이지에서는 NI-VISA .NET 라이브러리의 주요 기능에 대해 설명합니다. NI-VISA .NET 라이브러리를 다운로드하고 문서 및 예제를 찾으려면 NI 하드웨어 및 소프트웨어를 위한 .NET 리소스를 참조하십시오.

내용

소개

NI-VISA .NET 라이브러리는 NI-VISA .NET 인터페이스를 제공하는 클래스를 포함합니다. 이 라이브러리는 IVI Foundation이 만든 .NET용 VISA 구현 스펙을 준수합니다. 이 라이브러리는 IVI Foundation이 .NET API를 VISA로 표준화하기 전에 구현된 NI VisaNS 라이브러리를 대체합니다. NI-VISA는 업계 표준 VISA (Virtual Instrumentation Software Architecture) 스펙의 NI 구현입니다. VISA 및 VISA .NET 스펙은 .NET 환경에서 인스트루먼트 및 다른 디바이스와 통신하기 위한 표준, 일관된 API를 정의합니다. NI-VISA .NET은 TCP/IP, USB, GPIB, 시리얼, PCI/PXI 등의 여러 버스 및 인터페이스 기술을 지원합니다. NI-VISA .NET 라이브러리에서 제공되는 클래스는 IVI Foundation에서 제공하는 IVI VISA .NET 라이브러리(Ivi.Visa)에서 정의된 인터페이스와 사용 유형을 구현합니다. IVI VISA .NET 라이브러리에 대한 더 자세한 정보는 VPP-4.3.6을 참조하십시오: .NET용 VISA 구현 스펙.

인스트루먼트 컨트롤 API 선택하기

일반적인 어플리케이션에서, NI 는 사용 가능한 인스트루먼트 드라이버를 사용하도록 권장합니다. 인스트루먼트 드라이버를 다운로드하는 방법은 NI 하드웨어 및 소프트웨어용 .NET 리소스 섹션의 타사 인스트루먼트용 API 다운로드 섹션을 참조하십시오. 드라이버가 없거나 드라이버에서 사용할 수 없는 추가적인 기능이 필요한 경우에만 NI-VISA .NET 라이브러리를 사용하십시오.

NI-VISA .NET 및 NI-VISA 드라이버

NationalInstruments.Visa 네임스페이스에는 NI-VISA 드라이버에 풍부한 객체 지향 인터페이스를 제공하는 .NET 클래스가 포함되어 있습니다. VISA 세션 객체는 VISA API 스펙의 기본 개념입니다. VISA 세션은 리소스를 식별합니다. 인스트루먼트 리소스, 소켓 리소스, 인터페이스 리소스 등의 여러 타입의 리소스가 있습니다. NI-VISA .NET 클래스 라이브러리에서, 세션 파생 클래스로 불리는 세션에서 유도되는 클래스는 VISA 세션 객체를 캡슐화합니다.

세션 파생 클래스의 메소드는 VISA 세션 객체에서 데이터 읽기 또는 쓰기와 같은 작업을 수행합니다. NI-VISA .NET 클래스의 메소드는 NI-VISA C API의 작업에 맵핑됩니다. 세션으로 파생된 클래스의 프로퍼티는 VISA 세션 객체를 설정하고 NI-VISA C API의 속성에 맵핑합니다.

세션 파생 클래스에 .NET 이벤트 멤버가 있습니다. .NET 이벤트로 위임자를 등록하여 이벤트가 발생할 때 알림을 받을 수 있습니다. 세션 파생 클래스 메소드 및 프로퍼티는 에러 확인 및 NI-VISA 드라이버 에러 코드를 .NET 예외 타입으로 변환합니다.

세션 파생 클래스 사용하기

NationalInstruments.Visa 네임스페이스의 주요 클래스는 GpibSession, PxiSession, SerialSession, TcpipSession, TcpipSocket, UsbSession 및 VxiSession입니다. 이 문서에서 "파일" 클래스로도 언급되는 이러한 세션 파생 클래스는 간접적으로 세션에서 파생됩니다. 이러한 클래스는 핵심 VISA 기능을 제공합니다. 각 세션 파생 클래스는 VISA 리소스 타입을 나타냅니다. 각 세션 파생 클래스는 세션 파생 클래스가 나타내는 리소스 타입에 유효한 메소드, 프로퍼티 및 이벤트만을 노출합니다. GpibInterface, PxiBackplane, PxiMemory, UsbRaw, VxiBackplane, 및 VxiMemory는 고급 어플리케이션을 위한 추가적인 세션 파생 쉬 클래스입니다.

일반 .NET 어플리케이션 또는 라이브러리에서 VISA 리소스와 통신하려면 해당 리소스에 대응하는 특정 세션 파생 클래스의 인스턴스를 생성합니다. 인스턴스에서 프로퍼티를 설정하여 리소스를 설정합니다. 인스턴스에서 메소드를 호출하여 리소스를 읽고 쓸 수 있습니다. 더이상 접근할 필요가 없을 때 리소스를 해제하려면 삭제를 호출해야 합니다.

인스트루먼트 드라이버 같은 일부 타입의 어플리케이션이나 라이브러리는 인터페이스에 독립적인 방식으로 리소스에 접근해야 합니다. NI-VISA .NET에는 인터페이스에 독립적인 방식으로 VISA 리소스를 생성하고 사용할 수 있는 클래스가 추가로 포함되어 있습니다. 예를 들어 GPIB 인터페이스 또는 시리얼 인터페이스를 통해 인스트루먼트와 통신할 수 있는 객체를 생성하려면 Open를 호출하고 반환 값을 MessageBasedSession에 캐스트합니다.

I/O 작업 사용하기

세션으로 유도된 객체에서 수행하는 주요 작업 세트는 입력/출력 작업 세트입니다. 메시지 기반 리소스의 I/O에 사용하는 작업은 레지스터 기반 리소스에 사용하는 작업과 다릅니다. 각 세션 파생 잎 클래스는 세션 파생 클래스가 나타내는 리소스에 적합한 I/O 메소드만을 제공합니다.

메시지 기반 리소스와 통신하려면, 어플리케이션과 리소스 사이에 문자열 또는 바이트 배열을 전달해야 합니다. GPIB 인스트루먼트는 메시지 기반 리소스의 예입니다. 레지스터 기반 리소스와 통신하려면, 리소스에서 레지스터를 설정하거나 리소스가 반출한 메모리에 직접 접근해야 합니다. PXI 인스트루먼트는 레지스터 기반 리소스의 예입니다.

단순 메시지 기반 I/O 작업

메시지 기반 리소스를 나타내는 세션 파생 클래스는 메시지 기반 리소스를 읽고 쓰는데 사용할 수 있는 메소드를 제공하는 RawIO 프로퍼티를 포함합니다. RawIO 객체는 동기식 및 비동기식 읽기 및 쓰기 메소드를 제공합니다. 동기화 메소드는 전체 작업을 수행하고 작업이 완료되면 반환합니다. 비동기화 메소드는 동작을 시작하고, 즉시 반환하고, 동작이 완료되면 데이터를 요청할 때까지 데이터를 제공하는 위임자를 호출하거나 보류합니다.

ReadString을 사용하여 리소스에서 동기적으로 문자열을 읽습니다. 리소스에서 2진 데이터의 배열을 동기적으로 읽으려면 읽기를 사용합니다. 시작 읽기를 사용하여 비동기화 읽기 작업을 시작합니다. EndReadString 또는 EndRead을 사용하여 비동기화 읽기 작업의 결과를 얻습니다.

쓰기를 사용하여 동기적으로 문자열 또는 2진 데이터의 배열을 리소스에 씁니다. 시작 쓰기를 사용하여 비동기화 쓰기 작업을 시작합니다. EndWrite을 사용하여 비동기화 쓰기 작업의 결과를 얻습니다.

포맷된 메시지 기반 I/O 작업

메시지 기반 리소스를 나타내는 세션 파생 클래스는 메시지 기반 리소스를 읽고 쓰는데 사용하는 상위 레벨 포맷 I/O 작업을 제공하는 FormattedIO 프로퍼티를 포함합니다.

쓰기 또는 쓰기 라인 메소드 중 하나를 사용하여 동기적으로 리소스에 텍스트 기반 메시지를 포맷하고 씁니다. WriteBinary를 사용하여 2진 데이터 블록을 보냅니다. BinaryEncoding 프로퍼티를 사용하여 FormattedIO 객체가 2진 데이터를 포맷하는 방법을 지정합니다.

읽기 메소드 중 하나를 사용하여 리소스에서 텍스트 기반 메시지와 2진 데이터를 동기적으로 읽고 분석합니다. 다양한 읽기 메소드는 바이트, 문자, 배정도, 정수, 부동소수 값을 읽을 수 있는 기능을 포함합니다. 예를 들어, ReadInt64는 ASCII로 인코딩된 Int64 값을 읽고 ReadDouble는 ASCII로 인코딩된 Double 값을 읽습니다. BinaryEncoding 프로퍼티를 사용하여 FormattedIO 객체가 2진 데이터를 어떻게 분석하는지 지정합니다.

Printf 메소드 중 하나를 사용하여 지정된 포맷으로 데이터를 포맷하고 리소스에 씁니다. Scanf 메소드 중 하나를 사용하여 리소스에서 포맷된 문자열을 읽고 지정된 포맷에 따라 문자열을 분석합니다. Printf 및 Scanf 메소드에 제공되는 포맷 문자열에 사용되는 포맷 지정자는 VISA viPrintf 및 viScanf 함수에 사용되는 것과 매우 유사하며 몇 가지 차이점이 있습니다. FormattedIO 메소드 및 지원되는 포맷 지정자에 대한 자세한 내용은 VPP-4.3.6 스펙의 IMessageBasedFormattedIO 설명을 참조하십시오.

레지스터 기반 I/O 작업

레지스터 기반 리소스를 나타내는 세션 파생 클래스는 레지스터 기반 리소스가 반출하는 메모리에서 읽고 쓰는데 사용하는 메소드를 포함합니다.

디바이스 메모리에서 스칼라 값을 읽으려면 In8, In16, In32, 및 In64을 사용하십시오. MoveIn8, MoveIn16, MoveIn32 및 MoveIn64을 사용하여 디바이스 메모리에서 값의 배열을 읽습니다.

Out8, Out16, Out32, 및 Out64을 사용하여 디바이스 메모리에 스칼라 값을 씁니다. MoveOut8, MoveOut16, MoveOut32, 및 MoveOut64을 사용하여 디바이스 메모리에 값 배열을 씁니다.

오류 핸들링 사용하기

NI-VISA 드라이버는 작업의 성공 또는 실패를 나타내는 에러 코드를 반환합니다. NI-VISA .NET 메소드 호출 또는 프로퍼티 접근으로 인해 NI-VISA 드라이버에 에러가 발생하면 .NET 클래스가 Ivi.Visa.NativeVisaException을 생성하고 반환합니다. 이 예외 객체의 에러 코드 프로퍼티는 NI-VISA 드라이버 작업이 반환한 에러 코드를 포함합니다.

작업이 타임아웃된 경우 데이터를 읽고 쓰는 다양한 메시지 베이스 세션 메소드가 Ivi.Visa.IOTimeoutException을 반환합니다. 이 예외의 실제 카운트 프로퍼티는 타임아웃이 발생하기 전에 읽거나 쓴 원소의 개수를 포함합니다. 이 예외에서 실제 데이터 프로퍼티는 타임아웃이 발생하기 전에 읽거나 쓴 바이트를 포함합니다.

모든 NI-VISA 에러 코드의 목록은 NI-VISA 도움말의 에러 코드 토픽을 참조하십시오. 시작 메뉴에서 NI-VISA 도움말을 보려면, 시작≫프로그램≫National Instruments≫VISA≫NI-VISA 도움말을 선택합니다.

리소스 관리자 사용하기

ResourceManager 클래스는 리소스 이름을 가진 세션 파생 클래스를 찾고, 분석하고 열 수 있는 기능을 제공합니다. 주어진 리소스 이름에 따라 적절한 세션 파생 클래스를 인스턴스화하려면 열기를 사용합니다. 주어진 검색 표현식에서 응용 프로그램 도메인에서 사용할 수 있는 리소스 이름의 리스트를 얻으려면 찾기를 사용합니다. 자원 이름에 대한 추가 정보를 얻으려면 Parse를 사용합니다.

더 이상 접근할 필요가 없을 때 리소스를 해제하려면 해제를 호출해야 합니다. 열기 메소드를 사용하여 인스턴스화된 모든 세션 파생 객체는 ResourceManager 인스턴스를 삭제한 후에도 유효합니다.

VisaNS API와의 관계

NI-VISA .NET API는 VisaNS API와 유사하며 VisaNS가 제공하는 대부분의 기능을 지원합니다. VisaNS는 표준 스펙을 사용할 수 있기 전에 NI가 생성한 VISA용 레거시 .NET API입니다. NI는 개발하는 모든 새로운 어플리케이션에 VisaNS 대신 표준 NI-VISA .NET API를 사용할 것을 권장합니다. 이후 출시 버전에서는 레거시 VisaNS API에 대한 지원이 제거됩니다.

또한 VisaNS API를 사용하는 어플리케이션을 수정하여 대신 표준 NI-VISA .NET API를 사용할 수 있습니다. 예를 들어, 지원되는 새 API의 세션으로 유도된 클래스는 비슷한 컨스트럭터로 이름을 붙입니다. 그러나 새로운 API는 IVI 사양에 지정된 인터페이스를 구현하고 해당 사양에 정의된 여러 타입을 사용하기 때문에, 이 세션으로 유도된 클래스의 실제 멤버는 VisaNS의 멤버와 다르기 때문에, VisaNS에서 NI-VISA .NET으로 마이그레이션하려면 어플리케이션을 수동으로 변경해야 합니다. 포맷된 I/O 기능과 같은 일부 경우, API는 VisaNS와 크게 다르며, 마이그레이션을 위해 더 큰 변경이 필요할 수 있습니다.

VisaNS API가 지원하는 일부 기능은 NI-VISA .NET API에서 지원되지 않거나 다르게 지원됩니다. 주요 차이점은 아래에 설명되어 있습니다.

  • 메시지 기반 I/O 작업이 다른 방식으로 제공됨
    VisaNS에서 일부 세션 파생 클래스에서 구현되는 ReadString 또는 Write과 같은
    단순 메시지 기반 작업은 이제 Ivi.Visa의 RawIO 속성으로 제공됩니다. 일부 세션 파생 클래스가 구현하는 IMessageBasedSession 인터페이스. RawIO 프로퍼티는 Ivi.Visa.IMessageBasedRawIO 인터페이스를 구현하는 타입입니다.

    마찬가지로 VisaNS에서 MessageBasedSessionReader 및 MessageBasedSessionWriter가 구현하는 포맷된 메시지 기반 작업은 일부 세션 파생 클래스가 구현하는 Ivi.Visa.IMessageBasedSession 인터페이스의 FormattedIO 프로퍼티에 의해 제공됩니다. FormattedIO 프로퍼티는 Ivi.Visa.IMessageBasedFormattedIO 인터페이스를 구현하는 타입입니다.
  • 포맷 I/O에 사용되는 포맷 지정자가 다릅니다.
    VisaNS의 포맷 I/O 메소드는 String.Format 메소드가 사용하는 것과 유사한 포맷 문자열을 지원합니다. 그러나 NI-VISA .NET은 VISA viPrintf 및 viScanf 함수에서 사용되는 것과 유사한 포맷 지정자를 가진 포맷 문자열을 지원합니다. FormattedIO 메소드 및 지원되는 포맷 지정자에 대한 자세한 내용은 VPP-4.3.6 스펙의 Ivi.Visa.IMessageBasedFormattedIO 인터페이스 설명을 참조하십시오.
  • ResourceManager 클래스가 분리 가능
    ResourceManager 클래스는 다르게 사용됩니다. ResourceManager 객체의 인스턴스를 얻으려면 퍼블릭 컨스트럭터 ResourceManager()를 사용하여 새 인스턴스를 만듭니다. ResourceManager 객체는 해제 가능하며, 더 이상 필요하지 않으면 해제해야 합니다. ResourceManager의 열기 메소드를 사용하여 얻은 모든 세션 파생된 객체는 ResourceManager 객체가 삭제된 후에도 유효합니다.
  • 비표준 VISA 이벤트 유형이 다르게 지원됨
    다양한 세션 파생 클래스에서 사용할 수 있는
    NET 이벤트 멤버를 사용하여 표준 VISA 이벤트 타입의 어커런스 알림을 수신하는 위임 메소드를 등록할 수 있습니다. 이벤트 위임자와 함께 비표준 이벤트 타입을 사용할 수 없습니다. 그러한 이벤트는 NI-VISA 드라이버에서 사용 가능한 큐 메커니즘을 사용하는 세션 클래스의 EnableEvent 메소드를 사용하여만 활성화할 수 있습니다. 이러한 이벤트에 대한 알림은 세션 클래스의 기다림 이벤트 메소드를 사용하여 수신할 수 있습니다.
  • .NET 원격 관리가 지원되지 않음
    .NET 원격 관리 API는 레거시 기술로 간주되며 Microsoft에서 새로운 애플리케이션에 권장하지 않습니다. NI-VISA .NET은 .NET 원격 관리에 대한 지원을 제공하지 않습니다. NI-VISA 서버는 VISA 리소스에 원격으로 액세스할 수 있는 방법을 제공하며 대안으로 사용할 수 있습니다.
  • 세션 파생 잎 클래스가 밀폐되어 있습니다.
    GpibSession 또는 TcpipSession과 같은
    표시 클래스는 밀폐되며 다른 클래스를 파생할 수 없습니다.
  • FirewireSession이 지원되지 않습니다.
    NI-VISA 드라이버는 더 이상 FireWire 리소스를 지원하지 않으므로 NI-VISA .NET 라이브러리는 이러한 리소스에 대해 세션 파생 클래스를 제공하지 않습니다.

Was this information helpful?

Yes

No