2017-06-21 79 views
1

几周前,我决定为我的家建立一些覆盆子pi项目。因为我意识到我需要同样的sensordata来实现多功能应用,所以我将传感器放在一个单独的过程中。通过将这个过程连接到DBus,我可以用我的其他应用程序读取sensordata。当我通过ssh -X选项连接到我的raspberrypi时,此功能非常有用,我在此共享xserver。如果我不共享xserver,则会收到错误消息:用于传感器数据连接的DBus

无法连接到D总线会话总线。 要启动它,运行:

eval `dbus-launch --auto-syntax` 

当然,我试图运行这使错误消失命令eval dbus-launch --auto-syntax,但我仍然可以不通过的DBus访问数据。

出了什么问题?我无法在没有xserver的情况下启动DBus应用程序吗?如果我可以在没有xserver的情况下启动我的传感器进程将会很好,因为我想在init.d中将它作为服务启动。

有没有人有类似的问题?

回答

1

Can't I start a DBus application without the xserver?

当然,应用程序只需要知道总线地址。对于会话总线,这意味着需要设置DBUS_SESSION_BUS_ADDRESS环境变量(X11确实可用作自动启动会话的回退方法,但环境变量是连接到现有环境的正确方法)。

在你的情况下,我会考虑使用系统总线:这听起来像传感器API的正确位置,嵌入式设备真的不需要多于一条总线。使用系统总线,即使在通过SSH连接时也不需要设置地址(但可能需要确保服务策略允许应用程序用户向服务发送消息)。

+0

谢谢你的回答。设置'DBUS_SESSION_BUS_ADDRESS'环境变量确实能解决我的问题。 后来我也看看系统总线了。 – andrew28349