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
Initialisieren Sie die Rückgabezeichenfolge.
Dim returnStr As String = ""
Bestimmen Sie, welcher serielle Anschluss die Zeichenfolgen bereitstellen soll. In diesem Beispiel wird davon ausgegangen, dass dies COM1 ist.
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
Erstellen Sie eine Do-Schleife für das Lesen von Textzeilen, bis keine Zeilen mehr verfügbar sind.
Do Loop
Verwenden Sie die ReadLine-Methode, um die nächste verfügbare Textzeile vom seriellen Anschluss zu lesen.
Dim Incoming As String = com1.ReadLine()
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
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
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 Codeausschnitte.
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