如何在 .NET 中检测通过串行端口或以太网连接的设备状态的变化
How to detect change in the state of device connected through serial port or ethernet in .NET
我有一个应用程序可以通过串行端口和以太网连接到控制器。控制器不断地向 PC 抛出数据。我正在用 C# 编写应用程序。我在 c# 中创建了 SerialPort 对象,并在 dataReceived 方法中接收数据。同样对于以太网,我使用 TCPListener 及其方法 startAcceptClient 来接受来自客户端的连接。
现在,我的问题是控制器是否断电或从 PC 上拔下电缆;如何在应用程序中检测这些事件?
我对 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 毫秒计时一次的计时器
我有一个应用程序可以通过串行端口和以太网连接到控制器。控制器不断地向 PC 抛出数据。我正在用 C# 编写应用程序。我在 c# 中创建了 SerialPort 对象,并在 dataReceived 方法中接收数据。同样对于以太网,我使用 TCPListener 及其方法 startAcceptClient 来接受来自客户端的连接。
现在,我的问题是控制器是否断电或从 PC 上拔下电缆;如何在应用程序中检测这些事件?
我对 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 毫秒计时一次的计时器