3

私はプロジェクトに取り組んでいますが、コアについて議論する自由はありませんが、つまずきのブロックに達しました。データを C++ から他の言語 (できれば Java または Python) にリアルタイムで転送する必要があります (最大 10 ミリ秒のレイテンシー)。

C++ で解析する必要があるセンサーがあります。おそらく Java または C# (C# はよくわかりませんが、Java に似ているようです) を介して、Bluetooth を介してデータの読み取り/出力を行うことを計画しています。C++ は、必要な用途に使用するのに十分なほど進んでいないと感じているため、法案に適合しません。センサーの解析は既に終了しています。データ転送は同じマシンで行われます。

私が考えた方法は次のとおりです。

  • 私たちは、Mex が何であれ (私は MatLab を使用していません)、MatLab を使用して、C++ プログラムから関数にアクセスし、データを配列として取得しようとしました。Matlab は遅すぎます (TX/RX が 1 ~ 20 Hz に制限されるとどこかで読みました)。
  • データをテキストまたは他の同等の生データ ファイルに常に書き込み、必要に応じて他の言語で開く。

これを調べようとしましたが、結果には何も表示されませんでした。

4

2 に答える 2

1

1 つの Java アプリと他の複数のアプリ (Java、Python、R など) の間でセンサー データを共有しなければならないという同じ問題がありました。

最初にソケット接続を試みましたが、ソケット通信は耐障害性がありませんでした。1 つのアプリでの再起動または障害が他のアプリに影響を与えました。その後、それらの間で RMI 呼び出しを試みましたが、スケーラビリティーが原因で満足できませんでした。

私たちは、システムが信頼性が高く、スケーラブルで、分散型で、フォールト トレラントであることを望んでいました。最終的に、1 つのプロデューサーと複数のコンシューマーを作成した RabbitMQ の使用を開始しました。2年間よく頑張りました。Apache Kafka の使用を検討してください。

現在および近い将来のシステム要件に基づいて、ソケット パイプ、RMI 呼び出し、RabbitMQ、Kafka、Redis などのオプションがあります。

于 2016-05-28T06:00:06.497 に答える