【发布时间】:2014-07-15 01:13:57
【问题描述】:
我有一个项目,其中包含一些用于测试使用 COM 端口(在 Windows 中)的串行通信的单一测试。我使用 com0com 创建一对虚拟的有界端口并执行测试。
但是我不知道如何在 Linux 和 MACOS 中做到这一点。我读过这个话题:Are there some program like COM0COM in linux? 答案建议使用 socat。我已经尝试过这种方法,但它不起作用,我的应用程序没有检测到我刚刚在 socat 中定义的端口。
socat PTY,link=/dev/COM98 PTY,link=/dev/COM99
我的理论是socat不能创建虚拟端口,它只能绑定现有的端口。
我该如何解决这个问题?
谢谢!
编辑:
这是我运行上一个 socat 命令后得到的。如果仔细观察,您会发现 COM98 和 COM99 端口位于 /dev/ 中。但是,如果我写入 /dev/COM98 并使用 tail -f 来跟踪 COM99,我不会从中得到任何输出。
EDIT2:
好吧,如果我使用 cat 而不是 tail 我可以看到输出(为什么?!)
'
'
'
EDIT3:
解决方案:不要将端口命名为 COMxx 而是 ttySxx!
例子:
socat PTY,link=/dev/ttyS98 PTY,link=/dev/ttyS99
原因:某些串行通信库可能不支持其他命名法,例如 RXTX 2.X.X 和以前的版本。
【问题讨论】:
-
我也研究过这个话题,但并没有解决问题。 :(
-
为什么没有解决您的问题?
-
我已经尝试了一切,但没有成功。我在 OP 中添加了一张图片以帮助显示问题。
-
我建议您编辑问题以将编辑 3 作为答案,而不是问题本身的附录。
标签: linux macos serial-port socat com0com