第 3 章 サンプルプログラム


3.1 RS-232C Visual Basicサンプルプログラム

以下のサンプルプログラムは、Visual Basic Professional Edition 以上に付属のMSComm コントロ
ールを用いて作成しました。

プログラムを実行するには、次のことをする必要があります。
(1)Visual Basic メニューの、プロジェクト−コンポーネントを開き、Comm Control をチェック
してOKボタンを押して下さい。MSComm コントロールが登録されます。(電話のアイコン)
(2)フォームに、テキストボックス、MSComm コントロール、コマンドボタンを貼り付けて下さい。
(3)テキストボックス Text1 のプロパティウインドウの Multiline を True にして下さい。
(4)コマンドボタンをダブルクリックすると、コードの入力状態になりますので、下記のプログラ
ムを入力して下さい。


以下のサンプルプログラムで$の付く変数は、文字列型です。

[例1]セットコマンドの使用法
Private Sub Sample1_Click()
'*******************************************************************************
' RS232C SAMPLE PROGRAM NO.1
' セットコマンドの使用法
'
' コマンドリストの<使用可能条件>を満足している状態において<コマンド>の書式通り
' に送信します。
'*******************************************************************************

deli$ = Chr$(13) & Chr$(10) 'デリミタ定義

MSComm1.PortOpen = True 'ポートオープン

MSComm1.Output = ":TDIV 1.E-3" & deli$ 'TIME/DIV 1msに設定
MSComm1.Output = ":SHOT 30" & deli$ '記録長を30DIVに設定

MSComm1.Output = ":TGSO OR" & deli$ 'トリガソース OR
MSComm1.Output = ":TGKD CH1,LEVE" & deli$ 'レベルトリガ CH1
MSComm1.Output = ":PRTG 5" & deli$ 'プリトリガ 5%
MSComm1.Output = ":TGLV CH1,0" & deli$ 'トリガレベル 0V
MSComm1.Output = ":TGSL CH1,UP" & deli$ 'トリガスロープ UP
MSComm1.Output = ":TGKD CH2,OFF" & deli$ 'CH2 OFF

MSComm1.Output = ":START" & deli$ '実行処理

MSComm1.PortOpen = False 'クローズ

End Sub

[例2]クエリの使用法
Private Sub Sample2_Click()
'*******************************************************************************
' RS232C SAMPLE PROGRAM NO.2
' クエリの使用法
'
' ・コマンドリストの<使用可能条件>を満足している状態において<コマンド>の書式通
' りに送信して、出力準備させます。
' ・<クエリ>によって出力準備されるデータは、コマンドリストの<応答>記載されている
' 形式となります。
'*******************************************************************************

deli$ = Chr$(13) & Chr$(10) 'デリミタ定義

MSComm1.PortOpen = True 'オープン

MSComm1.Output = ":TIME?" & deli$ '現在時刻を問い合わせる
Do
	tm$ = tm$ & MSComm1.Input '問い合わせ結果を変数にセット
Loop Until InStr(1, tm$, Chr$(10))

Text1.Text = "TIME = " & tm$

MSComm1.PortOpen = False 'クローズ

End Sub

[例3]ストレージデータの出力法
Private Sub Sample3_Click()
'*******************************************************************************
' RS232C SAMPLE PROGRAM NO.3
' ストレージデータの出力法
'
' ・:MAXP?クエリによって、ストレージデータが入出力可能であるか調べます。
' ストレージされていない状態では、MAXP?による出力値が0となり、データの出力はできません。
' ・出力したいデータのチャネルとポイントを:POINTコマンドによって指定します。
' データを入出力すると自動的にポイントが移動していきます。連続したデータを取込
' む場合には、一度指定するだけで済みます。
' ・ASCII形式で取込む場合は、:ADATA?クエリ、電圧値形式の場合は:VDATA?クエリを使用します。
' まとめて出力できるデータ数は:ADATA?,VDATA?ともに1〜最大記録長×100個ですがバッファの
' 容量により、個数制限されます。
' ・より多くのデータをまとめて出力させるほど、処理全体の時間は短くなります。
' ・記録長10DIVでストレージされているデータのCH1のデータ1000個を取り込みます。
'*******************************************************************************

deli$ = Chr$(13) & Chr$(10) 'デリミタ定義
Dim d(1000) As Double

MSComm1.PortOpen = True 'オープン

MSComm1.Output = ":SHOT 10" & deli$ '記録長10DIVに設定
MSComm1.Output = ":TGMD SING" & deli$ 'トリガをSINGLEに設定
MSComm1.Output = ":START;*OPC;:STOP;*OPC?" & deli$ 'スタート処理

Do
    o$ = o$ & MSComm1.Input
Loop Until InStr(1, o$, Chr$(10))

MSComm1.Output = ":MAXP?" & deli$ 'ストレージデータ数を読み出す
Do
    mx$ = mx$ & MSComm1.Input
Loop Until InStr(1, mx$, Chr$(10))
If (Val(mx$) = 0) Then
    MSComm1.PortOpen = False
    Exit Sub
End If

MSComm1.Output = ":POINT CH1,0" & deli$ '出力データをCH1、ポイント0に設定
For i = 1 To 1000
    vd$ = ""
    MSComm1.Output = ":VDATA? 1" & deli$
    Do
        vd$ = vd$ & MSComm1.Input
    Loop Until InStr(1, vd$, Chr$(10))
    d(i) = Val(vd$)
Next

For i = 1 To 1000 'データ表示
    Text1.SelText = Format(d(i), "Scientific") & deli$
Next

MSComm1.PortOpen = False 'クローズ

End Sub

[例4]ストレージデータの入力法
Private Sub Sample4_Click()
'*******************************************************************************
' RS232C SAMPLE PROGRAM NO.4
' ストレージデータの入力法
'
' ・:PREPAREによって、ストレージメモリ準備をします。
' ・入力するデータのチャネルとポイントを:POINTコマンドによって指定します。
' 指定後、:ADATAコマンドによって入力します。
'*******************************************************************************

deli$ = Chr$(13) & Chr$(10) 'デリミタ定義

MSComm1.PortOpen = True 'オープン

MSComm1.Output = ":SHOT 10" & deli$ '記録長10DIVに設定
MSComm1.Output = ":PREPARE;*OPC?" & deli$ 'ストレージメモリの準備
Do
	o$ = MSComm1.Input
Loop Until InStr(1, o$, Chr$(10))
MSComm1.Output = ":POINT CH1,0" & deli$ '入力データをCH1、ポイント0に設定

For i = 0 To 1000 'SIN波のセット
	MSComm1.Output = ":ADATA " & Str$(Int(1600 * Sin(3.14 * i / 500))) & deli$
Next

MSComm1.PortOpen = False 'クローズ

End Sub

[例5]ストレージされているデータをAドライブにSAVEする。
Private Sub Sample5_Click()
'*******************************************************************************
' RS232C SAMPLE PROGRAM NO.5
' ストレージされているデータをpcにSAVEする。
'*******************************************************************************

deli$ = Chr$(13) & Chr$(10) 'デリミタ定義
na$ = "a:\sample.dat" 'Aドライブとファイル名を設定

MSComm1.PortOpen = True 'オープン

MSComm1.Output = ":MAXP?" & deli$ 'ストレージされているデータ数を読み出す
Do
	mx$ = mx$ & MSComm1.Input
Loop Until InStr(1, mx$, Chr$(10))
If (Val(mx$) = 0) Then
	MSComm1.PortOpen = False
	Exit Sub
End If

Open na$ For Output As #1
MSComm1.Output = ":POINT CH1,0" & deli$ 'ストレージデータの出力ポイントを設定
Print #1, 10
For i = 0 To 10
	MSComm1.Output = ":ADATA? 1" & deli$ 'ストレージデータを読み出す
	ad$ = ""
	Do
		ad$ = ad$ & MSComm1.Input
	Loop Until InStr(1, ad$, Chr$(10))
	Print #1, Val(ad$) 'ファイルへ出力
Next

Close #1
MSComm1.PortOpen = False 'クローズ

End Sub


[例6]SAMPLE PROGRAM NO.5で保存したファイルからデータを取出し、本体へセットする。
Private Sub Sample6_Click()
'*******************************************************************************
' RS232C SAMPLE PROGRAM NO.6
' SAMPLE PROGRAM NO.5で保存したファイルからデータを取出し、本体へセットする。
'*******************************************************************************

deli$ = Chr$(13) & Chr$(10) 'デリミタ定義
na$ = "a:\sample.dat" 'Aドライブとファイル名を指定

MSComm1.PortOpen = True 'オープン

MSComm1.Output = ":PREPARE;*OPC?" & deli$ 'ストレージデータの準備
Do
	o$ = MSComm1.Input
Loop Until InStr(1, o$, Chr$(10))

Open na$ For Input As #1
MSComm1.Output = ":POINT CH1,0" & deli$ 'ストレージデータの入力ポイントを設定
Line Input #1, mx
For i = 0 To mx
	Line Input #1, dt 'ファイルからデータを読み込む
	MSComm1.Output = ":ADATA " & Str$(dt) & deli$ 'ストレージメモリにデータを書込む
Next

Close #1
MSComm1.PortOpen = False 'クローズ

End Sub
3.2 10BASE-T Visual Basicサンプルプログラム

注意:8730,8731,MR8730,MR8731を社内ネットワーク等に繋げる場合は、社内のネットワーク管理者に相談の
うえ8730,8731,MR8730,MR8731のIPアドレス等を設定して下さい。


ご使用のパソコンが、社内ネットワーク等に繋がっておらず、8730,8731,MR8730,MR8731とパソコンを1対1
で繋げる場合は、以下の例のようにIPアドレス等を設定して下さい。


*8730,8731,MR8730,MR8731をHUBに繋げる場合は、ストレートケーブルをご使用下さい。
*8730,8731,MR8730,MR8731をパソコンと1対1で繋げる場合は、ストレートケーブル+クロス変換コネクタ
(または、クロスケーブル)をご使用下さい。

*8730,8731,MR8730,MR8731のIPアドレス等の設定は、8730,8731,MR8730,MR8731取説を参照して下さい
*例えば、ご使用のパソコンの、サブネットマスクが255.255.255.0であった場合、
8730,8731,MR8730,MR8731のサブネットマスクも255.255.255.0とし、IPアドレスの左から1,2,3桁までをパソコンの
IPアドレスと同じにし、4桁目のみを違う値にすると通信ができます。


注意:下記のTCP/IPのプロパティの設定は、あくまでも説明用の例としての設定であり、
ご使用のパソコンが社内ネットワーク等に繋がっている場合は、ご使用のパソコンの
IPアドレス等の設定をむやみに変更すると、社内ネットワーク等に障害を及ぼす可能性が
ありますので、変更する場合はネットワーク管理者に相談のうえ設定して下さい。


ご使用のパソコンが、社内ネットワーク等に繋がっておらず、8730,8731,MR8730,MR8731とパソコンを1対1
で繋げる場合は、以下の例のようにIPアドレス等を設定して下さい。



以下のサンプルプログラムは、Visual Basicに付属のWinsock コントロールを用いて作成しました。

プログラムを実行するには、次のことをする必要があります。
(1)Visual Basic メニューの、プロジェクト−コンポーネントを開き、Winsock Control をチェック
してOKボタンを押して下さい。Winsock コントロールが登録されます。(ネットワークのアイコン)

(2)フォームに、Winsock コントロールを貼り付けて下さい。
(3)「IPアドレス」入力用のテキストボックスを、txtIPという名前で作成して下さい。
IPアドレスは、8730,8731,MR8730,MR8731の通信画面で設定してある値を入力します。
(4)「ポート番号」入力用のテキストボックスを、txtPortという名前で作成して下さい。
ポート番号は、8730,8731,MR8730,MR8731の通信画面で設定してある一番右のXにあたる桁を2にして入力します。
(5)「コマンド実行」用のボタンを、Command1という名前で作成して下さい。Command1_Click()関数に対応します。
(6)「接続」用のボタンを、Command2という名前で作成して下さい。Command2_Click()関数に対応します。
(7)「切断」用のボタンを、Command3という名前で作成して下さい。Command3_Click()関数に対応します。
(8)「Text1」結果出力用のテキストボックスを、Text1という名前で作成して下さい。
(9)「Text2」接続状態用のテキストボックスを、Text2という名前で作成して下さい。
(10)下記プログラムを入力して下さい。

(11)プログラムを実行して、「接続」ボタンを押すと、Command2_Click()に記述された処理が行われ、
Text2のボックスに「LAN接続完了」と表示されます。
「LAN接続待ち」と表示されたままでしたら、ケーブルの接続、IPアドレス、ポート番号等を確認して下さい。
(12)「コマンド実行」ボタンを押すと、Command1_Click()に記述された処理が行われます。
(13)最後に、「切断」ボタンを押すと、Command3_Click()に記述された処理が行われ、「LAN切断完了」
と表示されれば終わりです。


以下のサンプルプログラムで$の付く変数は、文字列型です。

[例1]セットコマンドの使用法

Dim MsgFlg As Integer
Dim MsgBuf As String

Private Sub Command1_Click()
'*******************************************************************************
' 10BASE-T(LAN) SAMPLE PROGRAM NO.1
' セットコマンドの使用法
'
' コマンドリストの<使用可能条件>を満足している状態において<コマンド>の書式通り
' に送信します。
'*******************************************************************************

deli$ = Chr$(13) & Chr$(10)                          'デリミタ定義

SendMsg ":TDIV 1.0E-3" & deli$      'TIME/DIV 1msに設定
SendMsg ":SHOT 30" & deli$          '記録長を10秒に設定

SendMsg ":TGSO OR" & deli$          'トリガソース OR
SendMsg ":TGKD CH1,LEVE" & deli$    'レベルトリガ CH1
SendMsg ":PRTG 5" & deli$           'プリトリガ 5秒
SendMsg ":TGLV CH1,0" & deli$       'トリガレベル 0V
SendMsg ":TGSL CH1,UP" & deli$      'トリガスロープ UP
SendMsg ":TGKD CH2,OFF" & deli$     'CH2 OFF

SendMsg ":START" & deli$            '実行処理

End Sub

Private Sub Command2_Click()

Winsock1.Protocol = sckTCPProtocol                   'プロトコル
Winsock1.RemoteHost = txtIP.Text                     'IPアドレス
Winsock1.RemotePort = Val(txtPort.Text)              'ポート番号

Winsock1.Connect                                     'ソケット接続

Do While (Winsock1.State <> sckConnected)
    If Winsock1.State = sckConnecting Then Text2.Text = "LAN接続待ち"
    DoEvents
Loop
    If Winsock1.State = sckConnected Then Text2.Text = "LAN接続完了"

End Sub

Private Sub Command3_Click()

Winsock1.Close                                       'ソケット切断

Do While (Winsock1.State <> sckClosed)
    If Winsock1.State = sckConnected Then Text2.Text = "LAN切断待ち"
    DoEvents
Loop
    If Winsock1.State = sckClosed Then Text2.Text = "LAN切断完了"

End Sub

Private Sub SendMsg(strMsg As String)

Winsock1.SendData strMsg                             'メッセージ送信

End Sub

Private Sub GetMsg(strMsg As String)

MsgFlg = 0                                           '受信完了フラグ初期化

Winsock1.SendData strMsg                             'メッセージ送信

Do While (MsgFlg = 0)                                '応答受信まで待つ
    DoEvents
Loop

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Winsock1.GetData MsgBuf, vbString                    '応答受信

MsgFlg = 1                                           '受信完了フラグセット

End Sub


[例2]クエリの使用法

Dim MsgFlg As Integer
Dim MsgBuf As String

Private Sub Command1_Click()
'*******************************************************************************
' 10BASE-T(LAN) SAMPLE PROGRAM NO.2
' クエリの使用法
'
' ・コマンドリストの<使用可能条件>を満足している状態において<コマンド>の書式通
' りに送信して、出力準備させます。
' ・<クエリ>によって出力準備されるデータは、コマンドリストの<応答>記載されている
' 形式となります。
'*******************************************************************************

deli$ = Chr$(13) & Chr$(10)                          'デリミタ定義

GetMsg ":TIME?" & deli$                       '現在時刻を問い合わせる
tm$ = MsgBuf

Text1.Text = "TIME = " & tm$

End Sub

Private Sub Command2_Click()

Winsock1.Protocol = sckTCPProtocol                   'プロトコル
Winsock1.RemoteHost = txtIP.Text                     'IPアドレス
Winsock1.RemotePort = Val(txtPort.Text)              'ポート番号

Winsock1.Connect                                     'ソケット接続

Do While (Winsock1.State <> sckConnected)
    If Winsock1.State = sckConnecting Then Text2.Text = "LAN接続待ち"
    DoEvents
Loop
    If Winsock1.State = sckConnected Then Text2.Text = "LAN接続完了"

End Sub

Private Sub Command3_Click()

Winsock1.Close                                       'ソケット切断

Do While (Winsock1.State <> sckClosed)
    If Winsock1.State = sckConnected Then Text2.Text = "LAN切断待ち"
    DoEvents
Loop
    If Winsock1.State = sckClosed Then Text2.Text = "LAN切断完了"

End Sub

Private Sub SendMsg(strMsg As String)

Winsock1.SendData strMsg                             'メッセージ送信

End Sub

Private Sub GetMsg(strMsg As String)

MsgFlg = 0                                           '受信完了フラグ初期化

Winsock1.SendData strMsg                             'メッセージ送信

Do While (MsgFlg = 0)                                '応答受信まで待つ
    DoEvents
Loop

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Winsock1.GetData MsgBuf, vbString                    '応答受信

MsgFlg = 1                                           '受信完了フラグセット

End Sub


[例3]ストレージデータの出力法

Dim MsgFlg As Integer
Dim MsgBuf As String

Private Sub Command1_Click()
'*******************************************************************************
' 10BASE-T(LAN) SAMPLE PROGRAM NO.3
' ストレージデータの出力法
'
' ・:MAXP?クエリによって、ストレージデータが入出力可能であるか調べます。
' ストレージされていない状態では、MAXP?による出力値が0となり、データの出力はできません。
' ・出力したいデータのチャネルとポイントを:POINTコマンドによって指定します。
' データを入出力すると自動的にポイントが移動していきます。連続したデータを取込
' む場合には、一度指定するだけで済みます。
' ・ASCII形式で取込む場合は、:ADATA?クエリ、電圧値形式の場合は:VDATA?クエリを使用します。
' まとめて出力できるデータ数は:ADATA?,:VDATA?ともに1〜最大記録長×100個ですがバッファの
' 容量により、個数制限されます。
' ・より多くのデータをまとめて出力させるほど、処理全体の時間は短くなります。
' ・記録長10DIVでストレージされているデータのCH1のデータ1000個を取り込みます。
'*******************************************************************************

deli$ = Chr$(13) & Chr$(10)                           'デリミタ定義
Dim d(1000) As Double

SendMsg ":SHOT 10" & deli$                  '記録長10DIVに設定
SendMsg ":TGMD SING" & deli$                'トリガをSINGLEに設定
GetMsg ":START;*OPC;:STOP;*OPC?" & deli$    'スタート処理
'注記
'":START;*OPC;:STOP;*OPC?"とすることによって、
'指定記録長分の取り込み終了を待つことができます。
o$ = MsgBuf

GetMsg ":MAXP?" & deli$                    'ストレージデータ数を読み出す
mx$ = MsgBuf
If (Val(mx$) = 0) Then
    Exit Sub
End If

SendMsg ":POINT CH1,0" & deli$                 '出力データをCH1、ポイント0に設定
For i = 1 To 1000
    vd$ = ""
    GetMsg ":VDATA? 1" & deli$
    vd$ = MsgBuf
    d(i) = Val(vd$)
Next

For i = 1 To 1000                                      'データ表示
    Text1.SelText = Format(d(i), "Scientific") & deli$
Next

End Sub

Private Sub Command2_Click()

Winsock1.Protocol = sckTCPProtocol                   'プロトコル
Winsock1.RemoteHost = txtIP.Text                     'IPアドレス
Winsock1.RemotePort = Val(txtPort.Text)              'ポート番号

Winsock1.Connect                                     'ソケット接続

Do While (Winsock1.State <> sckConnected)
    If Winsock1.State = sckConnecting Then Text2.Text = "LAN接続待ち"
    DoEvents
Loop
    If Winsock1.State = sckConnected Then Text2.Text = "LAN接続完了"

End Sub

Private Sub Command3_Click()

Winsock1.Close                                       'ソケット切断

Do While (Winsock1.State <> sckClosed)
    If Winsock1.State = sckConnected Then Text2.Text = "LAN切断待ち"
    DoEvents
Loop
    If Winsock1.State = sckClosed Then Text2.Text = "LAN切断完了"

End Sub

Private Sub SendMsg(strMsg As String)

Winsock1.SendData strMsg                             'メッセージ送信

End Sub

Private Sub GetMsg(strMsg As String)

MsgFlg = 0                                           '受信完了フラグ初期化

Winsock1.SendData strMsg                             'メッセージ送信

Do While (MsgFlg = 0)                                '応答受信まで待つ
    DoEvents
Loop

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Winsock1.GetData MsgBuf, vbString                    '応答受信

MsgFlg = 1                                           '受信完了フラグセット

End Sub


[例4]ストレージデータの入力法

Dim MsgFlg As Integer
Dim MsgBuf As String

Private Sub Command1_Click()
'*******************************************************************************
' 10BASE-T(LAN) SAMPLE PROGRAM NO.4
' ストレージデータの入力法
'
' ・:PREPAREによって、ストレージメモリ準備をします。
' ・入力するデータのチャネルとポイントを:POINTコマンドによって指定します。
' 指定後、:ADATAコマンドによって入力します。
'*******************************************************************************

deli$ = Chr$(13) & Chr$(10)                           'デリミタ定義

Text1.Text = "コマンド実行中"

SendMsg ":SHOT 10" & deli$          '記録長10DIVに設定
GetMsg ":PREPARE;*OPC?" & deli$     'ストレージメモリの準備
o$ = MsgBuf

SendMsg ":POINT CH1,0" & deli$                 '入力データをCH1、ポイント0に設定
For i = 1 To 1000                                      'SIN波のセット
    SendMsg ":ADATA " & Str$(Int(1600 * Sin(3.14 * i / 50))) & deli$
Next

SendMsg ":SCRN MAIN" & deli$                 '波形の表示
GetMsg "*OPC?" & deli$                       '表示の確認

Text1.Text = "コマンド終了"

End Sub

Private Sub Command2_Click()

Winsock1.Protocol = sckTCPProtocol                   'プロトコル
Winsock1.RemoteHost = txtIP.Text                     'IPアドレス
Winsock1.RemotePort = Val(txtPort.Text)              'ポート番号

Winsock1.Connect                                     'ソケット接続

Do While (Winsock1.State <> sckConnected)
    If Winsock1.State = sckConnecting Then Text2.Text = "LAN接続待ち"
    DoEvents
Loop
    If Winsock1.State = sckConnected Then Text2.Text = "LAN接続完了"

End Sub

Private Sub Command3_Click()

Winsock1.Close                                       'ソケット切断

Do While (Winsock1.State <> sckClosed)
    If Winsock1.State = sckConnected Then Text2.Text = "LAN切断待ち"
    DoEvents
Loop
    If Winsock1.State = sckClosed Then Text2.Text = "LAN切断完了"

End Sub

Private Sub SendMsg(strMsg As String)

Winsock1.SendData strMsg                             'メッセージ送信

End Sub

Private Sub GetMsg(strMsg As String)

MsgFlg = 0                                           '受信完了フラグ初期化

Winsock1.SendData strMsg                             'メッセージ送信

Do While (MsgFlg = 0)                                '応答受信まで待つ
    DoEvents
Loop

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Winsock1.GetData MsgBuf, vbString                    '応答受信

MsgFlg = 1                                           '受信完了フラグセット

End Sub


[例5]ストレージされているデータをAドライブにSAVEする。

Dim MsgFlg As Integer
Dim MsgBuf As String

Private Sub Command1_Click()
'*******************************************************************************
' 10BASE-T(LAN) SAMPLE PROGRAM NO.5
' ストレージされているデータをAドライブにSAVEする。
'*******************************************************************************

deli$ = Chr$(13) & Chr$(10)                           'デリミタ定義

Text1.Text = "コマンド実行中"

na$ = "a:\sample.dat"                                 'Aドライブとファイル名を設定

GetMsg ":MAXP?" & deli$                               'ストレージされているデータ数を読み出す
mx$ = MsgBuf

If (Val(mx$) = 0) Then
Exit Sub
End If

Open na$ For Output As #1
SendMsg ":POINT CH1,0" & deli$                        'ストレージデータの出力ポイントを設定
Print #1, Val(mx$)
For i = 1 To Val(mx$)
    GetMsg ":ADATA? 1" & deli$                        'ストレージデータを読み出す
    ad$ = MsgBuf
Print #1, Val(ad$)                                    'ファイルへ出力
Next

Close #1

Text1.Text = "コマンド終了"

End Sub

Private Sub Command2_Click()

Winsock1.Protocol = sckTCPProtocol                   'プロトコル
Winsock1.RemoteHost = txtIP.Text                     'IPアドレス
Winsock1.RemotePort = Val(txtPort.Text)              'ポート番号

Winsock1.Connect                                     'ソケット接続

Do While (Winsock1.State <> sckConnected)
    If Winsock1.State = sckConnecting Then Text2.Text = "LAN接続待ち"
    DoEvents
Loop
    If Winsock1.State = sckConnected Then Text2.Text = "LAN接続完了"

End Sub

Private Sub Command3_Click()

Winsock1.Close                                       'ソケット切断

Do While (Winsock1.State <> sckClosed)
    If Winsock1.State = sckConnected Then Text2.Text = "LAN切断待ち"
    DoEvents
Loop
    If Winsock1.State = sckClosed Then Text2.Text = "LAN切断完了"

End Sub

Private Sub SendMsg(strMsg As String)

Winsock1.SendData strMsg                             'メッセージ送信

End Sub

Private Sub GetMsg(strMsg As String)

MsgFlg = 0                                           '受信完了フラグ初期化

Winsock1.SendData strMsg                             'メッセージ送信

Do While (MsgFlg = 0)                                '応答受信まで待つ
    DoEvents
Loop

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Winsock1.GetData MsgBuf, vbString                    '応答受信

MsgFlg = 1                                           '受信完了フラグセット

End Sub


[例6]SAMPLE PROGRAM NO.5で保存したファイルからデータを取出し、本体へセットする。

Dim MsgFlg As Integer
Dim MsgBuf As String

Private Sub Command1_Click()
'*******************************************************************************
' 10BASE-T(LAN) SAMPLE PROGRAM NO.6
' SAMPLE PROGRAM NO.5で保存したファイルからデータを取出し、本体へセットする。
'*******************************************************************************

deli$ = Chr$(13) & Chr$(10)                           'デリミタ定義

Text1.Text = "コマンド実行中"

na$ = "a:\sample.dat"                                 'Aドライブとファイル名を指定

GetMsg ":PREPARE;*OPC?" & deli$                       'ストレージデータの準備
o$ = MsgBuf

Open na$ For Input As #1
SendMsg ":POINT CH1,0" & deli$                        'ストレージデータの入力ポイントを設定
Line Input #1, mx
For i = 1 To mx
    Line Input #1, dt                                 'ファイルからデータを読み込む
    SendMsg ":ADATA " & Str$(dt) & deli$              'ストレージメモリにデータを書込む
Next

Close #1

SendMsg ":SCRN MAIN" & deli$                 '波形の表示
GetMsg "*OPC?" & deli$                       '表示の確認

Text1.Text = "コマンド終了"

End Sub

Private Sub Command2_Click()

Winsock1.Protocol = sckTCPProtocol                   'プロトコル
Winsock1.RemoteHost = txtIP.Text                     'IPアドレス
Winsock1.RemotePort = Val(txtPort.Text)              'ポート番号

Winsock1.Connect                                     'ソケット接続

Do While (Winsock1.State <> sckConnected)
    If Winsock1.State = sckConnecting Then Text2.Text = "LAN接続待ち"
    DoEvents
Loop
    If Winsock1.State = sckConnected Then Text2.Text = "LAN接続完了"

End Sub

Private Sub Command3_Click()

Winsock1.Close                                       'ソケット切断

Do While (Winsock1.State <> sckClosed)
    If Winsock1.State = sckConnected Then Text2.Text = "LAN切断待ち"
    DoEvents
Loop
    If Winsock1.State = sckClosed Then Text2.Text = "LAN切断完了"

End Sub

Private Sub SendMsg(strMsg As String)

Winsock1.SendData strMsg                             'メッセージ送信

End Sub

Private Sub GetMsg(strMsg As String)

MsgFlg = 0                                           '受信完了フラグ初期化

Winsock1.SendData strMsg                             'メッセージ送信

Do While (MsgFlg = 0)                                '応答受信まで待つ
    DoEvents
Loop

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Winsock1.GetData MsgBuf, vbString                    '応答受信

MsgFlg = 1                                           '受信完了フラグセット

End Sub