擅长:python、mysql、java
<p>很高兴我的评论有帮助!在</p>
<p>将超时设置为较低的数值,例如1秒。那就试试这样吧。它试图读取一个大的块,但超时很快,并且不会长时间阻塞。任何读过的内容都会被放入一个列表(rx_buf)。然后永远循环,只要还有待读取的字节。真正的问题是“知道”什么时候不需要更多的数据。在</p>
<pre><code>rx_buf = [ser.read(16384)] # Try reading a large chunk of data, blocking for timeout secs.
while True: # Loop to read remaining data, to end of receive buffer.
pending = ser.inWaiting()
if pending:
rx_buf.append(ser.read(pending)) # Append read chunks to the list.
else:
break
rx_data = ''.join(rx_buf) # Join the chunks, to get a string of serial data.
</code></pre>
<p>我把块放在列表中的原因是join操作比字符串上的'+='更有效。在</p>