Отправка правильной строки 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");
}
}