由于 QDBusRawType,dbus-send 失败

Posted

技术标签:

【中文标题】由于 QDBusRawType,dbus-send 失败【英文标题】:dbus-send fails due to QDBusRawType 【发布时间】:2021-09-29 01:21:07 【问题描述】:

服务的自省为我感兴趣的方法返回以下内容

method bool org.my.connectionInterface.sendParam(QDBusRawType::(is param))

但是,当我尝试发送消息时,我收到此错误

dbus-send --system --print-reply --dest=org.my.connectionInterface /Connection1 org.my.connectionInterface.sendParam int32:1 string:"jolly-string"

Error org.freedesktop.DBus.Error.UnknownMethod: No such method 'sendParam' in interface 'org.my.connectionInterface' at object path '/Connection1' (signature 'is')

我可以调用没有参数或简单参数类型的方法,所以,我认为问题出在 QDBusRawType 上。有没有办法将参数包装在 QDBusRawType 中?

【问题讨论】:

自省 XML 是什么样的? 【参考方案1】:

我不希望int32:string: 是必需的,因为该方法具有is 的签名,因此它知道第一个参数是int32,第二个参数是string

dbus-send --system --print-reply --dest=org.my.connectionInterface /Connection1 org.my.connectionInterface.sendParam 1 "jolly-string"

如果这不起作用,您能否使用以下输出更新您的问题:

busctl introspect SERVICE OBJECT [INTERFACE]

【讨论】:

以上是关于由于 QDBusRawType,dbus-send 失败的主要内容,如果未能解决你的问题,请参考以下文章

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

dbus-send与QDBusAbstractInterface的对应关系

使用 dbus-send 关闭 Linux

无法获得对 dbus-send 的任何回复

使用 dbus-send 调用 GetAll

如何通过 dbus-send 发送方法调用?