このトピックでは、 My.Computer.Ports
を使用して、Visual Basic でコンピューターのシリアル ポートから文字列を受信する方法について説明します。
シリアル ポートから文字列を受信するには
戻り文字列を初期化します。
Dim returnStr As String = ""
文字列を提供するシリアル ポートを決定します。 この例では、
COM1
であると想定しています。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
使用できる行がなくなったまで、テキスト行を読み取るための
Do
ループを作成します。Do Loop
ReadLine() メソッドを使用して、シリアル ポートから次に使用可能なテキスト行を読み取ります。
Dim Incoming As String = com1.ReadLine()
If
ステートメントを使用して、ReadLine() メソッドがNothing
を返すかどうかを判断します (つまり、これ以上テキストを使用できません)。Nothing
が返される場合は、Do
ループを終了します。If Incoming Is Nothing Then Exit Do End If
文字列が実際に読み取られた場合にケースを処理するために、
If
ステートメントにElse
ブロックを追加します。 ブロックは、シリアル ポートから戻り値の文字列に文字列を追加します。Else returnStr &= Incoming & vbCrLf
文字列を返します。
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 ステートメント。
こちらも参照ください
.NET