:)hola que tal, yo tambien andaba buscando como leer datos del puerto serial desde el visual basic 2005, intente varios codigos pero la verdad solo me enredaban, al cabo de 2 dias por fin entre las muchas combinaciones de codigos, encontre el que necesitaba, es para la recepcion de una cadena de datos enviados por el pic16f84, jajaja talvez no sea mucho pero enverdad ayuda a quien no tiene ni idea de como hacerlo, asi como yo

.
si a uno de ustedes les marca un signo de interrogacion en vez del dato que enviaron este es el codigo que necesitan.
Bueno espero que les sirva:
Public Class Form1
'En tiempo de definiciones
Delegate Sub Refrescar()
Private SerialPort1 As New IO.Ports.SerialPort
Dim DatosRecibidos As string
'
'En tiempo de Carga
'Funcion de recibir los datos
Private Sub RecibeDatos(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs)
DatosRecibidos = SerialPort1.ReadExisting
Me.Label1.Invoke(New Refrescar(AddressOf ActualizarDatos))
End Sub
'Funcion de recibir los datos
Private Sub ActualizarDatos()
Label1.Text = DatosRecibidos
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SerialPort1 = My.Computer.Ports.OpenSerialPort("COM1", 2400, IO.Ports.Parity.None, 8, IO.Ports.StopBits.One)
AddHandler SerialPort1.DataReceived, AddressOf RecibeDatos
End Sub
End Class