3

D-Feet を使用して、ConnMan の D-Bus コマンドを送信しようとしています。D-Feet は、すべてのパラメーターは「Python 構文」にある必要があると述べています。

D-Bus メソッドは、D-Bus によって次のように説明されています。

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

私はこれらのそれぞれを試しました( Python dictionaries ):

{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

a{sv}を取るメソッドへの「メソッド入力」としてD-Feetでこれを機能させました:

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

d-feet 0.3.6 では、明示的に GLib をインポートしない方法があります。今後の読者の役に立つかもしれません。

引数シグネチャを持つメソッドの場合:

  • {String,Variant} の Dict である {sv}

入力形式は次のとおりです。

{<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 に答える