NI-VISAまたはNI-VXI APIでVXI割り込み(信号、トリガなど)を処理する
NI-VISA
NI-VISAには、キューとコールバックの2つのメカニズムがあり、柔軟なイベントの処理が可能です。イベント処理の最も一般的な方法は、イベントキューを使用することです。viOpen()でVISAセッションを開いた後、viEnableEvent()を呼び出してVI_QUEUEをメカニズムとして指定すると、キューを有効にすることができます。後に、viWaitOnEvent()を呼び出して待機し、そのセッションに関連付けられたデバイスからイベントを受け取ります。コールバックにする場合は、まず、viInstallHandler()でコールバックハンドラを指定し、VI_HNDLRをメカニズムとしてviEnableEvent()を呼び出します。コールバックハンドラは、指定されたイベントのタイプを受け取ると常に呼び出されます。
VXIインタフェースで使用可能なイベントの種類を下記に示します。
- VI_EVENT_VXI_SIGP―VXIデバイスからの16ビット割り込みまたは信号
- VI_EVENT_VXI_VME_INTR―VXIまたはVMEデバイスからの8ビット、16ビット、32ビットの割り込み
- VI_EVENT_TRIG―VXIデバイスからのトリガ検出
たいていのVXIデバイスは16ビット割り込みを生成するため、VI_EVENT_VXI_SIGPまたはVI_EVENT_VXI_VME_INTRのどちらかを使用することができます。—これらは機能的に同等です。VXIデバイスはトリガを生成する場合、まず、viEnableEvent()を呼び出す前に、VI_ATTR_TRIG_IDに、検出するTTLまたはECLトリガラインを指定しなければなりません。
NI-VXI API
メモ ナショナルインスツルメンツでは、アプリケーションの開発に、NI-VXI APIではなくNI-VISAをご使用になることをお勧めします。 |
NI-VXI APIの非同期信号の処理で最も一般的な方法は、コールバック関数を使用することです。こうした関数は、非同期信号が受信されると常に呼び出されます。InitVXIlibrary()でライブラリを初期化後、以下の機能のうちの1つを使用してコールバック機能を設定することができます。
- SetVXIintHandler()―VXIの割り込みを処理
- SetSignalHandler()―VXI信号を処理
- SetTrigHandler()―VXIトリガを処理
下記の関数を使用して、検出しようとしている信号を有効にしてください。
- EnableVXIint()―VXI割り込みラインを有効にする
- EnableSignalInt()―VXI信号を有効にする
- EnableTrigSense()―トリガを有効にする
VXI割り込みおよび信号では、いくつかのルーチンを実行することが必要です。詳細は、RouteSignal()およびRouteVXIint()関数を参照してください。NIVXIディレクトリの割り込みの例を参照することもお勧めします。
VXIトリガをご使用の際は、National Instruments Technical Note 40の『Triggering with NI-VXI』を参照してください。この資料は、ナショナルインスツルメンツの技術サポートのリソースのウェブページにあります。