シリアル入力をポーリングする方法は?

シリアル入力をポーリングする方法は?

そのため、設定されたフレームレート(10fpsな​​ど)で整数を送信するデバイスがあります。 USBケーブルを介して私のLinuxシステム(ubuntu 20.04)に接続され、ttyACM0として認識されます。この開発者をキャプチャし、受信した入力を表示できます。

しかし、私が望むのは、デバイスをポーリングする関数/スクリプトをcまたはbashに書き込むことです。したがって、理想的には99%の時間に新しい入力を受け取るとそれを読みます。それ以外の場合は何も返されませんが、ポーリングしてフレーム整数のいずれかを受け取った場合は値が返されます。

この問題を解決するための最良の方法は何ですか?フレームが受信されるたびにコールバックがトリガーされるように、イベント中心のアプローチはより良く正確ではありませんか?

ベストアンサー1

文字通り説明しました。pollシステムコール/libcラッパー関数。 C / C ++で直接使用することも、次の方法で使用することもできます。select基準寸法Pythonで。pollタイムアウト0を使用してください。

pollBashにはor機能はありませんselect。あなたがやっていることは、実際にはシェルスクリプトのアイデアに従いません。 (これが私が上記のPythonに言及した理由です。多くのユースケースでは、これはシェルスクリプトと同じくらい簡単なので、C ++またはCに頼らずにこの種のデータ処理をはるかに簡単にします。C ++またはCでデータを操作する) - 正しい自動ライフサイクル、タイプの安全性、実際のコンテナタイプ、C ++のより良いフロー制御は、あなたの人生をより簡単かつ安全にします)。

おすすめ記事