使用两种不同形式的相同串行端口数据接收事件



我的SerialDataReceivedEventHandler出现问题,whitch无法响应serail端口中的数据。

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

可能我必须公开这个事件的主要内容,但我仍然不知道如何使我的自定义事件或其他会触发表单2中数据到达端口的事件

我找到了此帮助链接,但不适用于我的应用程序。

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.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);
    }
}

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

最新更新