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

GPIB 機器制御 (高機能版 DLL を使用した制御)

ドキュメント内 Microsoft Visual Studio .NET移行ガイド (ページ 56-62)

2.2  サンプルプログラム

2.2.5  GPIB 機器制御 (高機能版 DLL を使用した制御)

Visual Basic 6.0からVisual Basic .NETへの主な相違点は以下の通りです。

表 2-15 Visual Basic 6.0とVisual Basic .NETの主な相違点 Visual Basic 6.0 Visual Basic .NET

変数、関数 SetPrm、RecvBuffer、PciGpibExMastSendData関数、

PciGpibExMastRecvData関数。

変更点 固定長文字列を文字列型に変更。

送信処理変更。

受信処理変更。

詳細情報 なし ファイル名 Ctrl_B.bas

CtrlSendForm.frm CtrlRecvForm.frm

Ctrl_B.vb CtrlSendForm.vb CtrlRecvForm.vb ソースリスト List2-83,2-85,2-87 List2-84,2-86,2-88 1. Visual Studio .NETを起動します。

2. ファイル-開く-プロジェクトを選択し、プロジェクトファイルを開きます。

3. ソリューションエクスプローラから表 2-に示したファイル名を開きます。

4. 表2-15に示した各ソースリストにVisual Basic 6.0とVisual Basic .NETの違いを示 します。太字で記載した部分が変更点です。

固定長文字列を文字列String型に変更します。Visual Basic .NETは固定長文字列を サポートしません。

List 2-83 Visual Basic 6.0のCtrl_B.bas内の固定長文字列定義 Public SetPrm As String * 128 ' Parameter

Public RecvBuffer As String * 32 ' Receive buffer

List 2-84 Visual Basic .NETのCtrl_B.vb内の文字列定義 Public SetPrm As String ' Parameter

Public RecvBuffer As String ' Receive buffer

送信処理を次のように変更します。

送信データをString型のままPciGpibExMastSendData関数に指定します。

また、送信データを、コントロール配列で定義されたテキストボックスから取得 する処理を変更します。Visual Basic .NETは、コントロール配列をサポートしませ ん。

そのため、例では、TextBox型の配列TextBoxTblに、フォーム上の全てのTextBox コントロールを定義して、Forループ処理内で順番に処理しています。

List 2-85 Visual Basic 6.0のCtrlSendForm.frm内の送信処理 Private Sub CmdSend_Click()

Dim nRet As Long Dim szData As String Dim nLen As Long Dim i As Long

' Configures the device address table.

DevAdrsTbl(0) = DevAdrs DevAdrsTbl(1) = -1

' Sends data to specified device.

For i = 1 To 5

szData = TxtSendData(i).Text

szData = StrConv(szData, vbFromUnicode) nLen = LenB(szData)

If nLen = 0 Then Exit For

szData = StrConv(szData, vbUnicode)

nRet = PciGpibExMastSendData(nBoardNo, DevAdrsTbl(0), nLen, szData, 0) If nRet Then Exit For

Next

Call DsplyErrMessage(nRet) End Sub

List 2-86 Visual Basic .NETのCtrlSendForm.vb内の送信処理

Private Sub CmdSend_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles CmdSend.Click

Dim nRet As Integer Dim szData As String Dim nLen As Integer Dim i As Integer

Dim TextBoxTbl() As TextBox = New TextBox() {TextBox1, TextBox2, TextBox3, TextBox4, TextBox5}

' Configures the device address table.

DevAdrsTbl(0) = DevAdrs DevAdrsTbl(1) = -1

' Sends data to specified device.

For i = 0 To (TextBoxTbl.Length - 1) szData = TextBoxTbl(i).Text nLen = szData.Length If nLen <> 0 Then

nRet = PciGpibExMastSendData(nBoardNo, DevAdrsTbl, nLen, szData, 0) If nRet Then

Exit For End If End If Next

Call DsplyErrMessage(nRet) End Sub

受信処理を次のように変更します。

受信データを格納するString型の変数をPciGpibExMastRecvData関数に指定するよう に変更します。

PciGpibExMastRecvData関数の第2パラメータには、最大受信データ長を格納した変数 を指定します。

PciGpibExMastRecvData関数の第4パラメータ(受信データ格納先変数)にString型を指 定した場合、第2パラメータに指定されたデータ長分のByte配列を用意し、データ取得 後にString型へ変換されます。この処理の詳細については、GPC4301Ex.vb内の

PciGpibExMastRecvData関数の定義をご確認ください。

List 2-87 Visual Basic 6.0のCtrlRecvForm.frm内の受信処理 Private Sub CmdRecv_Click()

Dim nRet As Long Dim nLen As Long

' Configures the device address table.

DevAdrsTbl(0) = DevAdrs DevAdrsTbl(1) = -1

' Sends data to specified device.

Dim RecvLen As Long RecvLen = 64

nRet = PciGpibExMastRecvData(nBoardNo, DevAdrsTbl(0), RecvLen, RecvBuffer, 0) If nRet Then

Call DsplyErrMessage(nRet) Unload CtrlRecvForm End If

Call DsplyErrMessage(nRet)

LblRecvData.Caption = Left(RecvBuffer, RecvLen) End Sub

List 2-88 Visual Basic .NETのCtrlRecvForm.vb内の受信処理

Private Sub CmdRecv_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles CmdRecv.Click

Dim nRet As Integer Dim nLen As Integer

' Configures the device address table.

DevAdrsTbl(0) = DevAdrs DevAdrsTbl(1) = -1

' Sends data to specified device.

Dim RecvLen As Integer RecvLen = 64

nRet = PciGpibExMastRecvData(nBoardNo, DevAdrsTbl, RecvLen, RecvBuffer, 0) If nRet Then

Call DsplyErrMessage(nRet) CtrlRecvForm.DefInstance.Close() End If

Call DsplyErrMessage(nRet) LblRecvData.Text = RecvBuffer End Sub

Visual Basic 6.0とVisual Basic .NETの詳細なソースコードの違いは、各サンプルプログ ラムを比較しご確認ください。

サンプルプログラムCtrl_B以外のGPIBボード用ソフトウェアライブラリGPC-4301の

Visual Basic 6.0とVisual Basic .NETの詳細なソースコードの違いは、各サンプルプログ ラムを比較しご確認ください。

各サンプルプログラムのインストール先は次の通りです。

Visual Basic 6.0 / YOKOGAWA7561, HP3458A制御サンプル ソフトウェア GPC-4301

プロジェクト名 Device_B.vbp 格納先フォルダ <インストール先>

¥Interface¥GPC4301¥samples¥vb¥Device_B Visual Basic .NET / YOKOGAWA7561, HP3458A制御サンプル ソフトウェア BPC-0818

プロジェクト名 Device_B.vbproj 格納先フォルダ <インストール先>

¥Interface¥BPC0818¥GPC4301¥samples_adv¥vb¥Device_B Visual Basic 6.0 / バイナリデータ送受信

ソフトウェア GPC-4301 プロジェクト名 Binary_B.vbp 格納先フォルダ <インストール先>

¥Interface¥GPC4301¥samples¥vb¥ Binary_B Visual Basic .NET / バイナリデータ送受信

ソフトウェア BPC-0818 プロジェクト名 Binary_B.vbproj 格納先フォルダ <インストール先>

¥Interface¥BPC0818¥GPC4301¥samples_adv¥vb¥Binary_B Visual Basic 6.0 / 非同期処理

ソフトウェア GPC-4301 プロジェクト名 Async_B.vbp 格納先フォルダ <インストール先>

¥Interface¥GPC4301¥samples¥vb¥Async_B Visual Basic .NET /非同期処理

ソフトウェア BPC-0818

ドキュメント内 Microsoft Visual Studio .NET移行ガイド (ページ 56-62)