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
Initialisieren Sie die zurückgegebene Zeichenfolge.
Dim returnStr As String = ""
Bestimmen Sie, welcher serielle Anschluss die Zeichenfolgen bereitstellen soll. In diesem Beispiel wird vorausgesetzt, dass es
COM1
ist.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
Erstellen Sie eine
Do
-Schleife für das Lesen von Textzeilen, bis keine weiteren Zeilen verfügbar sind.Do Loop
Verwenden Sie die ReadLine()-Methode, um die nächste verfügbare Textzeile aus dem seriellen Anschluss auszulesen.
Dim Incoming As String = com1.ReadLine()
Verwenden Sie eine
If
-Anweisung, um zu ermitteln, ob die ReadLine()-MethodeNothing
zurückgibt (was bedeutet, dass kein weiterer Text mehr verfügbar ist). Wenn sieNothing
zurückgibt, beenden Sie dieDo
-Schleife.If Incoming Is Nothing Then Exit Do End If
Fügen Sie einen
Else
-Block zurIf
-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
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.