将结构传递给dbus方法的工具?

问题描述:

我创建了一个守护进程。守护进程提供了一个dbus接口,其中一个方法具有这样的签名(uu) - 这是两个uint32字段的结构。将结构传递给dbus方法的工具?

是否有一个准备好使用的工具来调用该方法来传递结构? dbus-sendd-feet似乎没有帮助。

任何指针?

gdbus应该做的伎俩。尝试相当于:

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

...与您的情况当然正确的参数。

我测试过上面使用Python的d-巴士服务这样的电话:

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() 

在Ubuntu 15.10机器我在gdbuslibglib2.0-bin包提供:

$ dpkg -L libglib2.0-bin | grep gdbus 
/usr/bin/gdbus 
/usr/share/bash-completion/completions/gdbus 
/usr/share/man/man1/gdbus.1.gz 

希望这会有所帮助。

+1

是的。这工作。和“d-feet”一样(事实证明)。 –