我正在尝试读取从设备接收到的数据,但出现以下错误DA.SetDataList(0, port.DataReceived);
:
The best overloaded method match for Grasshopper.Kernel.IGH_DataAccess.SetDataList(int,System.Collections.IEnumerable) has some valid arguments.
SetDataList(int32, IEnumerable) 是 Grasshopper 内核的一部分。port.DataReceived
是一个事件,因此不是有效的 IEnumerable 参数,它在 GH_Component.SolveInstance() 期间将数据列表存储在输出参数中。我已经设置了一个订阅者方法 portdatareceived 它给了我字符串。如何从此方法获得 IEnumerable?
SerialPort port;
protected override void SolveInstance(IGH_DataAccess DA)
{
string gcode = default(string);
DA.GetData(0, ref gcode);
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;
}
else
{
DA.SetDataList(0, port.DataReceived);
}
}
private void portdatareceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
string line = port.ReadExisting();
}