2

python3.4 と pyqt5.4 を使用して Java で記述されたデーモンに対して dbus 呼び出しを実行しようとしています。呼び出しているメソッドのデーモンの署名は次のとおりです。asa{sv}

私がしている電話は

fpiudaemon = QDBusInterface("it.libersoft.FirmapiuDInterface", "/it/libersoft/FirmapiuD", interface='it.libersoft.FirmapiuDInterface' , parent=None)
result = fpiudaemon.call('sign',filepath,options)

どこ

print (filepath) -> ['/home/svalo/programmi/devel/pythondeps']
print (options) -> {'pin': '12345678', 'outdir': '/home/svalo/programmi/devel/firmapiu-gui'}

print(type(filepath)) -> <class 'list'>
print(type(options)) -> <class 'dict'>

ただし、dbusを監視すると、得られるものは

method call sender=:1.242 -> dest=it.libersoft.FirmapiuDInterface serial=67 path=/it/libersoft/FirmapiuD; インターフェイス = it.libersoft.FirmapiuDInterface; メンバー=サイン
   配列 [
      バリアント文字列 "/home/svalo/programmi/devel/firmapiu-gui/pythondeps"
   ]
   配列 [
      辞書エントリ(
         文字列「outdir」
         バリアント文字列 "/home/svalo/programmi/devel/firmapiu-gui"
      )
      辞書エントリ(
         ひも「ピン」
         バリアント文字列「12345678」
      )
   ]

私が手に入れたいのは

method call sender=:1.242 -> dest=it.libersoft.FirmapiuDInterface serial=67 path=/it/libersoft/FirmapiuD; インターフェイス = it.libersoft.FirmapiuDInterface; メンバー=サイン
   配列 [
      文字列 "/home/svalo/programmi/devel/libersoft/firmapiu-gui/pythondeps"
   ]
   配列 [
      辞書エントリ(
         文字列「outdir」
         バリアント文字列 "/home/svalo/programmi/devel/libersoft/firmapiu-gui"
      )
      辞書エントリ(
         ひも「ピン」
         バリアント文字列「12345678」
      )
   ]

つまり、Python が文字列の配列を送信することを期待しており、代わりに文字列を含むバリアントの配列を送信しています。

デーモン devel は Java で単純なクライアントを作成し、署名を尊重して動作します

ここで何が欠けていますか?

4

2 に答える 2