如何确定串口是否关闭?

时间:2012-06-26 07:37:38

标签: python pyserial

我正在开发一个用于处理串行/ USB端口的多线程服务器应用程序。

问题是如果电缆被拔掉,pyserial会一直报告端口是否已打开且可用。阅读时我只收到Empty个例外(由于读取超时)。

如何确定端口已断开连接以便我可以处理此情况?

编辑:操作系统是Ubuntu 12.04

编辑2:澄清 - 我通过串口转USB连接器连接到串口设备,因此断开连接的设备是USB设备。

1 个答案:

答案 0 :(得分:3)

串口没有“有线连接”或未连接的真实概念。

根据您使用的设备,您可以尝试轮询DSR或CTS线路,并确定当它们在一定时间内保持低电平时没有设备连接。

来自维基百科:

  

DTR和DSR通常是按照RS-232标准开启的   它的继承者,用于从另一端发出信号   设备实际存在并启动

因此,如果你有一个符合要求的设备,DSR系列可能是你需要的东西。

编辑: 当你似乎使用USB2Serial转换器时,你可以尝试检查设备节点是否仍然存在 - 你不需要尝试打开它。

所以os.path.exists(devNode)就足够了。