1

私はpyserial 2.6でpython 2.7.2を使用しています。eol の「\n」以外の文字を持つデバイスと通信するときに pyserial.readline() を使用する最良の方法は何ですか? pyserial docは、pyserial.readline() が python 2.6+ で 'eol=' 引数を取らないことを指摘していますが、次のように io.TextIOWrapper を使用することを推奨しています: ser = serial.serial_for_url('loop://', timeout=1 ) sio = io.TextIOWrapper(io.BufferedRWPair(ser, ser))

ただし、python io.BufferedRWPair docは、そのアプローチに対して具体的に警告し、「BufferedRWPair は、その基になる生ストリームへのアクセスを同期しようとはしません。リーダーとライターと同じオブジェクトを渡す必要はありません。代わりに BufferedRandom を使用してください。」

誰かが「eol」以外の eol で動作する pyserial.readline() の実例を指摘できますか?

ありがとう、トム

4

2 に答える 2

0

read()には、読み取るデータの最大サイズ(ビット単位)がユーザー設定可能です。データ文字列が予測可能な長さである場合は、固定長の文字列をキャプチャするように設定するだけです。実行中は一種の「ケンタッキーウィンデージ」ですが、データ文字列のサイズが一貫している限り、問題は発生しません。

それを超えて、あなたの本当のオプションは、データストリームをキャプチャして別のファイルに書き込み、エントリを手動/プログラムで分割することです。

たとえば、データストリームを.csvファイルに書き込み、区切り文字をEoL文字に調整できます。

于 2012-10-17T22:45:40.037 に答える