Поделиться через


Практическое руководство. Получение строк из последовательных портов в Visual Basic

В этом разделе описывается, как использовать My.Computer.Ports для получения строк из последовательных портов компьютера в Visual Basic.

Получение строк из последовательного порта

  1. Инициализируйте возвращаемую строку.

    Dim returnStr As String = ""
    
  2. Определите, какой последовательный порт должен предоставлять строки. В этом примере предполагается, что это COM1.

  3. 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
    
  4. Do Создайте цикл для чтения строк текста, пока не будет доступно больше строк.

    Do
    Loop
    
  5. ReadLine() Используйте метод для чтения следующей доступной строки текста из последовательного порта.

    Dim Incoming As String = com1.ReadLine()
    
  6. Используйте оператор If, чтобы определить, возвращает ли метод ReadLine() значение Nothing (что означает отсутствие доступного текста). Если возвращается Nothing, выйдите из Do цикла.

    If Incoming Is Nothing Then
        Exit Do
    End If
    
  7. Else Добавьте блок в If инструкцию для обработки дела, если строка на самом деле считывается. Блок добавляет строку из последовательного порта в возвращаемую строку.

    Else
        returnStr &= Incoming & vbCrLf
    
  8. Возвратите строку.

    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, чтобы гарантировать закрытие порта приложением и перехват исключений тайм-аута. Дополнительные сведения см. в статье "Попробуйте... Ловить... Наконец, оператор.

См. также