2012-06-28 4 views
1

동일한 직렬 포트에서 쓰고 읽고 있습니다. 여기에 문제가 무엇 :파이썬 pyserial 직렬 포트에 두 번 이상 쓰고

나는 아래의 코드처럼, 다른 후 직렬 포트 하나에 쓰기 :

import serial 
import array 


rec = serial.Serial() 
trans = serial.Serial() 

rec.port = "/dev/ttyUSB0" 
rec.baudrate = 9600 
rec.timeout = 0.5 
rec.open() 

trans.port = "/dev/ttyUSB0" 
trans.baudrate = 9600 
trans.timeout = 0.5 
trans.open() 


if trans.isOpen(): 
    trans.write("\xFE\x1D\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE2")  
    trans.write("\xFE\x1D\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE3") 

while rec.isOpen(): 

response = rec.readline() 


etc. etc. etc 

을만큼 루프가 회전하는 동안, 나는 첫 번째 전송 된 문자열을 읽는 유지한다. 또한 난 그냥 while 루프 후 데이터를 보내려고 : (I 삭제하지 않았다 if 문) 나는 시리얼 포트에서 읽을 무엇

while rec.isOpen(): 
    trans.write("\x00\x00") 
    response = rec.readline() 

는 여전히 :
"\ XFE \ x1D \ XFF \ XFF \ xFF \ xFF \ xFF \ xFF \ xFF \ xFF \ xFF \ xFF \ xFF \ xFF \ xFF \ xFF \ xFF \ xFF \ xFF \ xFF \ xFF \ xFF \ xE2 "

첫 번째 데이터가 아닌 다른 데이터를 보낼 수 없습니다. 왜 그런가? 어떻게해야합니까?

참고 또한 while 루프에서 I 두번 읽으려고 : 응답 = rec.readline() 응답 = rec.readline()

이때, I는 I 판독 어레이를 인쇄 할 때, 그것을 prints [] 나는 아무 것도 읽을 수 없다는 것을 의미합니다. 감사합니다.

EDIT : 이제 두 개의 다른 USB 포트 ttyUSB0 및 ttyUSB1을 사용하여 내 문제가 해당 상황과 관련이 있는지 확인합니다. 그러나 같은 항구에서 글을 쓰거나 읽는 것이 잘못된 것은 아닙니다.

답변

0

포트 구성 오류 일 수 있습니다. 당신은 내가 줄 바꿈을 보지 못했다 적절한 값

ser = serial.Serial(
    port='/dev/ttyUSB0', 
    baudrate=9600, 
    parity=???, 
    stopbits=???, 
    bytesize=???) 
+0

불행히도, 내 문제를 해결하지 못했습니다. –

0

을 설정해야합니다, 그래서 당신은 rec.read (바이트) 또는 \의 0D의 \의 0A 또는 뭔가 마무리 라인을 시도해야합니다.

http://pyserial.sourceforge.net/shortintro.html#readline

+0

흠, 내가 읽은 (바이트) 내 문제를 해결하지 못했지만 두 번째 제안을 시도하지 않았다. 그것은 문제에 대한 해결책 일지 모르지만 나는 그것이 내게 튼튼한 해결책이 아니라고 설명했다. 왜냐하면 내 코드가 끝나면이 코드로 포트에 데이터를 보내지 않기 때문입니다. 나는 데이터를 보낼 센서를 가지고 읽을 것이고 어떤 종류의 EOL 데이터도 보내지 않을 것이다. 다른 제안? –

+0

또한 내 센서 데이터의 길이가 수정되지 않을 것이라고 언급하는 것을 잊어 버렸습니다. –

+0

아마도 바이트 단위로 입력을 관리해야 할 것입니다 ... –

관련 문제