我有一个项目,包含一些单一的testing用于testing使用COM端口(在Windows中)的串行通信。 我使用com0com创build一个虚拟的有界端口对并执行testing。
但是我不知道如何在Linux下做到这一点在MACOS中。 我读过这个话题: 在Linux有没有像COM0COM程序? 答案build议使用socat。 我已经尝试了这种方法,但它不起作用,我的应用程序没有检测到我在socat中定义的端口。
socat PTY,link=/dev/COM98 PTY,link=/dev/COM99
我的理论是socat不能创build虚拟端口,它只能绑定已有的端口。
我该如何解决这个问题?
谢谢!
编辑:
这是我运行以前的socat命令后得到的。 如果仔细观察,您会看到COM98和COM99端口位于/ dev /中。 但是,如果我写入/ dev / COM98并使用tail -f跟随COM99,我不会得到任何输出。
EDIT2:
那么,如果我使用猫而不是尾巴,我可以看到输出(为什么?!)
“
“
“
EDIT3:
解决scheme:不要命名端口COMxx,而是ttySxx!
例:
socat PTY,link=/dev/ttyS98 PTY,link=/dev/ttyS99
原因:某些串行通信库可能不支持其他术语,如RXTX 2.XX和以前的版本。
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开头的模式,如果是这样的话。