0
저는 pyserial을 사용하여 mcu 보드에 큰 데이터 패키지를 보내고받습니다. 기본적으로 mcu는 ISR에서 바이트를 수신하고 즉시 전송합니다.Pyserial 일부 데이터가 손실됩니다
port = serial.Serial(
'COM12',
baudrate=921600,
timeout=0,
parity='N',
stopbits=1,
bytesize=8
)
msg1 = "z200f2000 126543f4 126543f4 126543f4 126543f4 126543f4 126543f4 126543f4 "
multi_msg = ""
for i in range(1000):
multi_msg = multi_msg + msg1 + str(i) + "\r\n"
port.reset_input_buffer()
port.reset_output_buffer()
ret1 = port.write(multi_msg)
print multi_msg
print ret1
ret2 = port.in_waiting
print ret2
rcv1 = port.read(port.in_waiting)
print repr(rcv1)
첫번째 문제는 입력 버퍼 (port.in_waiting) 바이트의 최대 수는 65536 바이트 (64킬로바이트)이라는 것이다. 즉 port.read (80000)를 사용하면 동일합니다. 항상 64KB를 읽으십시오. 이 제한 사항이 read()입니까?
또한 필자의 pyserial 스크립트는 일부 패키지를 잃어 버렸지 만 항상 그렇지는 않습니다 (약 10 % 실패). TeraTerm을 사용하여 대용량 파일을 보내면 모든 문제가 해결됩니다.
감사합니다.