VB.NETでシリアル通信を行う
(その2)
	ダイアログの[接続]ボタンを押されたときに、シリアルポートをオープンします。
シリアルポートのオープンを行う前に、接続するシリアルポートの通信条件を設定します。
ダイアログの[切断]ボタンを押されたときに、オープン中のシリアルポートをクローズします。
サンプルプログラムでは、[接続]ボタンと[切断]ボタンが共有のボタンなので、SerialPortクラスのIsOpen()プロパティでシリアルポートがオープンされていた場合、Close()メソッドを呼び出しています。
サンプルコードを以下に示します。
'****************************************************************************'
'*
'*  @brief  [接続]/[切断]ボタンを押したときにシリアルポートのオープン/クローズを行う.
'*
'*  @param  [in]    sender  イベントの送信元のオブジェクト.
'*  @param  [in]    e       イベント情報.
'*
'*  @retval なし.
'*
Private Sub ConnectButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ConnectButton.Click
    If SerialPort1.IsOpen = True Then
        'シリアルポートをクローズする.
        SerialPort1.Close()
        'ボタンの表示を[切断]から[接続]に変える.
        ConnectButton.Text = "接続"
    Else
        'オープンするシリアルポートをコンボボックスから取り出す.
        SerialPort1.PortName = cmbPortName.SelectedItem.ToString()
        'ボーレートをコンボボックスから取り出す.
        Dim baud As BuadRateItem
        baud = cmbBaudRate.SelectedItem
        SerialPort1.BaudRate = baud.BAUDRATE
        'データビットをセットする. (データビット = 8ビット)
        SerialPort1.DataBits = 8
        'パリティビットをセットする. (パリティビット = なし)
        SerialPort1.Parity = Parity.None
        'ストップビットをセットする. (ストップビット = 1ビット)
        SerialPort1.StopBits = StopBits.One
        'フロー制御をコンボボックスから取り出す.
        Dim ctrl As HandShakeItem
        ctrl = cmbHandShake.SelectedItem
        SerialPort1.Handshake = ctrl.HANDSHAKE
        '文字コードをセットする.
        SerialPort1.Encoding = Encoding.Unicode
        Try
            'シリアルポートをオープンする.
            SerialPort1.Open()
            'ボタンの表示を[接続]から[切断]に変える.
            ConnectButton.Text = "切断"
        Catch ex As Exception
            MsgBox( ex.Message )
        End Try
    End If
End Sub
    
	シリアルポートの通信条件を設定する
| データ名 | Parity | 
|---|---|
| 値 | 説明 | 
| None | パリティチェックをを行いません。  | 
| Even | バイトデータの「1」の個数が偶数になるようにパリティビットをセットします。  | 
| Odd | バイトデータの「1」の個数が奇数になるようにパリティビットをセットします。  | 
| Mark | パリティビットが常に「1」になるようにします。  | 
| Space | パリティビットが常に「0」になるようにします。  | 
| データ名 | StopBits | 
|---|---|
| 値 | 説明 | 
| None | ストップビットなし。  | 
| One | ストップビット = 1ビット。  | 
| OnePointFive | ストップビット = 1.5ビット。  | 
| Two | ストップビット = 2ビット。  | 
| データ名 | Handshake | 
|---|---|
| 値 | 説明 | 
| None | フロー制御を行いません。  | 
| RequestToSend | RTS/CTSによるハードウェア制御を行います。  | 
| XOnXOff | XON(&H11)/XOFF(&H13)によるソフトウェア制御を行います。  | 
| RequestToSendXOnXOff | XON/XOFFによるソフトウェア制御とRTS/CTSによるハードウェア制御の両方を行います。  | 
SerialPortクラスのOpen()メソッドを呼び出して、シリアルポートの通信を接続します。
    Public Sub Open()
	
	Open()は、常に成功するとは限らないので、Try ~ Catchでオープンエラーを捕捉するようにしておく方がよいでしょう。
SerialPortクラスのClose()メソッドを呼び出して、現在接続中のシリアルポートの通信を切断します。
    Public Sub Close()
	
	※サンプルプログラムでは考慮していませんが、Close()メソッドから制御が戻ってきても、すぐにはポートが閉じていないこともあるようなので、再度Open()する場合、少し待機した方が良いそうです。