If you are using System.IO.Ports.SerialPort, then the SerialPort.ReadLine waits for a CR to be received. If no CR, then after the timeout period, a TimeoutException should be thrown.
Are you getting the TimeoutException?
Try using SerialPort.ReadByte instead in order to read a single byte. Check SerialPort.BytesToRead and loop reading all the bytes.
Also, look at SerialPort.ReceivedBytesThreshold - set it to 1 to get an event for each byte. If you do set to 1, your ability to process the bytes is limited so don't send very many bytes.
Sorry, VB.Net is not my primary programming language
If SerialPort1.IsOpen Then
Try
Dim byteCount as Int = SerialPort1.BytesToRead
Dim i as Int
Dim data as Int
For i = 1 to byteCount
data = SerialPort1.ReadByte()
If data <> -1 Then
Me.Invoke(New EventHandler(AddressOf DoUpdate))
End If
Next
Catch ex As Exception
MsgBox("read " & ex.Message)
End Try
End If