我有一个项目,其中包含一些用于测试使用 COM 端口(在 Windows 中)的串行通信的单一测试。我使用 com0com 创建一对虚拟的有界端口并执行测试。
但是我不知道如何在 Linux 和 MACOS 中做到这一点。我读过这个话题:Linux中有像COM0COM这样的程序吗?答案建议使用socat。我已经尝试过这种方法,但它不起作用,我的应用程序没有检测到我刚刚在 socat 中定义的端口。
socat PTY,link=/dev/COM98 PTY,link=/dev/COM99
我的理论是 socat 不能创建虚拟端口,它只能绑定现有端口。
我该如何解决这个问题?
谢谢!
编辑:
这是我在运行上一个 socat 命令后得到的。如果仔细观察,您会发现 COM98 和 COM99 端口位于 /dev/ 中。但是,如果我写入 /dev/COM98 并使用tail -f跟踪 COM99,我不会从中得到任何输出。
编辑2:
好吧,如果我使用 cat 而不是 tail 我可以看到输出(为什么?!)
'
'
'
编辑3:
解决方案:不要将端口命名为 COMxx 而是 ttySxx!
例子:
socat PTY,link=/dev/ttyS98 PTY,link=/dev/ttyS99
原因:一些串行通信库可能不支持其他命名法,例如 RXTX 2.XX 和以前的版本。