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
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
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
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
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
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
*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桁目のみを違う値にすると通信ができます。
以下のサンプルプログラムは、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
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
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
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
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
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