私はシリアル接続(pyserial)からラインを読み込んでいますが、私はwhileループを使ってラインを読み込み、その入力に対して一連の関数を実行してからオブジェクト(レンジファインダ)。入力をジェネレータとして扱う方法
私はシリアル入力をジェネレータとして扱うべきだと言われています。
誰もこの経験がありますか?
これは基本的にはどのように達成されるのか説明できますか?
なぜそれが良いですか?純粋に記憶/スピードですか?
EDIT:
at_end()
から来る:関数がない
? 私が取得しています:
AttributeError: 'Serial' object has no attribute 'at_end'
私は
while True:
yield source.readline()
を使用している場合、私は出力を得ます。
ジェネレータ関数は、このクラスとまったく同じことを 'def serial_reader(source):source.at_end():yield source.read()'です。少ないクラスで書く! –
@SvenMarnach、at_end()関数はどこから来たのですか?私は私のシリアル接続でそれを呼び出すことはできません。 – beoliver
Pythonのように見えるかもしれませんが、私はシリアルデータのためにこれをしたいという本当のシナリオを想像することはできません。シリアルデータは通常、ストリームから徐々にゆっくり入ってきます。それは頻繁に反復したいデータの塊のようなものではありません。シリアル回線でパケット化されたデータ形式を使用している可能性がありますが、シリアルで直接読み取りを行う場合は、その断片化を保存できません。ちょうどそれのために空想的ではない。あなたのバイトをループで読むことはおそらく大丈夫です。 – TJD