デバイスから受信したデータを読み込もうとしていますが、次のエラーが発生します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();
}