Linux 将struct传递给dbus方法的工具?

Linux 将struct传递给dbus方法的工具?,linux,dbus,Linux,Dbus,我已经创建了一个守护进程。守护进程提供了一个dbus接口,其中一个方法具有如下签名(uu)——这是由两个uint32字段组成的结构 是否有一个现成的工具供我调用该方法,以传入结构dbus发送和d-feet似乎没有帮助 任何指针?gdbus都可以。尝试以下等效方法: gdbus call --session --dest com.example.MyTest --object-path /com/example/MyTest --method com.example.MyTest.Test "(

我已经创建了一个守护进程。守护进程提供了一个dbus接口,其中一个方法具有如下签名
(uu)
——这是由两个
uint32
字段组成的结构

是否有一个现成的工具供我调用该方法,以传入结构
dbus发送
d-feet
似乎没有帮助


任何指针?

gdbus
都可以。尝试以下等效方法:

gdbus call --session --dest com.example.MyTest  --object-path /com/example/MyTest --method com.example.MyTest.Test "(1,2)"
。。。当然,有适合您情况的正确参数

我已经使用Python D-Bus服务测试了上述调用,如下所示:

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机器上,我使用的
gdbus
libglib2.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

希望这有帮助。

是的。这很有效。和d型脚一样(事实证明)。