NI does not actively maintain this document.
This content provides support for older products and technology, so you may notice outdated links or obsolete information about operating systems or other relevant products.
VISAは、GPIB、シリアル、イーサネット/LAN、IEEE 1394、USB計測器との通信を統合して計測器制御アプリケーションをシンプルにするために開発されたドライバソフトウェアアーキテクチャです。VISA APIはGPIB、シリアル、イーサネット/LAN、IEEE 1394、USB計測器に対応しています。
VISAには次の利点があります。
VISA .Net APIは、VISAを用いた計測器との通信に使用する .Netクラスで構成されたオブジェクト指向のインタフェースです。C#やVisual Basic .NetのようなNET準拠の言語を使用できます。
VISA .Net APIは、フリーで提供されているNI-VISAドライバソフトウェアに含まれています。NI VISAは、National Instruments VISAから無償でダウンロードできます。NI VISAの .Netサポートをインストールするには、図1に示すように開発サポートカテゴリの下にある .Net Framework 1.1言語サポートを選択します。
VisaNSクラスライブラリへのリファレンスの追加
C#またはVisual Basic .Net計測器制御アプリケーションを作成するには、まずVisual Studioでソリューションを始めます。Solution Explorerでは、各プロジェクトにリファレンスが整理されているReferencesと呼ばれるカテゴリがあります。VISA .Net APIクラスライブラリを使うには、NationalInstruments.CommonとNationalInstruments.VisaNSのリファレンスをプロジェクトに追加します。NationalInstruments.Commonネームスペースには、NI製の多くのドライバで使用されている共通のメソッドやプロパティが含まれています。NationalInstruments.VisaNSネームスペースには、VISA .Net API用のメソッドとプロパティが含まれています。新規のリファレンスを追加するには、Referencesカテゴリを右クリックしてAdd Referenceを選択します。
お使いのアプリケーションへのVisaNSネームスペースのインポート
VisaNSクラスを参照すると、プロジェクトで使用できます。VisaNSネームスペースをインポートすることで、タイプ入力の頻度を削減してより効率よくオブジェクトにアクセスすることができます。アプリケーションの最初に以下のコード行を追加して、VisaNSネームスペースをインポートします。
[C#]
using NationalInstruments.VisaNS;
[VB .Net]
Imports NationalInstruments.VisaNS
計測器リソース名の決定
ここでのリソースは、通信するGPIB、シリアル、イーサネット/LAN、IEEE 1394、USB計測器または制御器です。計測器デスクリプタとしても知られるリソース名は、VISAリソースの正確な名前と場所を指定します。たとえば、リソース名ASRL1::INSTRはお使いのコンピュータのCOMポート1の計測器を示し、GPIB0::13::INSTRはアドレス13のGPIB計測器を示します。VISAを使用して計測器と通信するには、アドレスと計測器デスクリプタを決定する必要があります。
このチュートリアルの後半で、このリソース名を使用して通信したい計測機器を指定します。
VISAセッションを開く
セッションとはVISA .Net APIとリソースとの接続またはリンクのことです。VISA .Net APIには、特定のアプリケーション用に設計されたさまざまなセッションクラスが含まれています。たとえば、MessageBasedSessionクラスは、テキスト文字列形式でメッセージを送受信する計測器に使用されます。それに対してRegisterBasedSessionクラスは、レジスタから書き込み読み取りを行うことで通信する計測器に使用します。本チュートリアルでは、MessageBasedSessionクラスについて説明します。その他のセッションタイプについては、NI VISAと一緒にインストールれるNI-VISA .Net Frameworkヘルプを参照してください。
新規のMessageBasedSessionを作成するには、まず最初にアプリケーションでそれを変数として宣言することです。以下のコードは、新しいMessageBasedSessionを宣言する方法を示します。
[C#]
private MessageBasedSession mbSession;
[VB .Net]
Private mbSession As MessageBasedSession
このMessageBasedSession変数は、フォームまたはクラスのグローバル変数として宣言することが重要です。計測器と通信するすべての関数がこのオブジェクトにアクセスする必要があります。
MessageBasedSession変数を宣言した後で、MessageBasedSessionオブジェクトのインスタンスを作成する必要があります。インスタンスの作成には、ResourceManagerクラスのスタティック (またはVisual Basicで「shared」と呼ばれる) メソッド、GetLocalManagerを使用します。このメソッドで新規のResourceManagerオブジェクトのインスタンスが作成されます。この新規ResourceManagerオブジェクトには、「Open」と呼ばれる関数が含まれており、これによってSessionオブジェクトのインスタンスが作成されます。最後に、新規作成されたSessionオブジェクトをMessageBasedSessionにキャストします。ResourceManagerとSessionクラスには、このチュートリアルで説明する以上の多くの機能が含まれます。クラスについての詳細は、NI VISAと一緒にインストールされるNI-VISA .Net Frameworkヘルプを参照してください。以下のコードは、1行のコードでこれら3つの操作を実行する方法を示します。
[C#]
mbSession = (MessageBasedSession)ResourceManager.GetLocalManager().
Open(resourceString.Text);
[VB .Net]
mbSession = CType(ResourceManager.GetLocalManager().
Open(resourceString.Text), MessageBasedSession)
ResourceManagerオブジェクトのOpenメソッドは、パラメータとして文字列の計測器リソース名を受け取ることができます。計測器のリソース名の探し方は本チュートリアルのはじめに説明した通りです。
アプリケーションをさらに強固にするために、tryおよびcatchステートメントを追加します。tryおよびcatchステートメントは、処理を実行中に発生するあらゆるエラーに対して応答することを可能にします。特に、InvalidCastExceptionタイプの例外とその他すべての例外をExceptionタイプを使用して補足ます。以下のコードは、tryおよびcatchステートメントの実装方法を示します。
[C#]
try
{
mbSession = (MessageBasedSession)ResourceManager.GetLocalManager().
Open(resourceString.Text);
}
catch(InvalidCastException)
{
MessageBox.Show("Resource selected must be a message-based session");
}
catch(Exception exp)
{
MessageBox.Show(exp.Message);
}
[VB .Net]
Try
mbSession = CType(ResourceManager.GetLocalManager().
Open(resourceString.Text), MessageBasedSession)
Catch exp As InvalidCastException
MessageBox.Show("Resource selected must be a message-based session")
Catch exp As Exception
MessageBox.Show(exp.Message)
End Try
データの転送
計測器と通信するSessionを作成すると、計測器へのデータ転送と応答の読み取りを開始できます。メッセージベース計測器と通信する最も一般的な3つの操作は、クエリ、書き込み、読み込みです。クエリ操作は、計測器に対してコマンドを書き込み、その応答を読み取ります。それに対して書き込みコマンドは、計測器にコマンドを送信するのみで、読み取りコマンドを使用して計測器からの情報を読み取ります。以下のコードは、クエリ操作の使用方法を示します。
[C#]
try
{
string responseString = mbSession.Query(stringToWrite.Text);
}
catch(Exception exp)
{
MessageBox.Show(exp.Message);
}
[VB .Net]
Try
Dim responseString As String = mbSession.Query(stringToWrite.Text)
Catch exp As Exception
MessageBox.Show(exp.Message
End Try
読み取りおよび書き込み操作はMessageBasedSessionクラスのメソッドであるため、クエリ操作と非常によく似ています。これら操作の詳細については、NI VISAと一緒にインストールされるNI-VISA .Net Frameworkヘルプを参照してください。
VISAセッションを閉じる
計測器と通信するために作成したVISAセッションを閉じるには、MessageBasedSessionクラスのDisposeメソッドを使用する必要があります。このメソッドによって、セッションに割り当てられたリソースが解放されます。以下のコードは、セッションを破棄する方法を示します。
[C#]
mbSession.Dispose();
[VB .Net]
mbSession.Dispose()
NI VISAは、多種多様にわたる計測器制御に最適のソリューションです。VISA .Net APIは、計測器との容易な通信を可能とするオブジェクト指向インタフェースを提供します。