¿Enviando la cadena de Gcode correcta a un puerto serial?

Estoy tratando de enviar el gcodeg28 a mi impresora RepRap 3D a través de la líneaport.Write("g28");.

Mi programa se conecta al puerto serie correcto, sin embargo, cuando intento enviar la información como una cadena, se niega el acceso al puerto COM.Esto es extraño porque el puerto serie estaba abierto antes de enviarle el código Gcode. Incluso envió algunos datos de vuelta. ¿Cuál es el problema allí y cómo puedo solucionarlo?

Abajo están las líneas de código que estoy usando. La lista de comandos de gcode están disponibles en estepágina.

He intentado agregar un"\n" Al final de la cadena pero no funcionó.

    //Fields
    List<string> myReceivedLines = new List<string>();


    //subscriber method for the port.DataReceived Event
    private void DataReceivedHandler(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
    {
        SerialPort sp = (SerialPort)sender;
        while (sp.BytesToRead > 0)
        {
            try
            {
                myReceivedLines.Add(sp.ReadLine());
            }
            catch (TimeoutException)
            {
                break;
            }
        }
    }


    protected override void SolveInstance(IGH_DataAccess DA)
    {

        string selectedportname = default(string);
        DA.GetData(1, ref selectedportname);
        int selectedbaudrate = default(int);
        DA.GetData(2, ref selectedbaudrate);
        bool connecttodevice = default(bool);
        DA.GetData(3, ref connecttodevice);
        bool homeall = default(bool);
        DA.GetData(5, ref homeall);

        SerialPort port = new SerialPort(selectedportname, selectedbaudrate, Parity.None, 8, StopBits.One); 

        port.DtrEnable = true;   
        port.Open();             

        if (connecttodevice == true)
        {
            port.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
            DA.SetDataList(0, myReceivedLines);
        }

        if (homeall == true)
        {
            port.Write("g28");
        }

    }

Respuestas a la pregunta(1)

Su respuesta a la pregunta