1

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

问题是,如果拔下电缆,pyserial 会不断报告端口已打开且可用。阅读时我只收到Empty异常(由于阅读超时)。

我如何发现某个端口已断开连接,以便我可以处理这种情况?

编辑:操作系统是 Ubuntu 12.04

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

4

1 回答 1

3

串行端口没有“电缆连接”或未连接的真正概念。

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

来自维基百科:

DTR 和 DSR 通常一直处于开启状态,并且根据 RS-232 标准及其后续标准,用于从每一端发出其他设备实际存在并已通电的信号

因此,如果您有符合要求的设备,那么 DSR 线可能就是您需要的东西。

编辑:由于您似乎使用 USB2Serial 转换器,您可以尝试检查设备节点是否仍然存在 - 您无需尝试打开它。

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

于 2012-06-26T07:44:35.733 回答