この種のシステム開発の経験者です。
以下はNI社のGPIB-USBを使ってExcelのVBAからGPIB機器を制御する場合の手順です。
(1)先ず付属のCD-ROMからGPIB-USBのドライバをdefault設定でinstallします。移植性を考えて常にdefault設定にしときます。
これでGPIB-USBをUSBに差し込むと自動認識されるようになりWindowsからGPIBが制御可能となります。
(2)ExceのVBAに標準モジュール、即ち、どこからでも呼び出せるサブルーチンとしてGPIB制御関数を組み込みます。
NI社のVB用の関数は、CD-ROMをdefaultで導入すると、
C:\Program Files\National Instruments\NI-488.2\Languages\Visual Basic
にVB用関数が入るので、この関数を以下のように読み込みます。
Excelを起動後、ツール->マクロ->VisualBasicEditor でVBEditorを開く
VBEditorで、ファイル->ファイルのインポート から上記のNationalInsturumentのFolderから
NIGLOBAL
VBIB32
の2つをインポートします。これらはVBAProjectの標準モジュールに入ります。
これでGPIBの命令が使用可能になります。
(3) VBAでプログラムを作成します。
VBAはVB6のサブセットです。Form1上にCommand1ボタンを配置した状態だと以下の
以下はコマンドボタンに命令を詰め込んだ例です。
Private Sub CommandButton1_Click()
'計測器の認識
Agilent = ildev(0, 11, 0, T2s, 1, &H140A) 'AgilentのGPIBアドレスを11としてます
'初期化
wtbuf$ = "*RST": ilwrt Agilent, wtbuf$, Len(wtbuf$)
wtbuf$ = "*CLS": ilwrt Agilent, wtbuf$, Len(wtbuf$)
というように命令を送ります
上記の形式でデータ転送命令を送って計測器からデータを読み込む場合は
rdbuf$ = Space(100): ilrd Agilent, rdbuf$, 100
でrdbuf$に文字列として読み込めます。
計測器の認識は1回実行すればよいのでVB6だとForm1_Loadに設定してますが、ExcelのVBAのFormにはLoadが無いので、計測器認識を行うボタンと測定ボタンを分けたほうが良いでしょう。
ちなみに、この例でのはGPIBの番号を格納したローカル変数で、このサブルーチンのみ有効です。ボタンで認識と測定を分ける場合、グローバル変数にしておいてください。
この場合、プログラムの先頭、サブルーチンの外に
Dim Agilent As Integer
と記述すると、認識ボタンで変数Agilentにカード番号が書き込まれ測定ボタンのGPIB制御命令で使えます。
読み込んだ文字列はheaderのような余分な情報が添付されているので必要な情報のみtrimやmid関数で切り出します。
これをファイルに書き込むか、ExcelのCellに表示することになります。この辺は市販本にも多く記述されているので自分で苦労してください。
(4)計測器の制御ではタイマーがないと不便なので以下からフリーのタイマーのactivexを組み込めます。
http://kasayan86.hp.infoseek.co.jp/html/activex.htm
これはVB6のタイマー関数と同じように使えます。
健闘を祈ります。
お礼
解答ありがとうございます。 いくつか質問があるのですが、 まずGPIBカードを使用しリモート制御をかけたいのですが、 そちらに関しましてはどういったプログラムを組めばよろしいでしょうか (2)に関しまして。 ドライバ等のインストールは個人ではインストールさせていただけない状況になっておりまして、ひとまずプログラムを先に組もうと思っているのですが、ドライバをインストールしてからのほうがよろしいでしょうか? (3)に関しまして。 (1)*RSTや、*CLSににはどの様な意味合いがあるのですか? (2)Dimで宣言するのはAgilentのみでよろしいのでしょうか。 アドレスなどの宣言も必要でしょうか? (3)データを読み込んだあとは、どの様な処理でCellに表示させればよろしいでしょうか? 今のところは以上です、よろしくお願いいたします。