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和以前的版本.
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开头的模式,如果是这样的话.
| 归档时间: |
|
| 查看次数: |
7526 次 |
| 最近记录: |