付録
ARB:DATAのサンプル
Visual Basic 2013でARB:DATAを設定するサンプルプログラムです。
電圧、電流のペアが(0 V、0 A)、(1 V、0.1 A)、(808 V、0.1 A)になるプログラミング例を掲載します。最初の電圧と電流は「0V, 0A」、最後の電圧は「808V」で固定です。それ以外の値を記述するとエラーが返ります。
ARB:DATAを設定する
Private Sub CommandArbSet_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CommandArbSet.Click
'ARBテーブルに設定したいデータ
Dim Dbl_Volt() As Double = {0, 1, 808}
Dim Dbl_Curr() As Double = {0, 0.1, 0.1}
'単位をμオーダーに変換
Dim Int_Data(5) As Integer
Dim Int_a As Integer = 0
For Int_b As Integer = 0 To 2
Int_Data(Int_a) = CInt(Dbl_Volt(Int_b) * 1000000)
Int_a = Int_a + 1
Int_Data(Int_a) = CInt(Dbl_Curr(Int_b) * 1000000)
Int_a = Int_a + 1
Next
Dim Byte_Data(41) As Byte
Dim Byte_Comm() As Byte = System.Text.Encoding.ASCII.GetBytes("ARB:DATA #40024") 'コマンドとLENGTH部分をバイト型に変換
Dim Int_Count As Integer = 0
For Int_Count = 0 To 14
Byte_Data(Int_Count) = Byte_Comm(Int_Count) '送信するバイト配列の頭に入れる
Next
Dim Byte_VoltCurr(4) As Byte
For Int_m As Integer = 0 To 5
Byte_VoltCurr = BitConverter.GetBytes(Int_Data(Int_m)) 'ARBテーブルに設定したいデータを順番にバイト型に変換する
For Int_n As Integer = 0 To 3
Byte_Data(Int_Count) = Byte_VoltCurr(Int_n) '送信するバイト配列に変換したデータを順番に埋めていく
Int_Count = Int_Count + 1
Next
Next
Byte_Data(Int_Count + 1) = CByte(&HA) ' バイト配列の最後にラインフィードを入れる
msg.Write(Byte_Data, 41) 'PLZ12005WHに書き込む
msg.WriteString("ARB:APPL" & vbLf) 'ARBデータを反映させる
End Sub
ARB:DATAを問い合わせる
Dim rm As IResourceManager3 = New ResourceManager()
Dim msg As IMessage
Dim seri As ISerial
Private Sub ARB_DATA_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
RichText.Clear() 'ARBテーブルの値を表示するRichTextBoxの初期化
msg.WriteString("ARB:COUN?" & vbLf) 'ARBテーブルのデータ対の数を調べる
Dim Int_ArbCoun As Integer = CInt(msg.ReadString(32))
Dim Int_ByteLength As Integer = Int_ArbCoun * 8 + 7 '受信する総Byte数を計算する
msg.TerminationCharacterEnabled = False 'ターミネーターを無効にする
seri.EndIn = SerialEndConst.ASRL_END_NONE '232Cを使用する場合はこれも設定する
msg.WriteString("ARB:DATA?" & vbLf) 'PLZ12005WHにクエリコマンドを書き込む
Dim Byte_ArbRead() As Byte = msg.Read(Int_ByteLength) 'PLZ12005WHからレスポンスを読み取る
Dim Int_Volt(Int_ArbCoun) As Integer '<Length>の値からデータ数を計算し箱を用意する
Dim Int_Curr(Int_ArbCoun) As Integer
Dim Dbl_Volt(Int_ArbCoun) As Double
Dim Dbl_Curr(Int_ArbCoun) As Double
Dim Int_Count As Integer = 6
For Int_a = 0 To Int_ArbCoun - 1
Int_Volt(Int_a) = BitConverter.ToInt32(Byte_ArbRead, Int_Count) '頭から順番にバイト型のデータを整数に変換
Dbl_Volt(Int_a) = Int_Volt(Int_a) / 1000000 '単位をμVオーダーからVオーダーに変換
Int_Count = Int_Count + 4
Int_Curr(Int_a) = BitConverter.ToInt32(Byte_ArbRead, Int_Count) '頭から順番にバイト型のデータを整数に変換
Dbl_Curr(Int_a) = Int_Curr(Int_a) / 1000000 '単位をμAオーダーからAオーダーに変換
Int_Count = Int_Count + 4
RichText.Text = RichText.Text & CStr(Dbl_Volt(Int_a)) & " , " & CStr(Dbl_Curr(Int_a)) & vbCrLf 'ARBデータを電圧電流のペアで記述
Next
msg.TerminationCharacterEnabled = True 'ターミネーターを有効に戻しておく
seri.EndIn = SerialEndConst.ASRL_END_TERMCHAR 'デフォルト値に戻しておく
End Sub
プログラムの実行結果は、下記のようになります。

関連情報