使用Python,如何在Linux上创建虚拟串口?

use*_*278 5 python linux serial-port virtual-serial-port pyserial

我有两个 python 程序需要通过 pySerial API 从同一个串口读取数据。

据我了解,不能让两个程序从同一个串口读取数据。所以我计划做的是让一个 python 程序从物理串行端口读取数据,然后让它将从串行端口接收到的确切数据复制到虚拟串行端口,其他 python 程序可以通过 pySerial API 读取它。

在将使用 pySerial 的两个 Python 程序中,只有其中一个会返回任何内容。

有什么想法如何做到这一点?

gav*_*avv 2

创建虚拟串行端口可能很简单,也可能很复杂,具体取决于您的要求。

如果您只需将数据从真实端口传播到虚拟端口(反之亦然),则可以使用socatremserial、 或 等工具conserver。请参阅此处的用法示例:1、2、3

此类工具创建 pty(伪 tty)并在真实端口和 pty 之间双向传输数据。但是,它们不传播其他 API,包括特定于串行端口的各种 APItermios和调用。ioctl()

如果这还不够,您需要更高级的工具,例如tty0ttyor ser2netand sercd(基于RFC 2217)等。请参阅这篇文章。