如何检测.NET中通过串口或以太网连接的设备状态的变化

时间:2018-01-25 10:49:19

标签: c# winforms serial-port ethernet tcp-ip

我的应用程序通过串行端口和以太网连接到控制器。控制器不断向PC发送数据。我在C#中编写应用程序。我在c#中创建了 SerialPort 对象,并在 dataReceived 方法中接收数据。类似地,对于以太网,我使用 TCPListener 及其方法 startAcceptClient 来接受来自客户端的连接。

现在,我的问题是控制器是否断电或从PC上拔下电缆;如何在应用程序中检测这些事件?

1 个答案:

答案 0 :(得分:1)

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

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毫秒计时的计时器