2012-06-14 1 views
1

socat을 사용하여 하나의 가상 포트를 만드는 방법은 무엇입니까?하나의 가상 직렬 포트와 socat

은 내가 이미 시도하고있어 읽고 하나 개의 포트

를 통해 작성 pyserial 테스트 할 : PTS/

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

는 두 개의 가상 포트는/dev를 생성/9/dev에/점/내가 시도있을 때 10

:

ser.write('test\n') 

다른 콘솔에서, 나는 읽으려고 해요 :

ser2.readline() 

'^ J'

답변

3

^J로서 '\ n'타임 아웃 pyserial 판독 \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() 호출이 반환 최대한 빨리 다른 터미널에 쓰기를 실행한다.

+0

저는/dev/pts/9를 사용하여 두 터미널을 통해 읽고 쓰고,/dev/pts/9에 데이터를 쓰려고했지만 다른 터미널에서 데이터를 읽지 못했습니다. 귀하의 예제에서는 두 가지를 사용하지만, 하나의 포트 (dev/pts/9)를 사용하고 싶습니다. – Alvin

+2

@Alvin 시리얼은 그런 식으로 작동하지 않습니다. 가상으로 연결된 두 개의 포트가 필요합니다 – mensi