Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описывается, как использовать My.Computer.Ports
для получения строк из последовательных портов компьютера в Visual Basic.
Получение строк из последовательного порта
Инициализируйте возвращаемую строку.
Dim returnStr As String = ""
Определите, какой последовательный порт должен предоставлять строки. В этом примере предполагается, что это
COM1
.My.Computer.Ports.OpenSerialPort
Используйте метод для получения ссылки на порт. Дополнительные сведения см. в разделе OpenSerialPort.Блок
Try...Catch...Finally
позволяет приложению закрыть последовательный порт, даже если он создает исключение. Весь код, который управляет последовательным портом, должен отображаться в этом блоке.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
Do
Создайте цикл для чтения строк текста, пока не будет доступно больше строк.Do Loop
ReadLine() Используйте метод для чтения следующей доступной строки текста из последовательного порта.
Dim Incoming As String = com1.ReadLine()
Используйте оператор
If
, чтобы определить, возвращает ли метод ReadLine() значениеNothing
(что означает отсутствие доступного текста). Если возвращаетсяNothing
, выйдите изDo
цикла.If Incoming Is Nothing Then Exit Do End If
Else
Добавьте блок вIf
инструкцию для обработки дела, если строка на самом деле считывается. Блок добавляет строку из последовательного порта в возвращаемую строку.Else returnStr &= Incoming & vbCrLf
Возвратите строку.
Return returnStr
Пример
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
Этот пример кода также доступен в виде фрагмента кода IntelliSense. В элементе выбора фрагмента кода он находится в разделе "Подключение" и "Сеть". Дополнительные сведения см. в фрагментах кода .
Компиляция кода
В этом примере предполагается, что компьютер использует COM1
.
Надежное программирование
В этом примере предполагается, что компьютер использует COM1
. Для повышения гибкости код должен позволить пользователю выбрать нужный последовательный порт из списка доступных портов. Дополнительные сведения см. в разделе "Практическое руководство. Показать доступные последовательные порты".
В этом примере используется блок Try...Catch...Finally
, чтобы гарантировать закрытие порта приложением и перехват исключений тайм-аута. Дополнительные сведения см. в статье "Попробуйте... Ловить... Наконец, оператор.