HOW TO:在 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 迴圈 (Loop) 用於讀取文字行,直到再也沒有可用的文字行為止。
Do Loop
使用 ReadLine 方法,從序列埠讀取下一個可用的文字行。
Dim Incoming As String = com1.ReadLine()
使用 If 陳述式 (Statement) 判斷 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。為了具有更大的彈性,程式碼應該允許使用者從可用序列埠清單中選取想要的序列埠。如需詳細資訊,請參閱 HOW TO:在 Visual Basic 中顯示可用的序列埠。
這個範例使用 Try...Catch...Finally 區塊,確定應用程式會關閉連接埠並攔截逾時例外狀況。如需詳細資訊,請參閱 Try...Catch...Finally 陳述式 (Visual Basic)。
請參閱
工作
HOW TO:在 Visual Basic 中撥接與序列埠連接的數據機
HOW TO:在 Visual Basic 中將字串傳送至序列埠
HOW TO:在 Visual Basic 中顯示可用的序列埠