共用方式為


如何:從 Visual Basic 中的序列埠接收字串

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

從序列埠接收字串

  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 循環來讀取文字行,直到沒有更多行可用為止。

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

    Dim Incoming As String = com1.ReadLine()
    
  6. 使用If判斷語句來確定方法是否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。 為了獲得更大的彈性,程式代碼應該允許使用者從可用的埠清單中選取所需的序列埠。 如需詳細資訊,請參閱 如何:顯示可用的序列埠

此範例會使用 Try...Catch...Finally 區塊來確保應用程式會關閉埠,並攔截任何逾時例外狀況。 如需詳細資訊,請參閱 Try...Catch...Finally 語句

另請參閱