如何:在 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
將
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 程式碼片段。 在程式碼片段選擇器中,該程式碼片段會位於 [連接和網路] 中。 如需詳細資訊,請參閱 Code Snippets。
編譯程式碼
此範例假設電腦使用的是 COM1
。
穩固程式設計
此範例假設電腦使用的是 COM1
。 為了具有更大的彈性,程式碼應該允許使用者從可用序列埠清單中選取想要的序列埠。 如需詳細資訊,請參閱如何:顯示可用的序列埠。
此範例使用 Try...Catch...Finally
區塊以確保應用程式會關閉序列埠,並攔截任何逾時例外狀況。 如需詳細資訊,請參閱 Try...Catch...Finally 陳述式。