Imports System.Net                      'TcpClientのために定義
Imports System.Net.Sockets              'TcpClientのために定義
Imports System.Text                     'Encodingのために定義


Public Class Form1


    Dim netStream As NetworkStream


    Dim MsgBuf As String


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        '*******************************************************************************
        ' LAN SAMPLE PROGRAM NO.1
        '
        'このプログラムは、本器に接続してコマンドの送受信を行います。
        'コマンドの欄に送信したいコマンドを入力し、コマンド実行ボタンを押すと送信されます。
        '応答があるコマンド（?）が含まれるコマンドの場合は、テキストボックスに応答が表示されます。
        '*******************************************************************************

        If InStr(TextBox3.Text, "?") = 0 Then                   'コマンドに?が含まれない場合は、コマンド送信のみ

            SendMsgCrLf(TextBox3.Text)                          'コマンド送信
            TextBox1.Text = ""

        Else                                                    'コマンドに?が含まれる場合は、コマンド送信と応答受信

            GetMsgCrLf(TextBox3.Text)                           'コマンド送信と応答受信
            TextBox1.Text = MsgBuf

        End If

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim client As New TcpClient(TextIp.Text, Val(TextPort.Text))    'IPとポートを指定してTCP接続を定義

        netStream = client.GetStream()                     'LANでTCPの送受信に使用するnetStreamをオープン
        netStream.WriteTimeout = 100000
        netStream.ReadTimeout = 100000

        '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 Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        netStream.Close()                                  'LANでTCPの送受信に使用するnetStreamをクローズ

        '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 SendMsgCrLf(ByVal strMsg As String)

        strMsg = strMsg & vbCrLf
        netStream.Write(Encoding.ASCII.GetBytes(strMsg), 0, strMsg.Length)            'ﾒｯｾｰｼﾞ送信

    End Sub

    Private Sub GetMsgCrLf(ByVal strMsg As String)
        Dim Check As Integer

        strMsg = strMsg & vbCrLf
        netStream.Write(Encoding.ASCII.GetBytes(strMsg), 0, strMsg.Length)            'ﾒｯｾｰｼﾞ送信

        MsgBuf = Nothing
        Do                                                    '応答受信まで待つ
            Check = netStream.ReadByte()

            If Chr(Check) = vbLf Then
                '                MsgBuf = MsgBuf & Chr(Check)
                Exit Do
            ElseIf Chr(Check) = vbCr Then
                '                MsgBuf = MsgBuf & Chr(Check)
            Else
                MsgBuf = MsgBuf & Chr(Check)
            End If
        Loop
        MsgBuf = MsgBuf & vbCrLf

    End Sub

End Class
