Porady: odbieranie ciągów z portów seryjnych w Visual Basic
W tym temacie opisano sposób odbierania My.Computer.Ports
ciągów z portów seryjnych komputera w Visual Basic.
Aby odbierać ciągi z portu szeregowego
Zainicjuj ciąg zwrotny.
Dim returnStr As String = ""
Określ, który port szeregowy powinien zawierać ciągi. W tym przykładzie przyjęto założenie, że jest to
COM1
.My.Computer.Ports.OpenSerialPort
Użyj metody , aby uzyskać odwołanie do portu. Aby uzyskać więcej informacji, zobacz OpenSerialPort.Blok
Try...Catch...Finally
umożliwia aplikacji zamknięcie portu szeregowego, nawet jeśli generuje wyjątek. Cały kod, który manipuluje portem seryjnym, powinien pojawić się w tym bloku.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
Utwórz pętlę
Do
do odczytywania wierszy tekstu, dopóki nie będą dostępne żadne wiersze.Do Loop
ReadLine() Użyj metody , aby odczytać następny dostępny wiersz tekstu z portu szeregowego.
Dim Incoming As String = com1.ReadLine()
If
Użyj instrukcji , aby określić, czy ReadLine() metoda zwracaNothing
wartość (co oznacza, że nie jest dostępny żaden tekst). Jeśli funkcja zwróciNothing
wartość , zamknij pętlęDo
.If Incoming Is Nothing Then Exit Do End If
Else
Dodaj blok do instrukcjiIf
, aby obsłużyć przypadek, jeśli ciąg jest rzeczywiście odczytywany. Blok dołącza ciąg z portu szeregowego do zwracanego ciągu.Else returnStr &= Incoming & vbCrLf
Zwróć ciąg.
Return returnStr
Przykład
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
Ten przykład kodu jest również dostępny jako fragment kodu funkcji IntelliSense. W selektorze fragmentów kodu znajduje się on w Połączenie ivity i Networking. Aby uzyskać więcej informacji, zobacz Fragmenty kodu.
Kompilowanie kodu
W tym przykładzie przyjęto założenie, że komputer używa polecenia COM1
.
Niezawodne programowanie
W tym przykładzie przyjęto założenie, że komputer używa polecenia COM1
. Aby uzyskać większą elastyczność, kod powinien umożliwić użytkownikowi wybranie żądanego portu szeregowego z listy dostępnych portów. Aby uzyskać więcej informacji, zobacz How to: Show Available Serial Ports (Instrukcje: pokazywanie dostępnych portów seryjnych).
W tym przykładzie Try...Catch...Finally
użyto bloku, aby upewnić się, że aplikacja zamknie port i przechwyci wyjątki przekroczenia limitu czasu. Aby uzyskać więcej informacji, zobacz Try... Złapać... Finally, instrukcja.