2012-02-17 13 views
1

私たちは特定のハードウェアセットとのインターフェースを必要とするプロジェクトに取り組んでいます。 1つのセットはC#を使用して非常に簡単に制御でき、もう1つはPythonを使用してネイティブにプログラムされています。プロジェクトの一部には、Python上で動作するハードウェアをC#経由のハードウェアと通信させることが含まれています。残念ながら、時間的制約のため、他のハードウェアセットを制御するC#またはPythonソフトウェアを作成することはできません。同じマシンでホストされているC#とPythonアプリケーションの間の通信

Python上で動作するハードウェアのセットは、ハードウェアによって特定の条件が満たされたときに呼び出される関数をプログラムできるという点で、完全にイベントベースです。私たちの考えは、他のハードウェアセットを制御するC#アプリケーションを変更して(Application.Run()のようなものを使用して)Pythonアプリケーションをホストし、イベントがハードウェアから来るときに関連するデータをC#アプリケーションに伝播するようにプログラムすることでした。

私たちは、C#とPythonの両方がそのように働くように(つまりPythonの主張によれば)非常に簡単であるため、ソケット接続を使用して両者間の通信を処理することを検討しています。この問題の最大の問題は、両方のプログラムが同じマシン上でホストされるという事実に問題があるかどうかということです。

  • パイプ/名前付きパイプ
  • :これは問題にならない場合我々はまた、次のエリアにいくつかの研究を行ってきたように0MQ

    として、我々は、おそらく共有ライブラリを使用して終了ですメッセージ

  • 共有メモリ

をキューに基本的に、我々はこれらの言語で実装するのが最も簡単されるこれらの方法(または任意の他のもの)を知りたい、と最高のパフォーマンスを提供します。我々は、の速度の精度のデータ(ネットワークパケットを使用している場合は、最も少なくなるもの)のみに関係しています。セキュリティは問題ではありません。

理想的には、PythonアプリケーションからC#アプリケーションへの1つのデータストリームと、C#アプリケーションからPythonアプリケーションへの2つのデータストリームが必要です。ホストマシンはWindows 7を実行します。必要に応じて追加情報を提供できます。

答えて

1

1つの方法は、IronPythonを試してみることです。 IronPythonは.NET言語であるため、C#コードとの通信は簡単に行うことができます。

IronPython上で既存のPythonコードを実行するのがどれほど難しいかを調べる価値があるようです。

関連する問題