次の方法で共有


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

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

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

  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. If ステートメントに Else ブロックを追加して、文字列が実際に読み取られた場合のケースを処理します。 このブロックによって、シリアル ポートからの文字列を戻り値の文字列に追加します。

    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 コード スニペットとしても利用できます。 コード スニペット ピッカーでは、これは [接続とネットワーク] にあります。 詳細については、「Code Snippets」を参照してください。

コードのコンパイル

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

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

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

この例では、アプリケーションによってポートが閉じられ、タイムアウト例外がキャッチされるようにするために、Try...Catch...Finally ブロックを使用しています。 詳しくは、「Try...Catch...Finally ステートメント」をご覧ください。

関連項目