我的SerialDataReceivedEventHandler问题无法响应serail端口中的数据。
我有一个主要形式,我打开端口,并做其他stuf whitch需要做正确的串口通信(发送和接收工作)! 然后我在同一项目中打开另一个表格,需要相同的串口进行读写! 问题是我的form2中的SerialDataReceivedEventHandler不能正常工作,它与mainform中的第一个完全相同。 (如果我在主窗体应用程序中调用serial.close()冻结或导致大量延迟)
可能我必须在我的主要活动中公开这个活动,但我仍然不知道如何制作我的自定义事件或其他会触发表格2事件的数据到达端口的事件
我找到了此链接以获取帮助,但无法使用我的应用。
http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/7efccf0e-b412-4869-b942-a006773a833f
我正在使用VS2008,framework3.5(智能设备项目)
有人可以帮助我吗? ,拜托!
答案 0 :(得分:1)
将您的SerialPort消耗移动到单独的静态(或单个)类中。在该类中创建DataReceived事件,并在每次接收数据时触发它。让两个表单都订阅DataReceived事件 - 这样两种表单都会接收数据。
编辑1:伪代码示例
public static class Serial {
public static delegate void DataReceivedEventHandler(object sender, ReceivedEventArgs e);
public static event DataReceivedEventHandler DataReceived;
static SerialPort serialPort = new SerialPort();
static Serial() {
serialPort = new SerialPort();
serialPort.DataReceived += Incoming;
serialPort.Open();
}
private static void Incoming(object sender, SerialDataReceivedEventHandler args) {
if (DataReceived != null) {
ReceivedEventArgs rea = new ReceivedEventArgs {Data = args.Data};
DataReceived(this, rea);
}
}
}
public class ReceivedEventArgs : EventArgs {
public string Data { get; set;}
}
public class Form1: Form {
public Form1() {
Serial.DataReceived += Incoming;
}
private void Incoming(object sender, ReceivedEventArgs e) {
// you receive the data here
Debug.WriteLine(e.Data);
}
}
public class Form2: Form {
public Form2() {
Serial.DataReceived += Incoming;
}
private void Incoming(object sender, ReceivedEventArgs e) {
// you receive the data here
Debug.WriteLine(e.Data);
}
}
同样,这是伪代码,附近没有编译器。希望这会有所帮助。