第 4 章 チュートリアル 25
4.3 高機能版ActiveXコントロール編
高機能版ActiveXコントロールは、高機能版DLLで提供されているほぼ全てのスペックが、メソッ ドおよびプロパティで提供されます。
高機能版 ActiveX コントロールの特長
高機能版ActiveXコントロールには以下の特長があります。
SRQイベントのサポート
SRQの発生をポーリングする必要がありません。
GP-IB機器からサービス要求(SRQ)が発生した場合の処理を、SRQイベントで記述できます。
複数機器の接続サポート
高機能版では最大
32台(2次アドレス機器を含む)をサポートしています。スレーブモードのサポート
GP-IBボード間の通信が行うことができます。
非同期データ転送のサポート
データ転送完了をポーリングする必要がありません。データ送受信メソッドの実行後、直ちに処 理を抜けられます。送受信完了後の処理は、送受信完了イベントで記述できます。
プロパティページのサポート
プロパティの変更を視覚的に行うことができます。
GP-IB機器を名前で扱える
高機能版では接続機器を名前で指定できます。機器アドレスを隠蔽しているため、デザイン時以 外は機器アドレスを意識する必要がありません。
ボードがインストールされていなくてもデザインが可能
高機能版では、ボードが挿入されていなくてもデザインが可能になります。
バスコマンドの送出
直接バスコマンドが送出できます。
通常は、メソッドで全バスコマンドをサポートしていますが、それで対応できない測定機に対し
て、直接バスコマンドでの制御が行うことができます。
TUT-0027
パラレルポーリングのサポート
サービス要求(SRQ)発生時に、シリアルポーリングが各装置を順番にポーリングしていくのに対し て、8台までの装置を同時にポーリングできます。
ローカル/リモートモードのサポート
計測機器のパネルからの制御を、有効/禁止にできます。
パスコントロールのサポート
アクティブコントローラを、他の装置に譲渡できます。
システムコントロールの要求/解除
システムコントローラを、他の装置に譲渡できます。
事象変化の検出
トーカ/リスナ/デバイストリガ/デバイスクリアの状態検出が行うことができます。
以上が、高機能版ActiveXコントロールの特長です。
では、この高機能版ActiveXコントロールを使用したプログラムの作成を行ってみましょう。
Step1. 基本フォーム作成
では、これから作成するプログラムの元となる画面の作成を行います。
1. Visual Basicを起動し新しい標準 EXE プロジェクトを作成します。
2.
プロジェクトにGP-IB ActiveXコントロール(高機能版)を追加します。
・メニューバーより「プロジェクト(P)」−「コンポーネント(O)…」を選択します。
・コントロール一覧より「Interface BPA-0515 GP-IB Advanced Control 1.1」のチェックボックスを チェックし「適用」ボタンをクリックします。
Interface BPA-0515 GP-IB Advanced Control 1.1 と表示されています。
3.
ツールボックスにGP-IB ActiveXコントロール(高機能版) アイコンが現れます。
GP-IB ActiveXコントロール(高機能版)
アイコンが追加されます。
(拡大図)
4.
既定のフォームの名前を“frmGpibHost“に変更し、フォームのタイトルを“GP-IBホスト”に変更 します。
5. GP-IBコントロールをフォーム上に描画し、名前を“gpiHost“に変更します。
TUT-0027
Step2. 環境設定
ここでは、高機能版ActiveXコントロールのプロパティページにプログラムを実行させる環境を定 義して行きます。実行環境は下図に示すとおりです。
1.
高機能版ActiveXコントロールのプロパティページを開きます。
ここをクリックすると
プロパティページが開きます。
2.
「ボード初期設定」タブをクリックしボードの設定を行います。
ボード番号
0マスタ/スレーブ※ マスタ マイアドレス
202次アドレス
なし
データ入出力方式
FIFOデータ転送モード 同期 送受信タイムアウト
30STB応答時間 30
送信バッファサイズ
65536受信バッファサイズ
65536送信デリミタ※
CRLF+EOI受信デリミタ※
CRLF+EOINRFD信号ライン待ち設定
有効
※ 「マスタ/スレーブ」
,「送信デリミタ」,「受信デリミタ」の設定はコントロールパネルより行います。「送信デリミタ」,「受信デリミタ」は使用する機器に合わせたものに設定してくだ
さい。
プロパティページ下部に接続する機器を設定し「追加」ボタンをクリックしてください。
Step3.初期化処理
次に初期化処理を行うプログラムの作成を行います。
1.
フォームのLoadイベントに初期化処理コードを追加します。
(Form
の
Loadイベントのコード
)Private Sub Form_Load()
Dim lRet As Long
'ボードのオープンを行います If gpiHost.Open <> 0 Then
MsgBox "初期化に失敗しました", , "gpiHost.Open"
Unload Me '
フォームを閉じる
End If
'これより接続機器の初期化を行います。
' IFC
送出を行います
If gpiHost.SetIfc <> 0 ThenMsgBox "IFC
送出に失敗しました", , "gpiHost.SetIfc"
Unload Me '
フォームを閉じる
End If' REN
設定を行います
If gpiHost.SetRen <> 0 ThenMsgBox "REN
設定に失敗しました", , "gpiHost.SetRen"
Unload Me '
フォームを閉じる
End If'
デバイスクリアを行います
If gpiHost.ExecSelectDevClr("HP34401A") <> 0 Then
MsgBox "デバイスクリアに失敗しました", , "gpiHost.ExecDeviceClear"
Unload Me '
フォームを閉じる
End If
'
デバイストリガを行います
'If gpiHost.ExecDeviceTrigger("HP34401A") <> 0 Then
' MsgBox "デバイストリガに失敗しました", , "gpiHost.ExecDeviceTrigger"
' Unload Me '
フォームを閉じる
'End IfEnd Sub
TUT-0027
Step4. 文字列送信
では、次にデータ送信を行うプログラムを作成します。
1.
フォームにテキストボックス(TextBox)コントロールを追加します。コントロールは
“txtSendData”と名付けます。
2.
フォーム上にコマンドボタン(CommandButton)コントロールを描画し、“cmdSend” と名付けコ マンドボタンコントロールのタイトルを "送信" に変更します。
3.
作成したコマンドボタン(cmdSend)をダブルクリックし編集ウィンドウを開き以下のコードを 記述します。
(
コマンドボタン
(cmdSend)の
Clickイベントのコード
) Private Sub cmdSend_Click()If gpiHost.MasterSend("HP34401A", txtSendData.Text) <> 0 Then MsgBox "データ送信に失敗しました", , "gpiHost.MasterSend"
Unload Me '
フォームを閉じる
End IfEnd Sub
Step5. 文字列受信
では、次にデータ受信を行うプログラムを作成します。
1.
フ ォ ー ム に テ キ ス ト ボ ッ ク ス(TextBox) コ ン ト ロ ー ル を 追 加 し ま す 。 コ ン ト ロ ー ル は
txtRecvData
と名付けます。
2.
フォーム上にコマンドボタン(CommandButton)コントロールを描画し、
cmdRecvと名付け コマンドボタンコントロールのタイトルを 受信 に変更します。
3.
作成したコマンドボタン(cmdRecv)をダブルクリックし編集ウィンドウを開き以下のコードを 記述します。
(
コマンドボタン
(cmdRecv)の
Clickイベントのコード
) Private Sub cmdRecv_Click()
Dim RecvSize As Long 'データ受信を開始します。
ベントにコードを記述します。
(GP-IB ActiveX
コントロール
(gpiHost)の
ReceiveFinishイベントのコード
) Private Sub gpiHost_ReceiveFinish(ByVal bytesTotal As Long)
Dim RecvData As String
If gpiHost.GetData(RecvData) <> 0 Then
MsgBox "受信データ取得に失敗しました", , "gpiHost. ReceiveFinish"
Unload Me '
フォームを閉じる
ElsetxtRecvData = RecvData End If
End Sub
Step6. SRQ の監視 ( 割り込みイベント処理 )
高機能版ActiveXコントロールでは、SRQ信号の検知をイベントとしてとらえることが可能です。
ここではその方法を記載します。アプリケーションがSRQ信号を検知すると所定のプロシージャ を実行することが可能になります。
まずシリアル・ポーリングを行うプログラムの作成を行います。
1.
フォームにテキストボックス(TextBox)コントロールを追加します。コントロールは txtStatus と名付けます。
2.
フォーム上にコマンド ボタン(CommandButton)コントロールを描画し、
cmdSpollと名付け コマンドボタンコントロールのタイトルを
SP実行 に変更します。3.
作成したコマンドボタン(cmdSpoll)をダブルクリックし編集ウィンドウを開き以下のコードを 記述します。
(
コマンドボタン
(cmdSpoll)の
Clickイベントのコード
) Private Sub cmdSpoll_Click()
Dim GetState(2) As Long
If gpiHost.CheckSrq Then
If gpiHost.ExecSpoll("HP34401A", GetState(0)) <> 0 Then 'シリアルポールを実行します MsgBox "シリアルポールに失敗しました", , "gpiHost. ExecSpoll"
Unload Me '
フォームを閉じる
Else'取得したステータスバイトを16進数でtxtStatus
という名前の
'テキストボックスの Textプロパティにそのデータを設定します。
txtStatus.Text = "&h" & Hex(GetState(0)) End If
Else
txtStatus.Text = "SRQ
信号は無効です"
End If
cmdSpoll.Enabled = False
End Sub
TUT-0027
4. GP-IB ActiveXコントロール(gpiHost)をダブルクリックし編集ウィンドウを開きSrgEventイベン
トにコードを記述します。
(GP-IB ActiveXコントロール(gpiHost)のSqlEventイベントのコード) Private Sub gpiHost_SrqEvent()
cmdSpoll.Enabled = True
End Sub