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