1

SerialPort に接続されたデバイスから情報を読み取りたいと考えています。以前はフォーム(以下のコード)を使用してこれを行いましたが、情報を文字列の配列に保存するだけで、フォームなしで実行しようとしています。

フォームで使用されるコード:

private void serialPort1_DataReceived(object sender,  System.IO.Ports.SerialDataReceivedEventArgs e)
            {
                string line = port.ReadExisting();              
                this.BeginInvoke(new LineReceivedEvent(LineReceived), line);
            }

        private delegate void LineReceivedEvent(string line);
        private void LineReceived(string line)
        {
            textBox3.AppendText(line);
        }

フォームなしでどこまで到達したか (DA メソッドでは、プログラム内に変数を格納できます)。最後の行に次のエラーが表示されますCannot implicitly convert type 'string' to 'System.IO.Ports.SerialDataReceivedEventHandler'

protected override void SolveInstance(IGH_DataAccess DA)
  {
    string selectedportname;
    DA.GetData(1, ref selectedportname);
    int selectedbaudrate;
    DA.GetData(2, ref selectedbaudrate);
    bool connecttodevice;
    DA.GetData(3, ref connecttodevice);
    bool sendtoprint;
    DA.GetData(3, ref sendtoprint);


    port = new SerialPort(selectedportname, selectedbaudrate, Parity.None, 8, StopBits.One); //Create the serial port
    port.DtrEnable = true;   //enables the Data Terminal Ready (DTR) signal during serial communication (Handshaking)
    port.Open();             //Open the port
    port.DataReceived += port.ReadExisting();                                             

  }
4

1 に答える 1

1

ReadExisting正しいパラメーターを持つメソッドであると仮定します。

//port.DataReceived += port.ReadExisting();   
  port.DataReceived += port.ReadExisting;   

ただし、エラーは「文字列」を返していることを示しているため、ここで解決する必要があります。

編集:

次のようになります。

  port.DataReceived += this.serialPort1_DataReceived;   
于 2012-09-30T20:41:55.923 に答える