使用 dbus-send 设置/获取属性

Posted

技术标签:

【中文标题】使用 dbus-send 设置/获取属性【英文标题】:set/get property using dbus-send 【发布时间】:2018-07-16 20:47:43 【问题描述】:

我制作了下面的示例 xml,需要一些帮助来形成 dbus-send 命令来设置/获取属性“状态”。我知道如何调用方法,但无法使用 dbus-send 读取/写入属性。

xml:

<node>
    <interface name="com.pgaur.GDBUS">
        <method name="HelloWorld">
            <arg name="greeting" direction="in" type="s"/>
            <arg name="response" direction="out" type="s"/>
        </method>
        <signal name="Notification">
            <arg name="roll_number" type="i"/>
            <arg name="name" type="s"/>
        </signal>
        <property name="Status" type="u" access="readwrite"/>
    </interface>
</node>

【问题讨论】:

【参考方案1】:

您可以使用以下 dbus-send 命令获取/设置 DBus 接口的 DBus 属性。将 $BUS_NAME 和 $OBJECT_PATH 替换为各自的名称。

获取属性:

dbus-send --system --dest=$BUS_NAME --print-reply $OBJECT_PATH \
org.freedesktop.DBus.Properties.Get string:com.pgaur.GDBUS string:Status

设置属性:

dbus-send --system --dest=$BUS_NAME --print-reply $OBJECT_PATH \
 org.freedesktop.DBus.Properties.Set string:com.pgaur.GDBUS string:Status variant:uint32:10

您可以阅读 DBus specification 以了解有关 DBus 属性的更多信息。

【讨论】:

【参考方案2】:

dbus-send --system --print-reply --type=method_call --dest=org.ofono /gemalto_0 org.ofono.Modem.SetProperty string:"Powered" variant:boolean:false

【讨论】:

OP 知道如何调用方法,但不知道如何获取/设置属性。

以上是关于使用 dbus-send 设置/获取属性的主要内容,如果未能解决你的问题,请参考以下文章

如何使用字符串属性路径获取/设置属性值?

如何获取默认打印机属性设置

回炉重造JQuery 获取和设置元素内容/属性

使用 Knockoutjs 获取设置值属性

你能在不调用 org.freedesktop.DBus.Properties.Get 的情况下检索 D-Bus 属性吗?

如何使用会话属性值执行查询获取和设置数据