0
나는 바보 같은 파이썬 문제가 있습니다. 내가 대체 그러나 경우,pyserial, if 및 file 읽기
import serial
from time import sleep
port = "/dev/tty.usbserial-A400fYTT"
speed = 57600
polarfile = 'polarfile.pg'
f = open(polarfile, 'r')
ser = serial.Serial(port, speed, timeout=0)
while True:
data = ser.read(9999)
if len(data) > 0:
if(data == 'READY'):
f.readline()
else:
sleep(0.5)
sleep(1)
ser.close()
을하지만이 작동하지 않습니다 내가 직렬 연결에서 '준비'메시지가 파일마다에서 선을 읽으려고
그래서 나는이 쓴 제 (데이터는 인쇄 데이터에 의해 'READY'블록. 나는 준비 메시지가 ==합니다.
또한 내가 f.readline() 내 파일을 읽을 수 ... 평에 조언을 제공하는
감사합니다 초보자
- 편집 : 중요 정보, 직렬 "READY"메시지를받을 수 있지만 다른 무리가 있지만 "준비"메시지를받은 경우에만 반응하고 싶습니다.
좋아, 문제를 발견 한 것 같습니다. 이것은 파이썬 코드에는 문제가 아니지만 직렬 회선에서 수신 된 메시지입니다. "READY"가 아니라 "READY \ n"또는 다른 새로운 줄 내용과 같이 더 복잡한 문자열입니다. 나는 어느 것을 발견했는지 알 수 없습니다. 죄송합니다. –
스크립트가 줄 바꿈 문자 나 다른 메시지와 같이'READY''보다 더 많은 데이터를받는 경우에 대비하여': READY '데이터에':'를 사용할 수 있습니다. 또 다른 (전통적인) 방법은 한 번에 한 문자를 0이 아닌 시간 초과 값으로 읽고 "READY"메시지를 점진적으로 작성하고 일치하지 않을 때 다시 시작하는 것입니다. –
'data = ser.read (9999)'를'data = ser.readline (9999)'로 바꿔 줘서 고마워. if (data == 'READY') :'if (data.startswith ('READY')) :'그리고 지금 작동 함 :) –