与串口设备通信时如何正确超时?

时间:2009-04-07 05:14:56

标签: c# timeout serial-port

我正在使用串口通信C#windows应用程序。我编写了一个程序来从端口获取数据,操作它并通过串口写入。

我的问题是,如果设备没电,电源断开,或设备长时间没有响应命令,我怎么知道?在我的程序中,我已经编写了正常的执行流程。但是如果长时间没有响应,程序会持续等待很长时间。我使用了计时器,但它无法正常工作。

有人可以帮我吗?

3 个答案:

答案 0 :(得分:4)

如果在C#中使用“SerialPort”对象,则可以使用ReadTimeOut和WriteTimeOut属性。

答案 1 :(得分:0)

你有两个选择:

  1. 如果您的设备应该生成数据,您可以在串口上侦听数据,如果在一段时间内没有收到任何内容,您可以认为它处于离线状态,

  2. 通过串口定期向您的设备发送数据,如果您收到例外情况,您就会知道您的设备处于离线状态。

答案 2 :(得分:0)

有一件事可能会有所帮助,如果您使用的电缆与DTR / DSR交叉连接,这意味着当您的程序启动时,您提升DTR,而另一台设备看到的DSR变高,然后提高它的DTR,这会引发你的DSR。

如果您使用未知电缆并与无法控制的设备通信,则必须使用.Timeout。