次の方法で共有


方法 : Visual Basic でシリアル ポートから文字列を受信する

このトピックでは、My.Computer.Ports を使用して、Visual Basic でコンピューターのシリアル ポートから文字列を受信する方法について説明します。

シリアル ポートから文字列を受信するには

  1. 返す文字列を初期化します。

    Dim returnStr As String = ""
    
  2. どのシリアル ポートから文字列を取得するかを決定します。 この例では、COM1 であるものと想定しています。

  3. My.Computer.Ports.OpenSerialPort メソッドを使用して、ポートへの参照を取得します。 詳細については、「OpenSerialPort」を参照してください。

    Try...Catch...Finally ブロックを使用すると、アプリケーションが例外を生成した場合でも、シリアル ポートを閉じることができます。 シリアル ポートを操作するコードは、このブロックに記述する必要があります。

    Dim com1 As IO.Ports.SerialPort = Nothing
    Try
        com1 = My.Computer.Ports.OpenSerialPort("COM1")
        com1.ReadTimeout = 10000
    
    Catch ex As TimeoutException
        returnStr = "Error: Serial Port read timed out."
    Finally
        If com1 IsNot Nothing Then com1.Close()
    End Try
    
  4. Do ループを作成します。行がなくなるまでテキストの読み取りを繰り返すためのループです。

    Do
    Loop
    
  5. ReadLine メソッドを使用して、シリアル ポートから次の行のテキストを読み取ります。

    Dim Incoming As String = com1.ReadLine()
    
  6. If ステートメントを使用して、ReadLine メソッドが Nothing を返したかどうか (つまり、テキストがもうないかどうか) を判断します。 Nothing を返した場合は、Do ループを終了します。

    If Incoming Is Nothing Then
        Exit Do
    End If
    
  7. 文字列をきちんと読み取ることができた場合の処理を実行するための Else ブロックを If ステートメントに追加します。 ブロックでは、シリアル ポートから取得した文字列を、返す文字列の末尾に追加します。

    Else
        returnStr &= Incoming & vbCrLf
    
  8. 文字列を返します。

    Return returnStr
    

使用例

Function ReceiveSerialData() As String
    ' Receive strings from a serial port.
    Dim returnStr As String = ""

    Dim com1 As IO.Ports.SerialPort = Nothing
    Try
        com1 = My.Computer.Ports.OpenSerialPort("COM1")
        com1.ReadTimeout = 10000
        Do
            Dim Incoming As String = com1.ReadLine()
            If Incoming Is Nothing Then
                Exit Do
            Else
                returnStr &= Incoming & vbCrLf
            End If
        Loop
    Catch ex As TimeoutException
        returnStr = "Error: Serial Port read timed out."
    Finally
        If com1 IsNot Nothing Then com1.Close()
    End Try

    Return returnStr
End Function

このコードの例は、IntelliSense コード スニペットとしても利用できます。 コード スニペット ピッカーでは、これは [接続とネットワーク] にあります。 詳細については、「方法 : IntelliSense コード スニペットを挿入する」を参照してください。

コードのコンパイル

この例では、コンピューターが COM1 を使用しているものと想定しています。

信頼性の高いプログラミング

この例では、コンピューターが COM1 を使用しているものと想定しています。 実際に作成するコードでは、柔軟性を高めるために、利用可能なシリアル ポートの一覧から、目的のポートをユーザーが選択できるようにすることをお勧めします。 詳細については、「方法 : Visual Basic で利用可能なシリアル ポートを表示する」を参照してください。

この例では、アプリケーションが確実にポートを閉じるようにするため、およびタイムアウト例外をすべてキャッチできるようにするために、Try...Catch...Finally ブロックを使用しています。 詳細については、「Try...Catch...Finally ステートメント (Visual Basic)」を参照してください。

参照

処理手順

方法 : Visual Basic で、シリアル ポートに接続されているモデムをダイヤルする

方法 : Visual Basic でシリアル ポートに文字列を送信する

方法 : Visual Basic で利用可能なシリアル ポートを表示する

参照

Ports

System.IO.Ports.SerialPort