2012-09-06 315 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は、シリアル受信用にネイティブOSドライバを使用します。 Windowsの場合、入力ドライバのサイズはデバイスドライバに基づいています。

可能であれば、デバイスマネージャの設定でサイズを大きくすることはできますが、最終的には十分速くデータを読み取るだけで済みます。

関連する問題