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


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

Обновлен: Ноябрь 2007

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

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

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

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

  3. Используйте метод My.Computer.Ports.OpenSerialPort для получения ссылки на порт. Дополнительные сведения см. в разделе Метод My.Computer.Ports.OpenSerialPort.

    Блок Using позволяет приложению закрыть последовательный порт даже в случае возникновения исключения. Весь код, управляющий последовательным портом, должен содержаться внутри этого блока или внутри блока Try...Catch...Finally.

    Using com1 As IO.Ports.SerialPort = _
            My.Computer.Ports.OpenSerialPort("COM1")
    End Using
    
  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 = ""

    Using com1 As IO.Ports.SerialPort = _
            My.Computer.Ports.OpenSerialPort("COM1")
        Do
            Dim Incoming As String = com1.ReadLine()
            If Incoming Is Nothing Then
                Exit Do
            Else
                returnStr &= Incoming & vbCrLf
            End If
        Loop
    End Using

    Return returnStr
End Function

Данный пример кода доступен также в качестве фрагмента кода IntelliSense. В окне выбора фрагмента кода он находится в разделе Связь и сеть. Дополнительные сведения см. в разделе Практическое руководство. Вставка фрагментов в код (Visual Basic).

Компиляция кода

В этом примере предполагается, что на компьютере используется порт COM1.

Отказоустойчивость

В этом примере предполагается, что на компьютере используется порт COM1. Для большей гибкости код должен позволить пользователю выбрать нужный последовательный порт из списка доступных портов. Дополнительные сведения см. в разделе Практическое руководство. Отображение доступных последовательных портов в Visual Basic.

В этом примере используется блок Using, чтобы обеспечить закрытие порта приложением даже в случае возникновения исключения. Дополнительные сведения см. в разделе Оператор Using (Visual Basic).

См. также

Задачи

Практическое руководство. Дозвон при помощи модема, подключенного к последовательному порту компьютера, в Visual Basic

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

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

Ссылки

Объект My.Computer.Ports

System.IO.Ports.SerialPort