2011-10-18 16 views
2

私はデータストリームを連続的に取得し、UDP経由でリアルタイムで別のコンピュータに送信するCプログラムを持っています。私が当初計画していた基本的な枠組みが築かれました。また、取得しているデータをリアルタイムで視覚化したいと思います。そのために、Pythonとそのさまざまなプロットライブラリを使用することを考えていました。私の質問は、Pythonが私のCプログラムの最初の、最初の循環バッファであるものにアクセスできるようにすることがどれほど難しいかということです。具体的には、このバッファに1024個のサンプルがあるとします。 "PythonにダイナミックC配列の連続的なピークがある"という考えは合理的/可能なものでさえ聞こえますか?そうでない場合、どのようなプロットオプションがこの問題に最も適していますか?python、plotting and c api

ありがとうございました。

答えて

0

可能ですが、あまり簡単ではありません。

あなたはAPIについて自分自身に知らせて、いくつかの実装を見てください。

これを実行した場合は、生の配列を見るだけでなく、正しい順序と長さ(環状バッファの場合)で再アセンブルする機能を提供することもできます。それでもデータをコピーする必要があるので、これは非常に便利です。

1

標準socketモジュールを使用すると、UDPポートを簡単に聞くことができます。 Examplesが利用可能です。

最初のステップとして、リストがデータを追加するために最適化されるため、データは単純なPythonリストに入れられます。最初の要素を削除するのには時間がかかりますので、時々これを行うだけで、リストの最後の1024個の要素だけをプロットすることができます。

プロットは、有益なMatplotlibプロットライブラリで便利に行うことができます。matplotlib.pyplot.plot(data_list)。あなたはリアルタイムで欲しいので、animation examplesが役に立つかもしれません。

あなたはデータ収集速度を最適化する必要がある場合は、(も有名)NumPy配列-操作ライブラリを直接numpy.frombuffer()で、数字の配列(matplotlibのは、そのようなアレイをプロットすることができます)としてストリームからのデータを解釈することができfunction

+0

ありがとうございました。私は実際にC:[DISLIN](http://www.dislin.de/)から直接呼び出すことができる非常にシンプルだが強力なプロットライブラリを見つけた – dataman

+0

これは解決策のように聞こえる!これを使って答えを書いて、それを受け入れられた答えとすることができます。 :) – EOL