方法 : Visual Basic でシリアル ポートから文字列を受信する
更新 : 2007 年 11 月
このトピックでは、My.Computer.Ports を使用して、Visual Basic でコンピュータのシリアル ポートから文字列を受信する方法を説明します。
シリアル ポートから文字列を受信するには
返す文字列を初期化します。
Dim returnStr As String = ""
どのシリアル ポートから文字列を取得するかを決定します。この例では、COM1 であるものと想定しています。
My.Computer.Ports.OpenSerialPort メソッドを使用して、ポートへの参照を取得します。詳細については、「My.Computer.Ports.OpenSerialPort メソッド」を参照してください。
Using ブロックを使用すると、アプリケーションが例外を生成した場合でも、シリアル ポートを閉じることができます。シリアル ポートを操作するコードは、このブロックまたは Try...Catch...Finally ブロック内に記述する必要があります。
Using com1 As IO.Ports.SerialPort = _ My.Computer.Ports.OpenSerialPort("COM1") End Using
Do ループを作成します。行がなくなるまでテキストの読み取りを繰り返すためのループです。
Do Loop
ReadLine メソッドを使用して、シリアル ポートから次の行のテキストを読み取ります。
Dim Incoming As String = com1.ReadLine()
If ステートメントを使用して、ReadLine メソッドが Nothing を返したかどうか (つまり、テキストがもうないかどうか) を判断します。Nothing を返した場合は、Do ループを終了します。
If Incoming Is Nothing Then Exit Do End If
文字列をきちんと読み取ることができた場合の処理を実行するための Else ブロックを If ステートメントに追加します。ブロックでは、シリアル ポートから取得した文字列を、返す文字列の末尾に追加します。
Else returnStr &= Incoming & vbCrLf
文字列を返します。
Return returnStr
使用例
Function ReceiveSerialData() As String
' Receive strings from a serial port.
Dim returnStr As String = ""
Using com1 As IO.Ports.SerialPort = _
My.Computer.Ports.OpenSerialPort("COM1")
Do
Dim Incoming As String = com1.ReadLine()
If Incoming Is Nothing Then
Exit Do
Else
returnStr &= Incoming & vbCrLf
End If
Loop
End Using
Return returnStr
End Function
このコードの例は、IntelliSense コード スニペットとしても利用できます。コード スニペット ピッカーでは、これは [接続とネットワーク] にあります。詳細については、「方法 : コードにスニペットを挿入する (Visual Basic)」を参照してください。
コードのコンパイル方法
この例では、コンピュータが COM1 を使用しているものと想定しています。
堅牢性の高いプログラム
この例では、コンピュータが COM1 を使用しているものと想定しています。実際に作成するコードでは、柔軟性を高めるために、利用可能なシリアル ポートの一覧から、目的のポートをユーザーが選択できるようにすることをお勧めします。詳細については、「方法 : Visual Basic で利用可能なシリアル ポートを表示する」を参照してください。
この例では、アプリケーションが例外をスローした場合でもポートが閉じられるよう、Using ブロックを使用しています。詳細については、「Using ステートメント (Visual Basic)」を参照してください。
参照
処理手順
方法 : Visual Basic で、シリアル ポートに接続されているモデムをダイヤルする
方法 : Visual Basic でシリアル ポートに文字列を送信する
方法 : Visual Basic で利用可能なシリアル ポートを表示する