Freigeben über


Vorgehensweise: Empfangen von Zeichenfolgen von seriellen Ports in Visual Basic

In diesem Thema wird beschrieben, wie Sie My.Computer.Ports verwenden, um Zeichenfolgen von den seriellen Ports des Computers in Visual Basic zu empfangen.

So empfangen Sie Zeichenfolgen vom seriellen Port

  1. Initialisieren Sie die zurückgegebene Zeichenfolge.

    Dim returnStr As String = ""
    
  2. Bestimmen Sie, welcher serielle Port die Zeichenfolgen bereitstellen soll. In diesem Beispiel wird vorausgesetzt, dass es COM1 ist.

  3. Verwenden Sie die My.Computer.Ports.OpenSerialPort Methode, um einen Verweis auf den Port abzurufen. Weitere Informationen finden Sie unter OpenSerialPort.

    Der Try...Catch...Finally Block ermöglicht es der Anwendung, den seriellen Port zu schließen, auch wenn eine Ausnahme generiert wird. Der gesamte Code, der den seriellen Port bearbeitet, sollte in diesem Block angezeigt werden.

    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. Erstellen Sie eine Do Schleife zum Lesen von Textzeilen, bis keine weiteren Zeilen verfügbar sind.

    Do
    Loop
    
  5. Verwenden Sie die ReadLine() Methode, um die nächste verfügbare Textzeile vom seriellen Port zu lesen.

    Dim Incoming As String = com1.ReadLine()
    
  6. Verwenden Sie eine If-Anweisung, um zu ermitteln, ob die ReadLine()-Methode Nothing zurückgibt (was bedeutet, dass kein Text mehr verfügbar ist). Wenn Nothing zurückgegeben wird, beenden Sie dann die Do-Schleife.

    If Incoming Is Nothing Then
        Exit Do
    End If
    
  7. Fügen Sie der Else Anweisung einen If Block hinzu, um den Fall zu behandeln, wenn die Zeichenfolge tatsächlich gelesen wird. Der Block fügt die Zeichenfolge vom seriellen Port an die Rückgabezeichenfolge an.

    Else
        returnStr &= Incoming & vbCrLf
    
  8. Gibt die Zeichenfolge zurück.

    Return returnStr
    

Beispiel

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

Dieses Codebeispiel ist auch als IntelliSense-Codeausschnitt verfügbar. In der Codeausschnittauswahl ist er unter Konnektivität und Netzwerk zu finden. Weitere Informationen finden Sie unter Codeschnipsel.

Code kompilieren

In diesem Beispiel wird davon ausgegangen, dass der Computer COM1 verwendet.

Robuste Programmierung

In diesem Beispiel wird davon ausgegangen, dass der Computer COM1 verwendet. Um mehr Flexibilität zu erzielen, sollte der Code dem Benutzer die Auswahl des gewünschten seriellen Ports aus einer Liste der verfügbaren Ports ermöglichen. Weitere Informationen finden Sie unter How to: Show Available Serial Ports.

In diesem Beispiel wird ein Try...Catch...Finally Block verwendet, um sicherzustellen, dass die Anwendung den Port schließt und alle Timeoutausnahmen abfangen kann. Weitere Informationen finden Sie unter Try...Catch...Finally-Anweisung.

Siehe auch