我们有一个基于 Debian 的嵌入式设备。它运行一个应用程序,该应用程序通过串行(RS-232、/dev/ttyS*)与其他嵌入式设备通信。通常,这很正常。但当然,有时事情会出错,虽然我们的应用程序仍然可以无错误地发送字节,但另一端却没有任何返回。
现在我想区分
[A] 串行连接处于活动/启动/已建立状态(我知道我可能使用了不恰当的术语),这意味着另一台设备正在接收我们的数据。但无论出于什么原因,另一台设备上的应用程序都没有回复我们(例如,因为它已经崩溃)。
[B] 串行连接是不是实时/启动/已建立,例如因为电缆被拔出或者其他设备断电。
有办法吗?(例如使用以太网连接,可以很容易地判断它是否有链接)
一些细节:
- NS16550A芯片带serial8250驱动
- Debian 7 32位
- 应用程序是 Python 2.7
答案1
不,没有办法做到这一点。无论从电气角度还是从软件角度,串行连接都是完全无状态的。
答案2
只是给出一个完全矛盾的答案...如果你的软件支持它,并且你的连接有超过最低限度的针脚数,RS-232 连接能具有握手和流量控制。 您的应用可以发送之前检查连接,但听起来好像没有。