2012-06-14 73 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