2013-06-24 281 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感知過程等服務。