0

同じ行に以下のコードで次の2つのエラーが発生しますport.WriteLine(gcode);。リストの各項目に対して、forループを作成する必要がありますか?

'System.IO.Ports.SerialPort.WriteLine(string)'に最適なオーバーロードされたメソッドの一致には、いくつかの無効な引数があります

引数1:「System.Collections.Generic.List」から「string」に変換できません

コード:

//Fields
SerialPort port;
string myReceivedLines;

protected override void SolveInstance(IGH_DataAccess DA)
{
    List<string> gcode = new List<string>();
    DA.GetDataList(0, gcode);

    if (!DA.GetDataList(0, gcode)) 
        return;

    port = new SerialPort(selectedportname, selectedbaudrate, Parity.None, 8, StopBits.One); 
    port.DtrEnable = true;  
    port.Open();            
    port.DataReceived += this.portdatareceived;

    if (gcode == null)
    {
        AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Specify a valid GCode");
        return;
    }

    if (connecttodevice == true)
    {
        DA.SetDataList(0, myReceivedLines);
    }

    if (sendtoprint == true)
    {
        port.WriteLine(gcode);
    }
}

private void portdatareceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
    myReceivedLines = port.ReadExisting();
}
4

2 に答える 2

1
foreach(string s in gcode)
{
    port.WriteLine(s);
}

SerialPortは文字列の書き方を知っていますが、を受け入れるSerialPortメソッドはありませんList<string>

編集。これを試して:

StringBuilder sb = new StringBuilder();
foreach(string s in gcode)
{
    sb.Append(s)
} 
port.WriteLine(sb.ToString());   
于 2012-10-06T19:25:36.187 に答える
1
if (sendtoprint == true)
{
   for (int i = 0; i < gcode.Count(); i++)
   {
      port.WriteLine(gcode[i]);
   }
}

あなたが言うようにあなたはそれを解決することができます

于 2012-10-06T19:26:31.953 に答える