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

Ped*_*roD 6 linux macos serial-port socat com0com

我有一个项目包含一些单一测试,用于测试使用COM端口的串行通信(在Windows中).我使用com0com创建一对虚拟端口并执行测试.

但是我不知道在Linux中如何在MACOS中做到这一点.我已经读过这个话题:在Linux中是否有像COM0COM这样的程序?答案建议使用socat.我尝试过这种方法,但它不起作用,我的应用程序没有检测到我刚刚在socat中定义的端口.

socat PTY,link=/dev/COM98 PTY,link=/dev/COM99
Run Code Online (Sandbox Code Playgroud)

我的理论是socat无法创建虚拟端口,它只能绑定现有端口.

我该如何解决这个问题?

谢谢!

编辑:

这是我在运行之前的socat命令后得到的.如果仔细观察,您会看到COM98和COM99端口位于/ dev /中.但是,如果我写入/ dev/COM98并使用tail -f跟随COM99,我不会从它获得任何输出.

在此输入图像描述

EDIT2:

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

在此输入图像描述

"

"

"

EDIT3:

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

例:

socat PTY,link=/dev/ttyS98 PTY,link=/dev/ttyS99
Run Code Online (Sandbox Code Playgroud)

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

woj*_*iii 6

socat -d -d pty,raw,echo=0 pty,raw,echo=0
Run Code Online (Sandbox Code Playgroud)

工作得很好并打印:

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]
Run Code Online (Sandbox Code Playgroud)

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

还是/ dev/COM9 {8,9}你可以使用的角色设备?

ls -l /dev/COM989 
Run Code Online (Sandbox Code Playgroud)

应该打印一个以c开头的模式,如果是这样的话.