デジタルマルチメータ 34411AをUSB接続しVB.net (VB2010)で制御する

デジタルマルチメーター(以下DMM)をGPIBでなくUSBで制御してみることにした。
GPIBボードの挿せないノートＰＣでも制御できるのが利点。
今後はGPIBの代わりにＬＡＮ接続やUSB接続が増えてくると思う。

#日本語説明書をダウンロードする。
以下からダウンロードする
<http://literature.cdn.keysight.com/litweb/pdf/5991-2173JAJP.pdf?id=2318461>
#IO Libraries Suite をダウンロード
以下よりダウンロードする。
http://www.keysight.com/ja/pd-1985909/io-libraries-suite?nid=-33330.977662.00&cc=JP&lc=jpn&cmpid=zzfindiolib

1.「IOライブラリ17.1を今すぐダウンロードしてください！ 」をｸﾘｯｸ
2.ログイン画面が開くのでログインする。※登録していない場合は新規登録（myKeysightの登録）を行う。
3.ダウンロードが始まるので保存パスを指定する。
#![install3.png](https://qiita-image-store.s3.amazonaws.com/0/10836/ff29f192-9afb-0a76-2d7e-b3886a2a9d72.png)

1.ダウンロードしたファイル（例　Keysight_Instrument_Control_Bundle_11.2015.exe　バージョンでファイル名は異なる）を実行する。
2.アプリが起動するので「Install now」をｸﾘｯｸ
![install1.png](https://qiita-image-store.s3.amazonaws.com/0/10836/0b6ec2f2-916f-4efb-9790-75a5a006716f.png)
3.自己解凍が走り次の画面になるので「NEXT」をｸﾘｯｸ
![install2.png](https://qiita-image-store.s3.amazonaws.com/0/10836/83e55729-a1df-74ee-966f-0115cae29f01.png)
4.「Agree」を選択して「Next>」をｸﾘｯｸ
![install3.png](https://qiita-image-store.s3.amazonaws.com/0/10836/c74a9da0-fbac-8519-a246-8ddcd633ba47.png)
5.「Next>」をｸﾘｯｸ
![SnapCrab_NoName_2015-11-16_15-10-44_No-00.png](https://qiita-image-store.s3.amazonaws.com/0/10836/54b474d1-f64a-04a7-6102-b9a238f3d845.png)
6.「Install」をｸﾘｯｸ
![SnapCrab_NoName_2015-11-16_15-11-48_No-00.png](https://qiita-image-store.s3.amazonaws.com/0/10836/9e730766-678b-1eb9-444d-ee8f67095e40.png)
7.「Finish」をクリック
![SnapCrab_NoName_2015-11-16_15-28-23_No-00.png](https://qiita-image-store.s3.amazonaws.com/0/10836/59340c02-f566-4c06-b60e-bdf78b9e6183.png)

#DMMとPCを接続する
1.DMM本体の後ろのUSBポート(B)にUSBケーブルをつなぎ、電源ケーブルをつなぐ。
![SnapCrab_NoName_2015-11-16_15-25-31_No-00.png](https://qiita-image-store.s3.amazonaws.com/0/10836/58e800e4-11de-ac03-ab54-a1044b6794fd.png)
#サンプルプログラムのダウンロード
1.以下のダウンロードサイトを開く
http://www.keysight.com/main/editorial.jspx?cc=JP&lc=jpn&ckey=2316752&nid=-536902435.626391.02&id=2316752
2.[デジタルマルチメータ用 サンプルプログラム (PS-X30 G10103A)](http://www.keysight.com/main/redirector.jspx?action=doc&lc=jpn&cc=JP&id=2316769&ltype=External%20File)をクリックする。
![SnapCrab_NoName_2015-11-16_15-37-46_No-00.png](https://qiita-image-store.s3.amazonaws.com/0/10836/7ca2a2cb-68fa-b7fc-dfd7-ed93227724f2.png)
3.「OK」をクリック。
![SnapCrab_NoName_2015-11-16_15-40-7_No-00.png](https://qiita-image-store.s3.amazonaws.com/0/10836/e1f1a356-3a40-465a-9c20-ceeb5f25195f.png)
4.ダウンロードしたファイルを解凍し、VB2010を起動しプロジェクトを開く
![SnapCrab_NoName_2015-11-16_15-45-36_No-00.png](https://qiita-image-store.s3.amazonaws.com/0/10836/ccc04d5c-4f19-3157-7dfa-399769d1702e.png)
5.ビルドすると多数のエラーがでるがくじけない。（ここからが本番）
![SnapCrab_NoName_2015-11-16_15-47-22_No-00.png](https://qiita-image-store.s3.amazonaws.com/0/10836/8127eac7-7d5f-2638-2f82-0939b9048f02.png)
6.VBの「プロジェクト」-「参照の追加」で「VISA COM 5.5 Type Library」を追加する。![SnapCrab_NoName_2015-11-16_15-50-10_No-00.png](https://qiita-image-store.s3.amazonaws.com/0/10836/a2661c32-038c-3ebd-4540-e536354114ff.png)
#サンプルプログラムを動かすがエラーが出てつながらない
1.デバッグ開始ボタンを押す。
![SnapCrab_NoName_2015-11-16_15-57-46_No-00.png](https://qiita-image-store.s3.amazonaws.com/0/10836/0c7fc92c-c83c-d9a5-f53a-2a086dac45f5.png)
2.サンプルプログラムが起動する。
![SnapCrab_NoName_2015-11-16_15-58-20_No-00.png](https://qiita-image-store.s3.amazonaws.com/0/10836/793adb70-9a9f-c02c-a041-048681d284c1.png)

3.「マルチメータを設定」ボタンを押す。致命的不具合でエラーになる。
![SnapCrab_NoName_2015-11-16_16-13-54_No-00.png](https://qiita-image-store.s3.amazonaws.com/0/10836/38024f03-4e34-8d45-7add-9901fb74826c.png)
4.「COMオブジェクトの作成に失敗しました」で検索すると
「管理者として実行」が必要な気がするので有効にする手順を確認。

5.「プロジェクト」－「Agt3441xaSample01のプロパティをクリック」
「アプリケーション」をクリックし、「Windows設定の表示」をクリック
![SnapCrab_NoName_2015-11-16_16-24-8_No-00.png](https://qiita-image-store.s3.amazonaws.com/0/10836/c4124389-a341-7337-33a0-f807f5239a6f.png)

6.変更前
![SnapCrab_NoName_2015-11-16_16-27-2_No-00.png](https://qiita-image-store.s3.amazonaws.com/0/10836/33285eda-37e5-7753-76b0-b6b7103da34c.png)

7.以下のサイトの記事に従い書き換える
http://www.atmarkit.co.jp/fdotnet/dotnettips/958uacmanifest/uacmanifest.html
8.変更後
![SnapCrab_NoName_2015-11-16_16-30-54_No-00.png](https://qiita-image-store.s3.amazonaws.com/0/10836/35aae428-eadf-2ae4-1dae-b47bdaa70d28.png)

やはりエラーがでる。

仕方がないので、Try catchをコメントアウトする。
例外発生時の変数の内容を見ると、初期化コマンドでこけているらしい。
![SnapCrab_NoName_2015-11-16_17-18-29_No-00.png](https://qiita-image-store.s3.amazonaws.com/0/10836/ffc28b61-a78d-138b-17f7-9af79c10c450.png)

日本語説明書によれば、GPIBとUSBとLANでサンプルソフトの「VISAアドレス」に入れる初期化コマンドが異なるらしい。
後、34411AのＩ／ＯもUSBに切り替えておかなくてはいけない。
そう思って以下でユーザーマニュアルを参照してみたが、
http://cp.literature.agilent.com/litweb/pdf/34410-90413.pdf
最初にＵＳＢを挿すと34411Aの全面に「Remote」の表示が出るので、34411Aの「local」、「shift」→「Utility」、「右三角」で「REMOTEI/O」を画面に表示させ、「Enter」、「右三角」「右三角」「右三角」、「Enter」、「Enter」でUSB-IDの表示まで行くが、その後何のキーを押しても「No change selected」になってUSBに切り替わらない・・・

#諦めてKeysightのサポートセンターに電話
諦めてKeysightのサポートセンターに電話しました。

分かったことは、
1.IO Libraries Suiteをインストールしたときに、「Keysight Connection Expert」というアプリがインストールされるので、それを起動する。
2.「34411A」が表示されれば接続しているので、右側の「VISA Address」をコピーする 
　例　USB0::0x0957::0x0A07::MY53001685::0::INSTR
3.サンプルプログラムを起動して「3441xA VISAアドレス」に上記のコピーした文字列を入れる。
4.サンプルプログラムの「測定回数」に１０とか好きな数を入れる。
5.サンプルプログラムの「マルチメータを設定する」ボタンをクリック
6.サンプルプログラムの「データロギング」ボタンが有効になるのでクリック
7.「測定回数」分測定を行いログに保存される。

と動くことを確認しました。

「Keysight Connection Expert」は測定機に「VISA Aliases」というエイリアス名をつけることができます。
USB接続時のVISAアドレスはその測定機固有の値になるので、校正などで測定機を入れ替えるとVISAアドレスも書き換えないといけません。
エイリアス名をつけておくと、測定機を変えた時もエイリアス名を同じ名前で付けることでプログラム側の設定を変えずに済むということでした。


簡単につながると思ったら意外とはまったorz