Serial port Comport DataReceived对窗口窗体的可见性

Serial port Comport DataReceived对窗口窗体的可见性,serial-port,visibility,Serial Port,Visibility,我被要求编写一个串口库来处理应用程序所需的串口功能。从主Windows窗体调用库的方法openComportToTuneSuite(),并设置串行端口进行通信,包括在引发comport.DataReceived事件时分配“portMessageReceivedFromTuneSuite”方法。一切似乎都很顺利;但是,我无法解决如何使DataReceived方法返回的数据(下面代码中的“\u response”)对主窗口窗体可见。由于调用此方法是在库中设置EventHandler的结果,而不是从主

我被要求编写一个串口库来处理应用程序所需的串口功能。从主Windows窗体调用库的方法openComportToTuneSuite(),并设置串行端口进行通信,包括在引发comport.DataReceived事件时分配“portMessageReceivedFromTuneSuite”方法。一切似乎都很顺利;但是,我无法解决如何使DataReceived方法返回的数据(下面代码中的“\u response”)对主窗口窗体可见。由于调用此方法是在库中设置EventHandler的结果,而不是从主Windows窗体(允许返回响应)调用特定方法的结果,因此没有机会将_响应发送回应用程序

有人能告诉我如何将从DataReceived方法接收到的数据从支持库调用到主窗口窗体,并使其可见吗

库方法

 public string openComportToTuneSuite()
    {    
       _tuneSuiteComport.BaudRate = 19200;
       _tuneSuiteComport.DataBits = 8;
       _tuneSuiteComport.StopBits = StopBits.One;
       _tuneSuiteComport.Parity = Parity.None;
       _tuneSuiteComport.PortName = "COM11";
       _tuneSuiteComport.Handshake = Handshake.None;
       _tuneSuiteComport.RtsEnable = true;
       _tuneSuiteComport.Open();
       _tuneSuiteComport.DataReceived += portMessageReceivedFromTuneSuite;
    }


   private void portMessageReceivedFromTuneSuite(object sender, SerialDataReceivedEventArgs e)
    {
        string _response = "";
        var responseFromChronos = _tuneSuiteComport.ReadExisting();
        var responseArray = responseFromChronos.Split('\r');
        foreach (var response in responseArray)
        {
            _response = _response + response.ToString() + Environment.NewLine;
        }
        //return _response;
        return;
    }

不幸的是,我的编码经验是自学成才的,我不知道如何引发一个事件,以便向主Windows窗体提供_响应字符串的可见性。我一直在研究;然而,与我尝试过的大多数其他C#概念相比,事件似乎不那么直截了当。您是否可以让我从一个编码示例开始,该示例将演示如何识别可用的_响应字符串,将可用性通知表单对象,并向表单提供字符串的可见性?如果您能提供进一步的指导,我将不胜感激。我想我可能已经找到了答案。我向库中添加了一个事件(“public event changedventhandler ComportDataAvailable;”),并编写代码在portMessageReceivedFromTuneSuite过程中引发事件(“ComportDataAvailable(this,e,_response);”)。最后,我向Windows窗体添加了一个委托-(“public void MessageFromTuneSuiteHandler(对象发送者,EventArgs args,string msgToLog){tuneSuite_Log(msgToLog);}”),并添加了事件处理程序(“TuneSuiteInstance.ComportDataAvailable+=MessageFromTuneSuiteHandler;”)。它似乎起作用了。谢谢你的指导。