3

我正在尝试使用 D-Feet 为 ConnMan 发送 D-Bus 命令。D-Feet 说所有参数都应该在“Python 语法”中。

D-Bus 方法是这样描述的:

ConnectProvider(Dict of {String,Variant} provider) => (Object Path path)

我已经尝试过其中的每一个(Python 字典):

{u'Type': u'wifi', u'Mode': u'managed', u'SSID': u'testSSID', u'Security': u'WPA', u'Passphrase': u'test'}
{'Type': 'wifi', 'Mode': 'managed', 'SSID': 'testSSID', 'Security': 'WPA', 'Passphrase': 'test'}
{"Type": "wifi", "Mode": "managed", "SSID": "testSSID", "Security": "WPA", "Passphrase": "test"}
{"Type":__import__('dbus').String("wifi", variant_level=1),"Mode":__import__('dbus').String("managed", variant_level=1),"SSID":__import__('dbus').String("testSSID", variant_level=1),"Security":__import__('dbus').String("WPA", variant_level=1),"Passphrase":__import__('dbus').String("test", variant_level=1)}

但我不断收到错误“无效参数”:

在此处输入图像描述

我有 dbus-monitor --system 正在运行,所以我可以查看系统总线上发生的任何事情,但是当我单击“执行”时,实际上没有任何东西发送到总线。我立即得到错误,所以我假设 D-Feet 说输入的格式不正确。

我究竟做错了什么?我怎样才能发送这个命令?谢谢!

4

2 回答 2

6

我让它在 D-Feet 中作为“方法输入”工作到采用 a{sv} 的方法:

{"key": __import__('gi.repository.GLib', globals(), locals(), ['Variant']).Variant("s", "value")}
于 2014-06-17T13:44:50.940 回答
2

使用 d-feet 0.3.6,有一种方法无需显式导入 GLib。它可能对一些未来的读者有用。

对于带有参数签名的方法:

  • a{sv} 是 {String,Variant} 的字典

这是输入格式:

{<key> : GLib.Variant(<type-code>, <value>)}

具有多个键值对的一些示例:

{"key1" : GLib.Variant("s", "string value"),
 "key2" : GLib.Variant("b", False),
 "key3" : GLib.Variant("(di)", (1.2, 42))
}
  • key1 的值是一个包含字符串值的变体
  • key2 的值​​是一个包含布尔值的变量
  • key3 的值是一个包含 (double, int32) 结构的变体
于 2018-10-19T20:08:24.317 回答