我想通過串口與手機通信。在給手機寫了一些命令後,我用ser.read(ser.inWaiting())
來得到它的返回值,但是我總是得到了1020 bytes
的字符,實際上,期望的回報應該是在50KB
之上。如何擴展pyserial的輸入緩衝區大小
我試圖設置ser.read(50000)
,但解釋器會掛起。
我該如何展開輸入緩衝區才能同時獲得所有的回報?
我想通過串口與手機通信。在給手機寫了一些命令後,我用ser.read(ser.inWaiting())
來得到它的返回值,但是我總是得到了1020 bytes
的字符,實際上,期望的回報應該是在50KB
之上。如何擴展pyserial的輸入緩衝區大小
我試圖設置ser.read(50000)
,但解釋器會掛起。
我該如何展開輸入緩衝區才能同時獲得所有的回報?
我猜你正在讀取1020個字節,因爲這是所有在緩衝區中,這是ser.inWaiting()返回的內容。根據波特率的不同,50 KB可能需要一段時間才能傳輸,或者電話預計會有與您不同的事情。握手?
檢查ser.inWaiting的值,然後檢查爲接收提示的內容。
我有完全相同的問題,包括1020字節的緩衝區大小,並沒有找到一種方法來改變這種情況。我的解決方案已經實現像一個循環:
in_buff=''
while mbed.inWaiting():
in_buff+=mbed.read(mbed.inWaiting()) #read the contents of the buffer
time.sleep(0.11) #depending on your hardware, it can take time to refill the buffer
,我會很高興,如果有人能拿出一個緩衝調整大小的解決方案!
pySerial使用本機操作系統驅動程序進行串行接收。在Windows的情況下,輸入驅動程序的大小基於設備驅動程序。
如果可能,您可以在設備管理器設置中增加大小,但最終只需要以足夠快的速度讀取數據。
可能是[OS設置](http://stackoverflow.com/a/10130825/673991)? –