【问题标题】:Null modem emulator (com0com) for linux用于 linux 的空调制解调器模拟器 (com0com)
【发布时间】: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


【解决方案1】:
socat -d -d pty,raw,echo=0 pty,raw,echo=0

工作正常并打印:

2014/05/26 13:29:15 socat[27177] N PTY is /dev/pts/32
2014/05/26 13:29:15 socat[27177] N PTY is /dev/pts/33
2014/05/26 13:29:15 socat[27177] N starting data transfer loop with FDs [3,3] and [5,5]

我假设您应该能够写入 /dev/pts/32 并从 /dev/pts/33 读取。

/dev/COM9{8,9} 也是您可以使用的字符设备吗?

ls -l /dev/COM989 

如果是这种情况,应该打印一个以 c 开头的模式。

【讨论】:

  • 我不能以某种方式在 linux 中使用 /dev/COMxx 名称。但是,如果我选择 /dev/ttySxx 名称,它就可以正常工作!谢谢!
  • 我如何做socat -d -d pty,raw,echo=0 pty,raw,echo=0 但指定我要使用的/dev/pts/#
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-15
  • 1970-01-01
  • 1970-01-01
  • 2023-01-30
  • 1970-01-01
相关资源
最近更新 更多