Como receber cadeias de caracteres de portas seriais no Visual Basic

Este tópico descreve como usar o My.Computer.Ports para receber cadeias de caracteres de portas seriais do computador em Visual Basic.

Para receber cadeias de caracteres da porta serial

  1. Inicialize a cadeia de caracteres de retorno.

    Dim returnStr As String = ""
    
  2. Determine qual porta serial deve fornecer as cadeias de caracteres. Este exemplo assume que é COM1.

  3. Use o método My.Computer.Ports.OpenSerialPort para obter uma referência para a porta. Para obter mais informações, consulte OpenSerialPort.

    O bloco Try...Catch...Finally permite que o aplicativo feche a porta serial mesmo que ele gere uma exceção. Todo o código que manipula a porta serial deve aparecer dentro deste bloco.

    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. Crie um loop de Do para ler linhas do texto até que não haja mais linhas disponíveis.

    Do
    Loop
    
  5. Use o método ReadLine() para ler a próxima linha de texto disponível da porta serial.

    Dim Incoming As String = com1.ReadLine()
    
  6. Use uma instrução If para determinar se o método ReadLine() retorna Nothing (o que significa que não há mais texto disponível). Se ele retornar Nothing, saia do loop de Do.

    If Incoming Is Nothing Then
        Exit Do
    End If
    
  7. Adicione um bloco Else à instrução If para lidar com o caso se a cadeia de caracteres for realmente lida. O bloco acrescenta a cadeia de caracteres da porta serial à cadeia de caracteres de retorno.

    Else
        returnStr &= Incoming & vbCrLf
    
  8. Retorne a cadeia de caracteres.

    Return returnStr
    

Exemplo

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

Este exemplo de código também está disponível como um snippet de código do IntelliSense. No selecionador de snippet de código, ele está localizado em Conectividade e Redes. Para obter mais informações, consulte Snippets de Código.

Compilando o código

Este exemplo pressupõe que o computador esteja usando a COM1.

Programação robusta

Este exemplo pressupõe que o computador esteja usando a COM1. Para obter mais flexibilidade, o código deve permitir que o usuário selecione a porta serial desejada na lista de portas disponíveis. Para obter mais informações, consulte Como mostrar portas seriais disponíveis.

Este exemplo usa um bloco Try...Catch...Finally para garantir que o aplicativo feche a porta e capture quaisquer exceções de tempo limite. Para obter mais informações, consulte Instrução Try...Catch...Finally.

Confira também