在两种不同的表单上使用相同的串口数据接收事件

我有一个问题,我的SerialDataReceivedEventHandler whitch无法响应serail端口中的数据。

我有一个主要forms在whitch我打开端口和做其他stuf whitch需要完成正确的串口通信(发送和接收工作)! 然后我在同一项目中打开另一个表格,需要相同的串口进行读写! 问题是我的form2中的SerialDataReceivedEventHandler不能正常工作,它与mainform中的第一个完全相同。 (如果我在主窗体应用程序中调用serial.close()冻结或造成巨大延迟)

可能我必须从我的主要事件公开,但我仍然不知道如何使我的自定义事件或其他会触发事件的forms2数据到达端口

我找到了此链接以获取帮助,但无法使用我的应用。

http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/7efccf0e-b412-4869-b942-a006773a833f

我正在使用VS2008,framework3.5(智能设备项目)

有人可以帮助我吗? , 请!

将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.SerialDataReceived += 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); } } 

同样,这是伪代码,附近没有编译器。 希望这可以帮助。