3

私は現在計画段階にあり、助けを借りることができます. さまざまなモジュール(i2C、USBなど)が接続されたラズベリーパイを使用します。これらは、温度、風速、方向などを測定するモジュールなど、何でもかまいません.

アイデアは、各モジュールに独自のデーモンを実行させることです。このデーモンは、要求に応じてメイン プログラムにデータを供給します。または、メイン プログラムがデーモンに再起動を要求することもできます。

これはすべて、ネットワーク経由ではなく、ラズベリー パイ上で行われます。

私の質問は、メイン プログラムとデーモンの間の通信に何を使用するかです。私はdbusの使用について読んでいますが、最後の手段として使用すると言っている人がかなりいます。

私はしばらく研究してきましたが、他の(おそらくより簡単な)方法を思いつくことができませんでした。

補足として、それらを分離するという考えは、モジュールに問題がある場合、メインプログラムに影響を与えずに簡単に再起動できるためです。

4

3 に答える 3

2

ZeroMQ を調べます。ステロイドのソケットです。

使い始めるのは簡単で、同じプロセス内のスレッド間、または異なるプロセス間の通信に最適です。ZMQ は、マルチスレッドとプロセス通信が通常意味する多くの問題を取り除きます。

socket.bind「メインプログラム」とsocket.connectクライアントで使用するだけです。

あなたの場合、サーバーがサブスクライブし、クライアントがパブリッシュする、一方向の通信であることを意味する Pub-Sub パターンに興味があるようです。

それ以外の場合は、Req-Router-Dealer-Rep パターンに興味があるかもしれません。

http://www.zeromq.org/

于 2013-04-10T17:24:27.893 に答える
-3

アプリケーションが実行するすべてのジョブを、その 1 つのジョブのみを実行する個別の個別のプログラムとしてプログラムし、シェルを介して相互にパイプするか、メインで必要なときにそれぞれを呼び出す必要があるという考え方があります。プログラム。

必要に応じてバックグラウンドで実行されているいくつかのプログラム(愛すべきもの)が強制終了され、ポーリングが容易になります。

車輪を再発明する必要はありません。

于 2013-04-10T15:07:35.787 に答える