Partilhar via


Como: Receber cadeias de caracteres de portas seriais no Visual Basic

Este tópico descreve como usar My.Computer.Ports para receber cadeias de caracteres das portas seriais do computador no 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 My.Computer.Ports.OpenSerialPort método para obter uma referência à porta. Para obter mais informações, veja OpenSerialPort.

    O Try...Catch...Finally bloco permite que o aplicativo feche a porta serial, mesmo que 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 Do loop para ler linhas de texto até que não haja mais linhas disponíveis.

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

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

    If Incoming Is Nothing Then
        Exit Do
    End If
    
  7. Adicione um Else bloco à If instrução para lidar com maiúsculas e minúsculas 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 trecho de código IntelliSense. No seletor de trechos de código, ele está localizado em Conectividade e Rede. Para obter mais informações, consulte Trechos de código.

Compilando o código

Este exemplo pressupõe que o computador está usando COM1o .

Programação robusta

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

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

Consulte também