适用于Linux的Null调制解调器模拟器(com0com)

时间:2014-05-26 09:37:43

标签: linux macos serial-port socat com0com

我有一个项目,其中包含一些用于使用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,我就不会从中获取任何输出。

enter image description here

EDIT2:

好吧,如果我用猫而不是尾巴我可以看到输出(为什么?!)

enter image description here

'

'

'

EDIT3:

解决方案:不要将端口命名为COMxx,而是命名为ttySxx!

示例:

socat PTY,link=/dev/ttyS98 PTY,link=/dev/ttyS99

原因:某些serial-comm库可能不支持其他命名法,例如RXTX 2.X.X和以前的版本。

1 个答案:

答案 0 :(得分:6)

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开头的模式。