Gewusst wie: Empfangen von Zeichenfolgen von seriellen Anschlüssen in Visual BasicHow to: Receive Strings From Serial Ports in Visual Basic

Dieses Thema beschreibt, wie My.Computer.Ports zum Empfangen von Zeichenfolgen von seriellen Ports des Computers in Visual Basic verwendet wird.This topic describes how to use My.Computer.Ports to receive strings from the computer's serial ports in Visual Basic.

So werden Zeichenfolgen von seriellen Anschlüssen empfangenTo receive strings from the serial port

  1. Initialisieren Sie die zurückgegebene Zeichenfolge.Initialize the return string.

    Dim returnStr As String = ""
    
  2. Bestimmen Sie, welcher serielle Anschluss die Zeichenfolgen bereitstellen soll.Determine which serial port should provide the strings. In diesem Beispiel wird vorausgesetzt, dass es COM1 ist.This example assumes it is COM1.

  3. Verwenden Sie die My.Computer.Ports.OpenSerialPort-Methode, um einen Verweis auf den Port abzurufen.Use the My.Computer.Ports.OpenSerialPort method to obtain a reference to the port. Weitere Informationen finden Sie unter OpenSerialPort.For more information, see OpenSerialPort.

    Der Try...Catch...Finally-Block ermöglicht es der Anwendung, den seriellen Port auch dann zu schließen, wenn eine Ausnahme generiert wird.The Try...Catch...Finally block allows the application to close the serial port even if it generates an exception. Sämtlicher Code, der den seriellen Anschluss ändert, sollte in diesem Block angezeigt werden.All code that manipulates the serial port should appear within this block.

    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.Create a Do loop for reading lines of text until no more lines are available.

    Do
    Loop
    
  5. Verwenden Sie die ReadLine()-Methode, um die nächste verfügbare Textzeile aus dem seriellen Anschluss auszulesen.Use the ReadLine() method to read the next available line of text from the serial port.

    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).Use an If statement to determine if the ReadLine() method returns Nothing (which means no more text is available). Wenn sie Nothing zurückgibt, beenden Sie die Do-Schleife.If it does return Nothing, exit the Do loop.

    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.Add an Else block to the If statement to handle the case if the string is actually read. Der Block fügt die Zeichenfolge vom seriellen Anschluss an die Rückgabezeichenfolge an.The block appends the string from the serial port to the return string.

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

    Return returnStr
    

BeispielExample

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.This code example is also available as an IntelliSense code snippet. In der Codeausschnittauswahl ist er unter Konnektivität und Netzwerk zu finden.In the code snippet picker, it is located in Connectivity and Networking. Weitere Informationen finden Sie unter Codeausschnitte.For more information, see Code Snippets.

Kompilieren des CodesCompiling the Code

In diesem Beispiel wird davon ausgegangen, dass der Computer COM1 verwendet.This example assumes the computer is using COM1.

Stabile ProgrammierungRobust Programming

In diesem Beispiel wird davon ausgegangen, dass der Computer COM1 verwendet.This example assumes the computer is using COM1. 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.For more flexibility, the code should allow the user to select the desired serial port from a list of available ports. Weitere Informationen finden Sie unter Vorgehensweise: Anzeigen von verfügbaren seriellen Anschlüssen.For more information, see How to: Show Available Serial Ports.

Dieses Beispiel verwendet einen Try...Catch...Finally-Block, um sicherzustellen, dass die Anwendung den Anschluss schließt, und um Zeitüberschreitungen zu erfassen.This example uses a Try...Catch...Finally block to make sure that the application closes the port and to catch any timeout exceptions. Weitere Informationen finden Sie unter Try...Catch...Finally-Anweisung.For more information, see Try...Catch...Finally Statement.

Siehe auchSee Also

Ports
System.IO.Ports.SerialPort
Gewusst wie: Wählen mit Modems an seriellen AnschlüssenHow to: Dial Modems Attached to Serial Ports
Gewusst wie: Senden von Zeichenfolgen zu seriellen AnschlüssenHow to: Send Strings to Serial Ports
Gewusst wie: Anzeigen von verfügbaren seriellen AnschlüssenHow to: Show Available Serial Ports