我的应用程序通过串行端口和以太网连接到控制器。控制器不断向PC发送数据。我在C#中编写应用程序。我在c#中创建了 SerialPort 对象,并在 dataReceived 方法中接收数据。类似地,对于以太网,我使用 TCPListener 及其方法 startAcceptClient 来接受来自客户端的连接。
现在,我的问题是控制器是否断电或从PC上拔下电缆;如何在应用程序中检测这些事件?
答案 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毫秒计时的计时器