2017-06-21 14 views
1

数週間前、私は自宅用のいくつかのラズベリーパイプロジェクトを構築することに決めました。私がマルチアプリケーションのために同じセンソデータを必要とすることを認識したので、私はセンサーを単一のプロセスに入れました。このプロセスをDBusに接続することで、他のアプリケーションでsensordataを読み取ることができます。これは、私がxserverを共有するssh -Xオプションを使用して自分のraspberrypiに接続しているときに非常にうまく動作します。 xserverを共有しないとエラーが表示されます。センサーデータ接続用DBus

Dバスセッションバスに接続できません。 は、それを起動し実行するには:

eval `dbus-launch --auto-syntax` 

は確かに私は、エラーが消え作らコマンドeval dbus-launch --auto-syntaxを実行しようとしたが、私はまだDバス上のデータにアクセスすることができませんでした。

どうしたのですか? xserverなしでDBusアプリケーションを起動できませんか?私がinit.dでサービスとして起動したいので、xserverなしで私のセンサープロセスを開始できたら大丈夫です。

擬似的な問題を抱えている人はいますか?

答えて

1

確かに、アプリケーションはバスアドレスを知る必要があります。セッションバスの場合は、DBUS_SESSION_BUS_ADDRESS環境変数を設定する必要があります(セッションを自動起動する代替方法としてX11を使用できますが、環境変数は既存の方法に接続する正しい方法です)。

あなたの状況で私はシステムバスの使用を検討します:センサーAPIの正しい場所のように聞こえますが、組み込みデバイスは実際には複数のバスを必要としません。システムバスを使用すると、SSH経由で接続する場合でもアドレスを設定する必要はありません(ただし、サービスポリシーにより、アプリケーションユーザがメッセージをサービスに送信できるようにする必要があります)。

+0

ありがとうございます。 'DBUS_SESSION_BUS_ADDRESS'環境変数を設定すると、私の問題は本当に解決されます。 後でシステムバスも見ていきます。 – andrew28349

関連する問題