Start by communicating in both directions using Hyperterminal or similar: establish that coms is possible and exactly what parameters are needed. Then hard wire those parameters in and do a basic test without using events to ensure that your code is basically connected. Expand that to use your config info. and check that. Finally add event handling.
But ... also read the documentation:
SerialPort.DataReceived Event (System.IO.Ports) | Microsoft Docs[
^]
Quote:
The DataReceived event is raised on a secondary thread when data is received from the SerialPort object. Because this event is raised on a secondary thread, and not the main thread, attempting to modify some elements in the main thread, such as UI elements, could raise a threading exception. If it is necessary to modify elements in the main Form or Control, post change requests back using Invoke, which will do the work on the proper thread.
So you can't access UI elements in your DataReceived event handler or it will throw a cross threading exception, which is probably what is happening with your code.