如何用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'
^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,调用就会返回。