このページでは、NI-VISA .NETライブラリの主な機能について説明します。NI-VISA .NETライブラリをダウンロードしてドキュメントやサンプルを検索するには、.NET Resources for NI Hardware and Softwareを参照してください。
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実装仕様。
一般的なアプリケーションでは、 NI は、計測器に固有の計測器ドライバがある場合はそれを使用することを推奨します。Instrument Driversのダウンロード先については、『.NET Resources for NI Hardware and Software』の「Download API for Third Party Instrument」セクションを参照してください。NI-VISA .NETライブラリは、そのようなドライバが使用できない場合、またはドライバで使用できない追加機能が必要な場合にのみ使用してください。
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リソースと通信するには、そのリソースに対応する特定のセッション派生クラスのインスタンスを作成します。インスタンスのプロパティを設定してリソースを構成します。インスタンスのメソッドを呼び出して、リソースから読み書きします。アクセスする必要がなくなったリソースを解放するには、「破棄」を呼び出す必要があります。
Instrument Drivers などの一部のアプリケーションまたはライブラリは、インタフェースに依存しない方法でリソースにアクセスする必要があります。NI-VISA .NETには、インタフェースに依存しない方法でVISAリソースを作成およびアクセスするための追加クラスが含まれています。たとえば、GPIBインタフェースまたはシリアルインタフェースを介して計測器との通信に使用できるオブジェクトを作成するには、「開く」を呼び出して戻り値をMessageBasedSessionに型変換します。
セッション派生オブジェクトに対して実行する主な操作は、入力/出力操作のセットです。メッセージベースのリソースのI/Oに使用する操作は、レジスタベースのリソースの方法とは異なります。各セッション派生リーフクラスは、セッション派生クラスが表すリソースに適したI/Oメソッドのみを提供します。
メッセージベースのリソースと通信するには、アプリケーションとリソース間で文字列またはバイト配列を渡す必要があります。GPIB計測器は、メッセージベースのリソースの例です。レジスタベースのリソースと通信するには、リソースにレジスタを設定するか、リソースによってエクスポートされたメモリに直接アクセスする必要があります。PXI計測器は、レジスタベースのリソースの例です。
メッセージベースのリソースを表すセッション派生クラスには、メッセージベースのリソースの読み書きに使用できるメソッドを提供するRawIOプロパティが含まれます。RawIOオブジェクトは、同期と非同期の両方の読み取り/書き込みメソッドを提供します。同期メソッドは操作全体を実行し、操作が完了すると返します。非同期メソッドは操作を開始し、即座に返し、操作が完了したら、ユーザが指定したデリゲートを呼び出すか、ユーザが要求するまでデータを保持します。
ReadStringを使用して、リソースから文字列を同期的に読み取ります。読み取りを使用して、リソースからバイナリデータの配列を同期的に読み取ります。非同期読み取り操作を開始するには、「BeginRead」を使用します。非同期読み取り操作の結果を取得するには、EndReadStringまたはEndReadを使用します。
「書き込み」を使用して、文字列またはバイナリデータの配列をリソースに同期的に書き込みます。非同期書き込み操作を開始するには、「BeginWrite」を使用します。非同期書き込み操作の結果を取得するには、「書き込み終了」を使用します。
メッセージベースのリソースを表すセッション派生クラスには、メッセージベースのリソースの読み書きに使用する上位のフォーマットI/O操作を提供するFormattedIOプロパティが含まれます。
書き込みメソッドまたは書き込みラインメソッドのいずれかを使用して、テキストベースのメッセージを同期的にフォーマットし、リソースに書き込みます。「WriteBinary」を使用して、バイナリデータのブロックを送信します。BinaryEncodingプロパティを使用して、FormattedIOオブジェクトがバイナリデータをフォーマットする方法を指定します。
読み取りメソッドの1つを使用して、テキストベースのメッセージとバイナリデータをリソースから同期的に読み取り、解析します。さまざまな読み取りメソッドには、バイト、文字、倍精度、整数、および浮動小数点値を読み取る機能があります。たとえば、ReadInt64はASCIIエンコードされたInt64値を読み取り、ReadDoubleはASCIIエンコードされた倍精度値を読み取ります。BinaryEncodingプロパティを使用して、FormattedIOオブジェクトがバイナリデータを構文解析する方法を指定します。
Printfメソッドの1つを使用して、データを指定された形式にフォーマットし、リソースに書き込みます。スキャンメソッドの1つを使用して、リソースからフォーマットされた文字列を読み取り、指定された形式に従って文字列を構文解析します。PrintfメソッドとScanfメソッドに渡される形式文字列で使用される形式指定子は、VISAのviPrintf関数とviScanf関数で使用される形式指定子とよく似ていますが、いくつかの違いがあります。FormattedIOメソッドとサポートされている形式指定子の詳細については、VPP-4.3.6仕様のIMessageBasedFormattedIOの説明を参照してください。
レジスタベースのリソースを表すセッション派生クラスには、レジスタベースのリソースによってエクスポートされるメモリの読み書きに使用するメソッドが含まれます。
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ドライバ操作によって返されたエラーコードが含まれています。
データを読み書きするさまざまなMessageBasedSessionメソッドは、操作がタイムアウトになるとIvi.Visa.IOTimeoutExceptionを返します。この例外のActualCountプロパティには、タイムアウトが発生する前に読み書きされた要素数が含まれます。この例外のActualDataプロパティには、タイムアウトが発生する前に読み書きされたバイトが含まれています。
すべてのNI-VISAエラーコードの一覧については、『NI-VISAヘルプ』の「エラーコード」トピックを参照してください。スタートメニューから『NI-VISAヘルプ』にアクセスするには、スタート→プログラム→National Instruments→VISA→NI-VISAヘルプを選択します。
ResourceManagerクラスは、リソース名を持つセッション派生クラスを検索、解析、および開く機能を提供します。「開く」を使用して、指定されたリソース名に応じて適切なセッション派生クラスのインスタンスを作成します。検索を使用して、検索式に基づいてアプリケーションドメインで使用可能なリソース名のリストを取得します。解析を使用して、リソース名に関する追加情報を取得します。
アクセスする必要がなくなったリソースを解放するには、「破棄」を呼び出す必要があります。開くメソッドを使用してインスタンス化されたセッション派生オブジェクトは、ResourceManagerインスタンスが破棄された後も有効です。
NI-VISA .NET APIはVisaNS APIに類似しており、VisaNSが提供するほとんどの機能をサポートしています。VisaNSは、標準仕様が利用可能になる前にNIによって作成されたレガシー.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でサポートが異なります。主な違いの一部を以下に説明します。