Freigeben über


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

In diesem Thema wird beschrieben, wie in Visual Basic mit My.Computer.Ports Zeichenfolgen von den seriellen Anschlüssen des Computers empfangen werden.

So empfangen Sie Zeichenfolgen vom seriellen Anschluss

  1. Initialisieren Sie die Rückgabezeichenfolge.

    Dim returnStr As String = ""
    
  2. Bestimmen Sie, welcher serielle Anschluss die Zeichenfolgen bereitstellen soll. In diesem Beispiel wird davon ausgegangen, dass dies COM1 ist.

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

    Der Try...Catch...Finally-Block ermöglicht der Anwendung, den seriellen Anschluss auch dann zu schließen, wenn dies eine Ausnahme generiert. Code, der den seriellen Anschluss bearbeitet, muss vollständig innerhalb dieses Blocks stehen.

    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 Zeilen mehr verfügbar sind.

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

    Dim Incoming As String = com1.ReadLine()
    
  6. Bestimmen Sie mit einer If-Anweisung, ob die ReadLine-Methode Nothing zurückgibt (d. h., dass kein weiterer Text verfügbar ist). Wenn Nothing zurückgegeben wird, beenden Sie die Do-Schleife.

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

    Else
        returnStr &= Incoming & vbCrLf
    
  8. Geben Sie 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. Sie finden das Element in der Codeausschnittauswahl unter Connectivity and Networking. Weitere Informationen finden Sie unter Gewusst wie: Einfügen von IntelliSense-Codeausschnitten.

Kompilieren des Codes

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

Robuste Programmierung

In diesem Beispiel wird davon ausgegangen, dass der Computer COM1 verwendet. Für eine höhere Flexibilität sollte dem Benutzer die Möglichkeit zur Auswahl des gewünschten Anschlusses aus einer Liste freier Anschlüsse gegeben werden. Weitere Informationen finden Sie unter Gewusst wie: Anzeigen von verfügbaren seriellen Anschlüssen in Visual Basic.

In diesem Beispiel wird mithilfe eines Try...Catch...Finally-Blocks sichergestellt, dass die Anwendung den seriellen Anschluss schließt und ausgelöste Timeoutausnahmen abfängt. Weitere Informationen finden Sie unter Try...Catch...Finally-Anweisung (Visual Basic).

Siehe auch

Aufgaben

Gewusst wie: Wählen mit Modems an seriellen Anschlüssen in Visual Basic

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

Gewusst wie: Anzeigen von verfügbaren seriellen Anschlüssen in Visual Basic

Referenz

Ports

System.IO.Ports.SerialPort