1

私は、ADC MPC3008 を介して IR センサー (Sharp GP2Y0A21YK0F) からデータを取得し、PyQtgraph ライブラリを使用してリアルタイムで表示する Raspberry Pi 3 B を使用するプロジェクトで作業しています。

ただし、サンプルがほとんど得られていないようで、グラフは期待どおりに「滑らか」ではありません。

Adafruit Python MCP3008 ライブラリと関数mcp.read_adc(0)を使用してデータを取得しています。

Pythonでサンプルレートを測定する方法はありますか?

ありがとうございました

ウーゴ・オリベイラ

4

1 に答える 1

0

理想的にはマルチプロセッシングを介して、次のレベルのバッファリングを設定することをお勧めします(マルチプロセッシングとGUIの更新を参照してください-Qprocessまたはマルチプロセッシング?)データにアクセスできる速度をより適切に把握できます。現在、QTimer を使用してポーリングしていますが、これは 50 ミリ秒ごとに 3 つの生の読み取りしか取得していないため、タイマーを介して人為的に自分自身を本当に制限しています。私は MCP3008 を使用していませんが、それらのコードの一部をざっと見てみると、いくつかのことを試したり、より良いドキュメントを得るためにさらに調査したりするために、いくつかのサンプル テストを設定する必要があるようです。問題は mcp.read_adc(0) メソッドの動作であり、それはブロッキングかノンブロッキングか...ノンブロッキングの場合、新しいデータがない場合は古いデータを返しますか...など.理想的ですタイミング感覚からブロックされている場合は、それにループを設定し、連続して返されるたびにタイムデルタを設定して、新しいサンプルを取得できる速さを判断できます。ノンブロッキングなら、新しいサンプルがない場合は null を返し、何かを返す場合は新しいサンプルのみを返すようにします。それをいじって、どのように動作するかを確認する必要があります。いずれにせよ、mcp.read_adc(0) をポーリングするだけのようにセカンダリ スレッドを設定したら、 update() タイマーを使用して最新のバッファを収集し、プロットすることができます。また、RaspPI でのマルチスレッド/マルチプロセッシングの意味もわかりません (ここで一般的な議論を参照してください:Multiprocessing vs Threading Python ) ですが、QTimer ポーリングよりも優れているはずです。

于 2016-11-14T07:08:28.930 に答える