• 検索結果がありません。

高機能版ActiveXコントロール編

ドキュメント内 TUT-0027 (ページ 48-56)

第 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

マスタ/スレーブ※ マスタ マイアドレス

20

2次アドレス

なし

データ入出力方式

FIFO

データ転送モード 同期 送受信タイムアウト

30

STB応答時間 30

送信バッファサイズ

65536

受信バッファサイズ

65536

送信デリミタ※

CRLF+EOI

受信デリミタ※

CRLF+EOI

NRFD信号ライン待ち設定

有効

※ 「マスタ/スレーブ」

,「送信デリミタ」,「受信デリミタ」の設定はコントロールパネルより行

います。「送信デリミタ」,「受信デリミタ」は使用する機器に合わせたものに設定してくだ

さい。

プロパティページ下部に接続する機器を設定し「追加」ボタンをクリックしてください。

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 Then

MsgBox "IFC

送出に失敗しました", , "gpiHost.SetIfc"

Unload Me '

フォームを閉じる

End If

' REN

設定を行います

If gpiHost.SetRen <> 0 Then

MsgBox "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 If

End 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 If

End 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 '

フォームを閉じる

Else

txtRecvData = 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

以上でActiveXコントロール編に記載したプログラムと同等の機能を持つ高機能版ActiveXコント

ロールを使用したプログラムは完成です。

ドキュメント内 TUT-0027 (ページ 48-56)

関連したドキュメント