NIのライブラリ廃止でC#のGPIB通信のプログラムの書き方が変わった

2020年2月21日

このブログでは計測器制御にC#をお勧めしています。C#で計測器制御をするにはいくつかの方法がありますが、一番良いのはGPIBだと思います。GPIBで広く普及しているインターフェース機器はNational Instruments社(以下NI)のUSB-GPIB変換ケーブルで、私もこれが一番良いと思います。

以前このブログでもGPIBの使いかたの紹介記事を投稿しました。

ですが、最近NIはGPIBのライブラリ(VISAライブラリ)の開発を終了してIVI Foundationのライブラリを推奨するようになりました。NIの提供しているドライバDVD(NI-488)のVer 19からは従来GPIBで使っていたライブラリが提供されていません。

そのため2019年ころからセットアップの方法がちょっと変わりました。この記事では新しいGPIBの設定方法を紹介します。

インストールするGPIBドライバ

ここでは以下の条件で確認した使用方法を説明します。

  • Windows 10 Pro
  • USB-GPIB-HS+
  • Visual Studio 2019 (C#)
  • Keysight 34461A

USB-GPIB-HS+を購入すると 2020年1月の時点ではVersion 19のNI-488ドライバDVDが付属します。Version 19は従来GPIB接続に使用していたNationalInstruments.CommonとNationalInstruments.VisaNSが含まれていません。Version 19をインストールする際は他のライブラリファイルを使用することになります。

新しいライブラリファイルをインストールするためにはNI-488ドライバDVDに収録されているNIパッケージマネージャをインストールします。このソフトはPCにインストールするファイルやドライバの管理をするためのソフトですので、デフォルト設定でインストールします。

パッケージマネージャをインストール後実行すると個別のドライバやライブラリをインストールすることができます。個々のファイルごとにインストールすることもできますが、私はNI-VISAとNI-488をインストールしました。(どちらか片方でもいいのかもしれない)

Visual Studioの参照設定

Version 19以前と同じですが、Visual Studioの参照設定に先ほどインストールされたファイルを2つ追加します。追加の方法は以前の記事にも書いてありますが、ソリューションエクスプローラウィンドウの参照設定を右クリックして参照の追加を選択します。

Version 19以降は以下の2つのファイルを追加します。

  • C:\Program Files (x86)\IVI Foundation\VISA\Microsoft.NET\Framework32\v2.0.50727\VISA.NET Shared Components 5.11.0\Ivi.Visa.dll
  • C:\Program Files (x86)\IVI Foundation\VISA\Microsoft.NET\Framework32\v4.0.30319\NI VISA.NET 19.0\NationalInstruments.Visa.dll

次にソースコードの先頭に次を追加します。

using Ivi.Visa;
using NationalInstruments.Visa;

MessagebasedsessionのOpenは以前とほぼ同じです。

MessageBasedSession mbsession = (MessageBasedSession)(new ResourceManager()).Open("GPIB::10::INSTR");

ReadとWriteとDisposeはそれぞれ次のようになりました。Queryはなくなりました。

mbsession.RawIO.Write("*IDN?");
label.Text = mbsession.RawIO.ReadString();
mbsession.RawIO.Dispose();

以上がVersion 19以降変更になった部分です。この他にバッファサイズだとかタイムアウト時間の設定方法も変わっていると思いますが、ここまでのコードを参考にすれば問題ないと思います。Queryのコマンドが無くなってしまったので今までのコードをただ置き換えるだけだと動作しないのが難点です。

GPIB通信プログラム まとめ

この記事ではGPIB通信を行う際のC#のコードが変わりましたので新しい方法を紹介しました。変更点の要約は次のような感じです。

  • 参照するライブラリファイルの変更
  • Using ~の部分の変更
  • コマンドの変更

最近NIのGPIB関連の開発はあまり積極的でなかったのでもうライブラリはあまり更新されないかなと思っていましたが、開発を停止されてしまうとは。今後IVI Fundationが中心になってGPIBのドライバ開発するんでしょうけど、問題が無いようにしてほしいものです。