我正在编写 JUnit 测试来测试我的应用程序。该应用程序是用 Java 编写的,并使用 purejavacomm 库。为了测试串行解析器,我想设置一个虚拟串行端口,以便测试可以与解析器通信。除了简单解析外,它还会在串行端口可用时动态连接到串行端口,所以我不想使用,比如 PipedInputStream
。
此库仅查找以 ttyS
、ttyUSB
或 ttyACM
开头的设备文件。因此,我无法执行常规操作(这会在 /dev/pts/x
中生成串行端口):
socat -d -d pty,raw,echo=0 pty,raw,echo=0
我试过:
socat /dev/ttyS20 /dev/ttyS21
但它不起作用。它不会退出,也不会打印错误。我尝试使用屏幕连接到 /dev/ttyS20
,但它只是说,[screen is terminating]
。
我查看了 ttyS20
(和 21)的用户权限,它们都有组,dialout
(用户:root),我的用户在(克里斯)。
我是否忽略了一些权限?有没有更好的方法来一起完成这一切?
最佳答案
然后我建议在您的主目录中创建一个 dev 文件夹并将链接指向那里。
socat pty,raw,echo=0,link=/home/user/dev/ttyS20 pty,raw,echo=0,link=/home/user/dev/ttyS21
你应该可以在没有 root 的情况下访问它。如果是单向通信,我通常喜欢添加 -u 选项。
关于linux - socat 两个串口在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33811013/