Gewusst wie: Empfangen von Zeichenfolgen von seriellen Anschlüssen in Visual Basic

Dieses Thema beschreibt, wie My.Computer.Ports zum Empfangen von Zeichenfolgen von seriellen Ports des Computers in Visual Basic verwendet wird.

So werden Zeichenfolgen von seriellen Anschlüssen empfangen

  1. Initialisieren Sie die zurückgegebene Zeichenfolge.

    Dim returnStr As String = ""
    
  2. Bestimmen Sie, welcher serielle Anschluss 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 auch dann zu schließen, wenn eine Ausnahme generiert wird. Sämtlicher Code, der den seriellen Anschluss ändert, 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 für das 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 aus dem seriellen Anschluss auszulesen.

    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 weiterer Text mehr verfügbar ist). Wenn sie Nothing zurückgibt, beenden Sie die Do-Schleife.

    If Incoming Is Nothing Then
        Exit Do
    End If
    
  7. Fügen Sie einen Else-Block zur If-Anweisung hinzu, um den Fall so zu behandeln, als würde die Zeichenfolge tatsächlich gelesen. Der Block fügt die Zeichenfolge vom seriellen Anschluss 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 Codeausschnitte.

Kompilieren des Codes

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

Stabile Programmierung

In diesem Beispiel wird davon ausgegangen, dass der Computer COM1 verwendet. Der Code sollte dem Benutzer erlauben, den gewünschten seriellen Anschluss aus einer Liste der verfügbaren Anschlüsse auszuwählen, um mehr Flexibilität zu gewährleisten. Weitere Informationen finden Sie unter Vorgehensweise: Anzeigen von verfügbaren seriellen Anschlüssen.

Dieses Beispiel verwendet einen Try...Catch...Finally-Block, um sicherzustellen, dass die Anwendung den Anschluss schließt, und um Zeitüberschreitungen zu erfassen. Weitere Informationen finden Sie unter Try...Catch...Finally-Anweisung.

Weitere Informationen