有没有办法让两个驱动程序连接到同一个 COM 设备,一个能够向设备发送数据并且都接收传入的数据?
更详细地说:两个驱动程序也都希望向设备发送数据,如果两者都具有对设备的写访问权限,则会导致问题。因此,指向虚拟 COM 端口的符号链接根本没有帮助。
所以我想最好的选择是将设备的所有传入数据镜像到虚拟 COM 端口。一个驱动程序连接到真实设备(因此也能够向设备发送数据)。另一个只连接到虚拟 COM 端口,因此该程序发送的所有数据都应该以 /dev/null 结尾。
有没有办法做到这一点,或者有更好的解决方案?
编辑:现在的一些方法:
使用 socat
sudo socat pty,link=/dev/modem0,raw,waitslave file:/dev/ttyACM0,nonblock
不起作用,因为它是符号链接。
使用三通
sudo cat /dev/ttyACM0 | tee 1.txt 2.txt /dev/modem0
无法写入(虚拟)COM 端口(/dev/modem0 失败)并且我没有直接连接以便也将数据发送到 ttyACM0
使用 slsnif(与当前内核不兼容)
使用拦截
sudo interceptty /dev/ttyACM0 -o "1.txt"
只能嗅探 ASCII 字符,所有二进制数据都丢失在日志文件中。