我有通过串行端口和以太网连接到控制器的应用程序。控制器不断地向PC机抛出数据。我正在用C编写应用程序。我在C中创建了serialport对象,在dataReceived方法中接收数据。类似地,对于以太网,我使用tcplistener及其方法startacceptclient来接受来自客户端的连接。
现在,我的问题是,控制器是否已关闭或电缆已从PC上卸下;如何在应用程序中检测这些事件?

最佳答案

我不太熟悉tcplistener,但对于串行端口,我使用一个计时器,每次勾选我都会检查端口是否仍然打开

private void ComTimer_Tick(object sender, EventArgs e)
    {
        if (SerialPort.IsOpen)
        {
            dostuff
        }
        else if (!SerialPort.IsOpen)
        {
            ComCheckTimer.Stop();
            MessageBox.Show("Connection lost");
    }
}

为了计时器
ComCheckTimer = new Timer();
ComCheckTimer.Tick += new EventHandler(ComTimer_Tick);
ComCheckTimer.Interval = 1000;

这将创建一个每1000毫秒计时一次的计时器

10-08 05:05