我有一个项目,其中包含一些单一的测试,用于使用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/don 98,并使用尾巴-f跟随COM99,我就得不到它的任何输出。

EDIT2:
好吧,如果我用cat代替尾巴,我可以看到输出(为什么?!)

‘
‘
‘
EDIT3:
解决方案:不命名端口COMxx,而是命名ttySxx!
示例:
socat PTY,link=/dev/ttyS98 PTY,link=/dev/ttyS99原因:一些串行通信库可能不支持其他名称,比如RXTX 2.X.X和以前的版本。
发布于 2014-05-26 11:29:56
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/pt/32,并从/dev/pt/33中读取。
您还可以使用/dev/COM9 9{8,9}字符设备吗?
ls -l /dev/COM989 应该打印以c开头的模式(如果是这样的话)。
https://stackoverflow.com/questions/23867143
复制相似问题