0

これが話です。

車両シミュレーターを実行する Visual C++ コードがあります。シミュレーターは車両の状態をベクトル形式でキャプチャし、キーボードまたは手動 (コードを介して) から制御入力 (ステアリング角度、ペダルなど) を受け取ることができます。私の目的は車両制御を自動化することですが、Python で制御クラスを実装しました。

車両の状態を C++ コードから python クラスに入力したいのですが、そこで何らかの処理が行われます。次に、Python クラスは対応する制御入力を出力し、C++ コードで受信する必要があります。

これを達成する簡単な方法はありますか?同様の投稿を読んだことがありますが、どれも明確ではありませんでした。

私が考えた 1 つの方法は、ファイルを使用することです。両方のクラスがファイルの読み取りと書き込みを行い、そこから車両の状態と制御入力を取得しますが、これには面倒な同期の問題が発生する可能性があります。

パイプラインも実行可能ですが、シンプルなソリューションを提供できない限り、非常に複雑に見えます:) :)

肝心なのは、相互にデータを交換しながら、C++ クラスと python クラスを同時に実行したいということです。

前もって感謝します!

4

3 に答える 3

1

2 つのプログラムを同時に実行する必要がある場合、それを行う簡単な方法はなく、2 つの別個のプロセス間に非同期通信メカニズムを実装する必要があります。

これを実現する 1 つの方法は、ソケットを使用することです。そうすれば、必要に応じてコントローラーと C++ アプリケーションを別のマシンで実行できます。

C++ 側ではboost::asio 、Python 制御アプリケーションからメッセージを読み取り、応答を送信するためにアプリケーションをベースにすることができます。参照:ブースト Asio

Python 側については、次を参照してください: Python sockets HowTo

ノート:

boost::pythonPython から C++ を、C++ から Python を呼び出すことができます。

SWIGPython から呼び出せるように C++ クラスをラップするためにも使用できます。

于 2013-04-12T08:51:26.453 に答える
0

それを試していただけますかctypes(ここを参照)。

C++ から Python で何かを呼び出すには、Python APIを使用できます。

于 2013-04-12T08:30:50.883 に答える