我被要求编写一个串行端口库来处理应用程序所需的串行端口功能。从主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;
}