我正在使用串口通信C#windows应用程序。我编写了一个程序来从端口获取数据,操作它并通过串口写入。
我的问题是,如果设备没电,电源断开,或设备长时间没有响应命令,我怎么知道?在我的程序中,我已经编写了正常的执行流程。但是如果长时间没有响应,程序会持续等待很长时间。我使用了计时器,但它无法正常工作。
有人可以帮我吗?
答案 0 :(得分:4)
如果在C#中使用“SerialPort”对象,则可以使用ReadTimeOut和WriteTimeOut属性。
答案 1 :(得分:0)
你有两个选择:
如果您的设备应该生成数据,您可以在串口上侦听数据,如果在一段时间内没有收到任何内容,您可以认为它处于离线状态,
通过串口定期向您的设备发送数据,如果您收到例外情况,您就会知道您的设备处于离线状态。
答案 2 :(得分:0)
有一件事可能会有所帮助,如果您使用的电缆与DTR / DSR交叉连接,这意味着当您的程序启动时,您提升DTR,而另一台设备看到的DSR变高,然后提高它的DTR,这会引发你的DSR。
如果您使用未知电缆并与无法控制的设备通信,则必须使用.Timeout。