0

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

有人可以指导我如何使从支持库调用的 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;
    }
4

0 回答 0