共用方式為


HOW TO:在 Visual Basic 中接收來自序列埠的字串

本主題會描述如何在 Visual Basic 中使用 My.Computer.Ports 接收來自電腦序列埠的字串。

若要接收來自序列埠的字串

  1. 將傳回字串初始化。

    Dim returnStr As String = ""
    
  2. 判斷會由哪個序列埠提供字串,這個範例假設會是 COM1。

  3. 請使用 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
    
  4. 建立 Do 迴圈 (Loop) 用於讀取文字行,直到再也沒有可用的文字行為止。

    Do
    Loop
    
  5. 使用 ReadLine 方法,從序列埠讀取下一個可用的文字行。

    Dim Incoming As String = com1.ReadLine()
    
  6. 使用 If 陳述式 (Statement) 判斷 ReadLine 方法是否傳回 Nothing (這表示再也沒有可用的文字)。如果它傳回了 Nothing,請結束 Do 迴圈。

    If Incoming Is Nothing Then
        Exit Do
    End If
    
  7. 將 Else 區塊加入至 If 陳述式,以便處理已實際讀取到字串的情況。此區塊會將來自序列埠的字串附加至傳回字串。

    Else
        returnStr &= Incoming & vbCrLf
    
  8. 傳回字串。

    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 中顯示可用的序列埠

參考

Ports

System.IO.Ports.SerialPort