次の方法で共有


方法: 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. 文字列が実際に読み取られた場合にケースを処理するために、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 コード スニペットとしても使用できます。 コード スニペット ピッカーでは、 接続とネットワークにあります。 詳細については、「 コード スニペット」を参照してください。

コードのコンパイル

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

堅牢なプログラミング

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

この例では、 Try...Catch...Finally ブロックを使用して、アプリケーションがポートを閉じ、タイムアウト例外をキャッチします。 詳細については、「 Try...」を参照してください。捕まえる。。。Finally ステートメント

こちらも参照ください