一个带有socat的虚拟串口

时间:2012-06-14 10:01:40

标签: python pyserial socat

如何使用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'

1 个答案:

答案 0 :(得分:3)

^J\n相同,请参阅Wikiepdia。我无法重现您遇到的阻止:

$ 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()调用就会返回。