代码之家  ›  专栏  ›  技术社区  ›  Bludzee

将对象作为参数传递给gdbus实用程序

  •  1
  • Bludzee  · 技术社区  · 8 年前

    我想调用方法 RegisterAgent 具有 gdbus 但我找不到正确的语法来这样做。

    反思 /org/bluez 使用此命令

    $ gdbus introspect --system --dest org.bluez --object-path /org/bluez --recurse
    

    显示该方法 注册代理 在接口上 org.bluez.AgentManager1 签名如下:

    RegisterAgent(in  o agent,
                  in  s capability);
    

    但我找不到任何例子说明如何通过 对象 中的方法 gdbus reference documentation ,也不是在我在互联网上找到的众多例子中。

    所以我不知道如何将代理作为第一个参数传递,例如,我想选择 KeyboardOnly 作为代理人,但如何做到这一点?

    具有 dbus-send ,这将提供:

    dbus-send --print-reply --system --dest=org.bluez /org/bluez \
        --type=method_call org.bluez.AgentManager1.RegisterAgent \
        objpath:/org/bluez/agent1 string:KeyboardOnly
    

    但我找不到如何用 gdbus公司 呼叫有什么想法吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Bludzee    8 年前

    我使用

    dbus-monitor  --system
    

    经过反复试验,我终于找到了正确的语法。

    gdbus call --system --dest org.bluez --method \
        org.bluez.AgentManager1.RegisterAgent --object-path /org/bluez \ 
        /org/bluez/agent KeyboardOnly
    

    所以 将对象作为参数传递给gdbus 例如,通过拼写其路径来完成 /org/bluez/agent 在我们的情况下。在我看来,这似乎没有记录在案。

    顺便说一下 dbus-send 命令拼写正确 几乎 相同的

    dbus-send --print-reply --system --dest=org.bluez /org/bluez \
        --type=method_call org.bluez.AgentManager1.RegisterAgent \
        objpath:/org/bluez/agent1 string:KeyboardOnly
    

    但对于代理对象路径/组织/蓝Z/ 代理1 对于 dbus发送 ,和just/org/bluez/ 代理人 对于 gdbus . 我认为这方面也没有记录。

    推荐文章