2012-09-06 47 views
6

我想通過串口與手機通信。在給手機寫了一些命令後,我用ser.read(ser.inWaiting())來得到它的返回值,但是我總是得到了1020 bytes的字符,實際上,期望的回報應該是在50KB之上。如何擴展pyserial的輸入緩衝區大小

我試圖設置ser.read(50000),但解釋器會掛起。

我該如何展開輸入緩衝區才能同時獲得所有的回報?

+0

可能是[OS設置](http://stackoverflow.com/a/10130825/673991)? –

回答

1

我猜你正在讀取1020個字節,因爲這是所有在緩衝區中,這是ser.inWaiting()返回的內容。根據波特率的不同,50 KB可能需要一段時間才能傳輸,或者電話預計會有與您不同的事情。握手?

檢查ser.inWaiting的值,然後檢查接收提示的內容。

3

我有完全相同的問題,包括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 

,我會很高興,如果有人能拿出一個緩衝調整大小的解決方案!

0

pySerial使用本機操作系統驅動程序進行串行接收。在Windows的情況下,輸入驅動程序的大小基於設備驅動程序。

如果可能,您可以在設備管理器設置中增加大小,但最終只需要以足夠快的速度讀取數據。