在c#中检测实时串口连接

时间:2016-02-17 06:06:15

标签: c#

我正在尝试检测串行连接是否仍然存在或是否已损坏。如何在c#中检测实时串口连接? SerialPort.PinChanged事件可以用于同一个吗?

1 个答案:

答案 0 :(得分:1)

术语“生命”在串行端口上没有用处。它们是非常原始的设备,可以追溯到计算的石器时代。您可以在此处插入ASR-33电传打字机,开始使用Fortran程序。没有逻辑连接状态且没有错误恢复,没有办法在多个程序之间共享串行端口。它只是一个原始字节流,位于OSI模型的最底层,实现了物理层。

使用IsOpen属性永远不会有用,您希望立即打开()端口,这样其他程序就无法将端口从您身边偷走。在程序结束之前不要调用Close()。或者从来没有,Close()有几个坚韧不拔的死锁问题。

电气标准确实包含握手信号,您可以近距离地发现电缆另一端发生的情况。当设备打开其DTR信号时,SerialPort.DsrHolding属性为 true ,通常可以解释为上电信号。然而,并非每个设备都实现它。不初始化SerialPort.Handshake属性是一个标准错误,也是在断开连接时写入端口时没有获得TimeoutException的核心原因。大多数设备实现Handshake.RequestToSend,它们使用RTS和CTS信号告诉对方它已准备好接收数据并防止缓冲区溢出。务必先检查手册。