방법: Visual Basic에서 직렬 포트의 문자열 받기
이 항목에서는 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
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
블록을 사용하여 애플리케이션이 포트를 닫도록 하고 시간 초과 예외를 catch합니다. 자세한 내용은 Try...Catch...Finally 문을 참조하세요.
참고 항목
.NET