**************************************************************** The following two declarations place at the top of your forms code **************************************************************** Public Delegate Sub Capture_Data(ByVal Prop_data As String) Dim in_data As String **************************************************************** The following code place in the DataReceived event handler **************************************************************** Do in_data = Serialport1.ReadByte Dim new_delegate As New Capture_Data(AddressOf Text_Out) Me.RichTextBox1.Invoke(new_delegate, in_data) Loop Until Serialport1.BytesToRead < 1 **************************************************************** Add the following sub routine to your code **************************************************************** Public Sub Text_Out(ByVal text As Int16) **************************************************************** The following line if you are receiving byte values **************************************************************** Me.RichTextBox1.AppendText(Chr(text)) **************************************************************** or the following line if you are receiving ASCII characters **************************************************************** Me.RichTextBox1.AppendText(text & " ") End Sub