1

如何用socat创建一个虚拟端口?

我想测试 pyserial 通过一个端口进行读写

我已经尝试过:

socat -d -d pty,raw,echo=1 pty,raw,echo=1

它创建两个虚拟端口 /dev/pts/9 和 /dev/pts/10

当我尝试时:

ser.write('test\n')

在另一个控制台中,我尝试阅读:

ser2.readline()

超时时,pyserial 将 '\n' 读取为 '^J'

4

1 回答 1

3

^J是一样的\n,见维基百科。我无法重现您遇到的阻塞:

$ socat -d -d pty,raw,echo=1 pty,raw,echo=1
2012/06/14 14:29:13 socat[28866] N PTY is /dev/pts/3
2012/06/14 14:29:13 socat[28866] N PTY is /dev/pts/5
2012/06/14 14:29:13 socat[28866] N starting data transfer loop with FDs [3,3] and [5,5]

1号航站楼:

>>> import serial
>>> s = serial.Serial('/dev/pts/5')
>>> s.readline()
'hello\r\n'
>>> s.readline()
'hello\n'

2号航站楼:

>>> import serial
>>> s = serial.Serial('/dev/pts/3')
>>> s.write('hello\r\n')
7
>>> s.write('hello\n')
6

readline()一旦我在另一个终端中执行 write,调用就会返回。

于 2012-06-14T12:38:46.187 回答