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)
第1の問題は、入力バッファ(port.in_waiting)の最大バイト数が65536バイト(64KB)であることです。 つまりport.read(80000)と同じです。必ず64KBを読みます。 この制限はread()ですか?
また、私のpyserialスクリプトはいくつかのパッケージを失うように見えますが、必ずしもそうではありません(約10%は失敗します)。 大きなファイルを送信するためにTeraTermを使用しても問題ありません。
ありがとうございました。