由于无法使用 Linux 在两个进程之间直接共享串行端口,因此我正在寻找另一种方法来实现这一点,我听说过 socat,但找不到如何实现以下内容的具体示例:
将一个物理串口(/dev/ttyUSB0)拆分成两个虚拟端口,一个用于读取,一个用于写入,因为一个进程只需要发送数据,一个进程只需要接收数据。
不幸的是我无法修改发送应用程序。
答案1
在 Linux 中,获得串行端口的独占访问权限始终是一个问题,因为限制不必要干扰的唯一方法是用户/组访问权限。
随着时间的推移,当某个进程愿意“拥有”串行端口设备时,如何告诉其他进程不要打开该设备的惯例已经确立:要打开串行(并行)端口的进程首先检查目录中的锁定文件/tmp
(其他标准可能使用/var/lock
目录),例如,对于 ttyS0 设备,检查 /tmp/LCK..ttyS0 并将其写入PID
该文件。然后,它将其读回,如果匹配,PID
则该进程拥有该端口。当不再需要端口时,锁定文件将被进程删除。
因此,您可以从不同的进程打开它,只要这些进程的 uids 或 gids 对设备具有 rw 访问权限