2016-08-09 9 views
2

私はデーモンを作成しました。デーモンはdbusインターフェースを提供し、そのメソッドの1つに(uu)というシグニチャーがあります。これは2つのuint32フィールドの構造体です。structをdbusメソッドに渡すツールはありますか?

構造体を渡すために、メソッドを呼び出すためのすぐに使えるツールはありますか? dbus-sendd-feetは役に立ちません。

任意のポインタ?

答えて

2

gdbusトリックを行う必要があります。次のようなものをお試しください:

gdbus call --session --dest com.example.MyTest --object-path /com/example/MyTest --method com.example.MyTest.Test "(1,2)" 

...あなたの状況に合わせて正しいパラメータを入力してください。

$ dpkg -L libglib2.0-bin | grep gdbus 
/usr/bin/gdbus 
/usr/share/bash-completion/completions/gdbus 
/usr/share/man/man1/gdbus.1.gz 
:私は libglib2.0-binパッケージで提供され gdbusによUbuntuの15.10マシンで

import gobject 
import dbus 
import dbus.service 

from dbus.mainloop.glib import DBusGMainLoop 
DBusGMainLoop(set_as_default=True) 


OPATH = "/com/example/MyTest" 
IFACE = "com.example.MyTest" 
BUS_NAME = "com.example.MyTest" 


class Example(dbus.service.Object): 
    def __init__(self): 
     bus = dbus.SessionBus() 
     bus.request_name(BUS_NAME) 
     bus_name = dbus.service.BusName(BUS_NAME, bus=bus) 
     dbus.service.Object.__init__(self, bus_name, OPATH) 

    @dbus.service.method(dbus_interface=IFACE, 
         in_signature="(uu)", out_signature="") 
    def Test(self, payload): 
     print "Got this from client:", payload 


if __name__ == "__main__": 
    service = Example() 
    loop = gobject.MainLoop() 
    loop.run() 

は、私はこのようなPythonのD-バスサービスを使用して、上記の呼び出しをテストしてみました

これが役に立ちます。

+1

はい。これは機能します。同様に 'd-feet'も(それが判明したように)行います。 –

関連する問題