Serial port Comport DataReceived对窗口窗体的可见性
我被要求编写一个串口库来处理应用程序所需的串口功能。从主Windows窗体调用库的方法openComportToTuneSuite(),并设置串行端口进行通信,包括在引发comport.DataReceived事件时分配“portMessageReceivedFromTuneSuite”方法。一切似乎都很顺利;但是,我无法解决如何使DataReceived方法返回的数据(下面代码中的“\u response”)对主窗口窗体可见。由于调用此方法是在库中设置EventHandler的结果,而不是从主Windows窗体(允许返回响应)调用特定方法的结果,因此没有机会将_响应发送回应用程序 有人能告诉我如何将从DataReceived方法接收到的数据从支持库调用到主窗口窗体,并使其可见吗 库方法Serial port Comport DataReceived对窗口窗体的可见性,serial-port,visibility,Serial Port,Visibility,我被要求编写一个串口库来处理应用程序所需的串口功能。从主Windows窗体调用库的方法openComportToTuneSuite(),并设置串行端口进行通信,包括在引发comport.DataReceived事件时分配“portMessageReceivedFromTuneSuite”方法。一切似乎都很顺利;但是,我无法解决如何使DataReceived方法返回的数据(下面代码中的“\u response”)对主窗口窗体可见。由于调用此方法是在库中设置EventHandler的结果,而不是从主
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;”)。它似乎起作用了。谢谢你的指导。