Отправка правильной строки Gcode на последовательный порт?

Я пытаюсь отправить гкодg28 на мой принтер RepRap 3D через линиюport.Write("g28");.

Моя программа подключается к правильному последовательному порту, однако, когда я пытаюсь отправить информацию в виде строки, доступ к com-порту запрещается.Это странно, потому что последовательный порт был открыт до отправки ему Gcode. Он даже отправил некоторые данные обратно. В чем проблема и как я могу это исправить?

Ниже приведены строки кода, которые я использую. Список команд gcode доступен на этомстраница.

Я попытался добавить"\n" в конце строки, но это не сработало.

    //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");
        }

    }

Ответы на вопрос(1)

Ваш ответ на вопрос