特定のサイズのデータを特定の時間中にシリアルポートで待たなければなりません。この時間のデータが少なくなった場合は、データを読み込まないようにしたいと考えています。早い時期に十分なデータが得られれば、それらを読んでデータを待つのをやめてみたいと思います。Pythonで特定の時間中にシリアルポートでデータを待っています
私の現在のソリューションは、次のようになります。
serial.open()
start_time = time()
while serial.in_waiting < expected_data_size: # waiting certain size of data
if time_to_wait < time() - start_time: # time is expired
serial.close()
return
data = serial.read(expected_data_size)
serial.close()
しかし、私はそれを待つ間の比較(「しばらく」でとブロック「の場合」)は、多くの時間を発生するので、それは、良い解決策ではないと思いますデータ。
私は、Python 3でよりうまく実装する方法を教えてください。シリアルポートで作業するには、pySerialを使用してください。
ありがとうございます!
感謝を!これはまさに私が必要なものです!もう1つ教えていただけますか?私は最初のN秒間、私はどんな場合でも十分なデータを受け取らないことを知っています。 ser.read(data_size)の前にsleep(N)を追加する価値はありますか? –
@RomanAlexeev、あなたは睡眠を追加する必要はありません、APIはあなたのためにそれを処理します。 – Windchill
ありがとうございました! –