Cómo: Recibir cadenas de puertos serie en Visual Basic

En este tema se explica cómo usar My.Computer.Ports para recibir cadenas de los puertos serie del equipo en Visual Basic.

Para recibir cadenas del puerto serie

  1. Inicialice la cadena de devolución.

    Dim returnStr As String = ""
    
  2. Determine el puerto serie que debe proporcionar las cadenas. En este ejemplo se da por supuesto que es COM1.

  3. Use el método My.Computer.Ports.OpenSerialPort para obtener una referencia al puerto. Para obtener más información, vea OpenSerialPort.

    El bloque Try...Catch...Finally permite a la aplicación cerrar el puerto serie aun cuando se genere una excepción. Todo el código que manipula el puerto serie debe aparecer dentro de este bloque.

    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. Cree un bucle Do que lea líneas de texto hasta que no haya más líneas disponibles.

    Do
    Loop
    
  5. Use el método ReadLine() para leer la siguiente línea de texto disponible desde el puerto serie.

    Dim Incoming As String = com1.ReadLine()
    
  6. Use una instrucción If para determinar si el método ReadLine() devuelve Nothing (lo que indica que no hay más texto disponible). Si devuelve Nothing, salga del bucle Do.

    If Incoming Is Nothing Then
        Exit Do
    End If
    
  7. Agregue un bloque Else a la instrucción If para controlar el caso si la cadena se lee realmente. El bloque anexa la cadena del puerto serie a la cadena de devolución.

    Else
        returnStr &= Incoming & vbCrLf
    
  8. Devolver la cadena.

    Return returnStr
    

Ejemplo

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 ejemplo de código también está disponible como fragmento de código de IntelliSense. En el selector de fragmentos de código, se encuentra en Conectividad y redes. Para obtener más información, vea Fragmentos de código.

Compilar el código

En este ejemplo se presupone que el equipo usa COM1.

Programación sólida

En este ejemplo se presupone que el equipo usa COM1. Para brindar mayor flexibilidad, el código debe permitir al usuario seleccionar el puerto serie que quiera de una lista de puertos disponibles. Para obtener más información, vea How to: Show Available Serial Ports (Cómo: Mostrar los puertos serie disponibles en Visual Basic).

En este ejemplo se usa un bloque Try...Catch...Finally para asegurarse de que la aplicación cierra el puerto y para capturar las excepciones de tiempo de espera. Para obtener más información, vea Instrucción Try...Catch...Finally (Visual Basic).

Vea también