1

有没有办法让两个驱动程序连接到同一个 COM 设备,一个能够向设备发送数据并且都接收传入的数据?

更详细地说:两个驱动程序也都希望向设备发送数据,如果两者都具有对设备的写访问权限,则会导致问题。因此,指向虚拟 COM 端口的符号链接根本没有帮助。

所以我想最好的选择是将设备的所有传入数据镜像到虚拟 COM 端口。一个驱动程序连接到真实设备(因此也能够向设备发送数据)。另一个只连接到虚拟 COM 端口,因此该程序发送的所有数据都应该以 /dev/null 结尾。

有没有办法做到这一点,或者有更好的解决方案?

编辑:现在的一些方法:

  1. 使用 socat

    sudo socat pty,link=/dev/modem0,raw,waitslave file:/dev/ttyACM0,nonblock
    

    不起作用,因为它是符号链接。

  2. 使用三通

    sudo cat /dev/ttyACM0 | tee 1.txt 2.txt /dev/modem0
    

    无法写入(虚拟)COM 端口(/dev/modem0 失败)并且我没有直接连接以便也将数据发送到 ttyACM0

  3. 使用 slsnif(与当前内核不兼容)

  4. 使用拦截

    sudo interceptty /dev/ttyACM0 -o "1.txt"
    

    只能嗅探 ASCII 字符,所有二进制数据都丢失在日志文件中。

4

1 回答 1

0

您可以创建一个打开此端口并将数据分发到多个文件描述符的应用程序,例如tee

于 2015-04-27T10:47:29.490 回答