我正在尝试使用D-Feet为ConnMan发送D-Bus命令。 D-Feet表示所有参数都应该是“Python语法”。
D-Bus方法由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运行所以我可以查看系统总线上发生的任何事情,但是当我点击'Execute'时,实际上没有任何东西被发送到总线。我立即得到错误,所以我假设D-Feet说输入的格式不正确。
我做错了什么?我该如何发送此命令?谢谢!
答案 0 :(得分:6)
我让它在D-Feet中工作为"方法输入"采用a {sv}:
的方法{"key": __import__('gi.repository.GLib', globals(), locals(), ['Variant']).Variant("s", "value")}
答案 1 :(得分:0)
使用d-feet 0.3.6,有一种方法无需显式导入GLib。 对于将来的某些读者可能会有用。
对于带有参数签名的方法:
以下是输入格式:
{<key> : GLib.Variant(<type-code>, <value>)}
一些具有多个键值对的示例:
{"key1" : GLib.Variant("s", "string value"),
"key2" : GLib.Variant("b", False),
"key3" : GLib.Variant("(di)", (1.2, 42))
}