Creating a Serial Port in code in

I am trying to create a serial port in using code only. Because I am creating a class library I cannot use the built-in component. I have tried instantiating a new SeialPort() object, but that does not seem to be enough. I'm sure there is something simple I am missing and any help would be greatly appreciated! Thanks!

P.S. I should add that the problem I am having at this time is getting the code to handle the datareceived event. Other than that it might be working, but I can't tell because of that problem.


If you want to use the events make sure you declare your serialPort object using the 'withevents'. The below example will allow you to connect to a serial port, and will raise an event with the received string.

Imports System.Threading

Imports System.IO

Imports System.Text

Imports System.IO.Ports

Public Class clsBarcodeScanner

Public Event ScanDataRecieved(ByVal data As String)
WithEvents comPort As SerialPort

Public Sub Connect()
        comPort = My.Computer.Ports.OpenSerialPort("COM5", 9600)
    End Try
End Sub

Public Sub Disconnect()

    If comPort IsNot Nothing AndAlso comPort.IsOpen Then
    End If

End Sub

Private Sub comPort_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles comPort.DataReceived
    Dim str As String = ""
    If e.EventType = SerialData.Chars Then
            Dim bytecount As Integer = comPort.BytesToRead

            If bytecount = 0 Then
                Exit Do
            End If
            Dim byteBuffer(bytecount) As Byte

            comPort.Read(byteBuffer, 0, bytecount)
            str = str & System.Text.Encoding.ASCII.GetString(byteBuffer, 0, 1)

    End If

    RaiseEvent ScanDataRecieved(str)

End Sub
End Class

I found this article to be quite good.

The code i wrote from it is:

port = new System.IO.Ports.SerialPort(name, 4800, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One);
port.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(port_DataReceived);

void port_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
    buffer = port.ReadLine();
    // process line

Sorry it's C# but...

The only issue I have with it is if the port is dropped while it's open, the app seems to fail on exit.

Thank you all for your help, especially the answer about instantiating a class using the WithEvents keyword.

I found a really great article that explains how to create a manager class for the serial port. It also discusses sending Binary as well as Hex data to the serial port. It was quite helpful.

I have used the SerialPort .Net class in a past project and I worked fine. You really don't need anything else. Check the hardware setting in the control panel and make sure you instantiate the class with the same parameters.

Need Your Help

ViewPagerAdapter shows a null value

java android android-viewpager

I'm trying to implement sliding tabs in material design into my application. I found a tutorial and did the code according to it. I did some changes to implement on my app. Now i get a

Unable to serialize the session state, was working, now isn't

c# jquery session-state datetimepicker

I used to be able to edit a record, click Save, and the record updates. I had a couple jQuery datepicker's on my form - just standard MM/dd/yyyy format. SQL didn't mind updating the SQL datetime ...