이 항목에서는 Visual Basic에서 컴퓨터의 직렬 포트에서 문자열을 수신하는 데 사용하는 My.Computer.Ports
방법을 설명합니다.
직렬 포트에서 문자열을 수신하려면
반환 문자열을 초기화합니다.
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
Else
문자열이 실제로 읽히는 경우를 처리하기 위해If
문에 블록을 추가합니다. 블록은 직렬 포트의 문자열을 반환 문자열에 추가합니다.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
블록을 사용하여 애플리케이션이 포트를 닫고 시간 제한 예외를 catch하도록 합니다. 자세한 내용은 Try...Catch...Finally 문을 참조하세요.
참고하십시오
.NET