Senden der richtigen Gcode-Zeichenfolge an einen seriellen Port?
Ich versuche, den Gcode zu sendeng28
zu meinem RepRap 3D-Drucker über die Leitungport.Write("g28");
.
Mein Programm stellt eine Verbindung zum richtigen seriellen Port her. Wenn ich jedoch versuche, die Informationen als Zeichenfolge zu senden, wird der Zugriff auf den COM-Port verweigert.Dies ist seltsam, weil der serielle Port offen war, bevor der Gcode an ihn gesendet wurde. Es wurden sogar einige Daten zurückgeschickt. Was ist das Problem dort und wie könnte ich es beheben?
Unten sind die Codezeilen, die ich verwende. Hierfür steht die Liste der gcode-Befehle zur VerfügungSeite.
Ich habe versucht, eine hinzuzufügen"\n"
am Ende der Zeichenfolge hat es aber nicht geklappt.
//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");
}
}