我有通过串行端口和以太网连接到控制器的应用程序。控制器不断地向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毫秒计时一次的计时器