2013-06-24 282 views
1

好的,所以,我可能在这里错过了一些情节,但真的很喜欢一些帮助。我对开发等很陌生,现在已经到了需要实现DBus(或其他程序间通信)的地步。我发现这个概念有点难以理解。关于DBus的困惑

我的实现将是使用HTML网站来更改某些变量在另一个程序中使用,因此允许程序在其工作动态改变。我正在使用Raspbian在树莓派上做这件事。我正在运行一个网络服务器来托管我的网站,这是混淆的地方。

据我所知,DBus运行的服务允许您从另一个程序中的程序中调用方法。那么这是否意味着我的网站需要运行一个DBUS服务来允许我将它的方法调用到我的程序中?为了让事情复杂一点,我使用Python进行编码,所以我不确定是否可以在我的网站上运行一个Python脚本,它允许我运行DBUS服务。使用JavaScript会更好吗?

对于我来说,最合乎逻辑的解决办法是运行某种方式从不同的程序进口方法,可以通过其他人谁想要运行这些方法来查询一个DBUS服务。那可能吗?

帮助,将不胜感激! 提前谢谢!

+0

D-Bus服务必须作为Web服务器的一部分运行,还是Web脚本可以检查由单独的D-Bus服务存储的值? –

+0

要读取的值将位于我所托管的网页上,我所需要的只是能够运行一种方法来读取这些值,例如,如果我按下按钮。我在网络服务器上发现运行DBUS的问题,因为它们都需要运行一个无限循环,即服务 –

回答

0

这听起来像是你应该写一个孤立的d-巴士服务作为数据存储,并与它同步通讯在脚本中写入和读取值。您可以使用shelve在服务调用之间保留这些值。

tutorial中,“制作方法调用”部分包含同步调用,“导出对象”部分涵盖了大部分D-Bus服务。

1
  • 那么这是否意味着我的网站需要运行一个DBUS服务到 允许我从它调用方法到我的程序中?

dbus后台进程(守护进程)会在您的Web服务器上运行,是的。实际上dbus提供了两个守护进程。一个是系统守护进程允许 对象接收系统信息(例如,用于exampple打印机可用性) ,第二个是一般用户应用到应用IPC守护进程。这是你确定用于不同应用程序进行通信的第二个守护进程。

  • 我编码在Python,所以我不知道我是否可以运行在我的网站Python脚本 ,让我来运行DBUS服务。

有使用Python没有问题的; dbus具有许多语言的绑定(例如Java,perl,ruby,C++,Python)。 dbus对象可以映射到python对象。

  • 最合乎逻辑的解决办法是运行 某种方式从不同的程序进口方法,可以通过 别人谁想要运行这些方法查询单DBUS服务。那可能吗?

正确 - DBUS提供了一种机制,通过该客户端进程将创建DBUS对象或对象,允许该进程对其他DBUS感知过程等服务。