本主題描述如何使用 My.Computer.Ports 從 Visual Basic 中的電腦序列埠接收字串。
從序列埠接收字串
初始化傳回字串。
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 IfElse將區塊新增至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 區塊來確保應用程式會關閉埠,並攔截任何逾時例外狀況。 如需詳細資訊,請參閱 Try...Catch...Finally 語句。