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

Public Class Form1


    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

        SerialPort1.PortName = TextCom.Text                     'ポートを指定
        SerialPort1.Encoding = Encoding.GetEncoding("shift_jis")
        SerialPort1.Open()                                      '接続

        TextBox2.Text = "USB接続完了"

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        SerialPort1.Close()                                     '切断

        TextBox2.Text = "USB切断完了"

    End Sub

    Private Sub SendMsgCrLf(ByVal strMsg As String)

        strMsg = strMsg & vbCrLf
        SerialPort1.WriteLine(strMsg)                           'ﾒｯｾｰｼﾞ送信

    End Sub

    Private Sub GetMsgCrLf(ByVal strMsg As String)

        strMsg = strMsg & vbCrLf
        SerialPort1.WriteLine(strMsg)                          'ﾒｯｾｰｼﾞ送信

        Dim Check As Integer
        Dim buf = New List(Of Byte)()
        Do                                                     '応答受信まで待つ
            Check = SerialPort1.ReadByte()
            If Chr(Check) = vbLf Then
                Exit Do
            ElseIf Chr(Check) = vbCr Then
            Else
                buf.Add(Check)
            End If
        Loop

        MsgBuf = Encoding.GetEncoding("shift_jis").GetString(buf.ToArray)
        MsgBuf = MsgBuf & vbCrLf

    End Sub

    Private Sub TextCom_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextCom.TextChanged

    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

    End Sub
End Class
