2012-06-14 51 views
1

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

回答

3

^J相同\n,见Wikiepdia。正如我在其他终端执行写

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

readline()调用返回尽快:我无法重现阻止你体验:

$ 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号航站楼。

+0

我使用/ dev/pts/9通过两个终端写入和读取,即时成功将数据写入/ dev/pts/9,但未能读取其他终端中的数据。在你的例子中你使用了两个端口,但我只想使用一个端口(dev/pts/9) – Alvin

+2

@Alvin串行不能这样工作,你需要两个虚拟连接的端口 – mensi