【发布时间】:2018-07-04 14:16:28
【问题描述】:
我的应用程序通过串行端口和以太网连接到控制器。控制器不断向 PC 发送数据。我正在用 C# 编写应用程序。我在 c# 中创建了 SerialPort 对象并在 dataReceived 方法中接收数据。同样对于以太网,我使用 TCPListener 及其方法 startAcceptClient 来接受来自客户端的连接。
现在,我的问题是控制器是否断电或从 PC 上拔下电缆;如何在应用中检测这些事件?
【问题讨论】:
-
这是两个不同的问题。 RS232(串行端口)可以检测损坏的第 0 层。TCP/IP 不能。 TCP 唯一的机会是尝试写入如果连接断开会导致 IOException。一个很好的提示是跟踪传入消息的频率。如果您检测到频率严重下降,您可能会触发有关连接中断的调查。
-
感谢您的及时回复。那么如何在串口情况下检测
-
对于串行端口,您可以在这里查看:stackoverflow.com/q/13408476/982149
-
您希望 PinChanged 事件触发以告诉您 DsrChanged 握手信号已关闭。它不是 100% 可靠的,串行设备并不总是打开它,断开的长 rs-232 电缆可以像天线一样工作并拾取电噪声。到目前为止,操作串行设备的最佳方法是永远不要乱用它。
标签: c# winforms serial-port ethernet tcp-ip