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时,我得到的是方法呼叫发送者=:1.242-> dest = it.libersoft.FirmapiuDInterface serial = 67 path = / it / libersoft / FirmapiuD; interface = it.libersoft.FirmapiuDInterface;成员=登录数组[变体字符串“ / home / svalo / programmi / devel / firmapiu-gui / pythondeps”]数组[字典条目(字符串“ outdir”变体字符串“ / home / svalo / programmi / devel / firmapiu-gui”)字典条目(字符串“ pin”变体字符串“ 12345678”)]
我想得到的是方法呼叫发送者=:1.242-> dest = it.libersoft.FirmapiuDInterface serial = 67 path = / it / libersoft / FirmapiuD; interface = it.libersoft.FirmapiuDInterface;成员=登录数组[字符串“ / home / svalo / programmi / devel / libersoft / firmapiu-gui / pythondeps”]数组[字典条目(字符串“ outdir”变体字符串“ / home / svalo / programmi / devel / libersoft / firmapiu-gui”)字典条目(字符串“ pin”变体字符串“ 12345678”)]
那是我希望python发送一个字符串数组,而是发送一个包含字符串的变量数组。
守护程序开发用Java语言编写了一个简单的客户端,它可以尊重签名我在这里想念什么?
STRING 115(ASCII's')UTF-8字符串(必须为有效的UTF-8)。必须以nul终止并且不包含其他nul字节。
似乎暗示您应该传递UTF-8编码的
bytes对象,而不是unicode对象。
编辑:
您可能需要将此作为QByteArray
传递:QtCore.QByteArray(unicode_string.encode('utf-8'))
您可以使用QDbusArgument
指定dbus参数的类型签名。这是一个例子:
filepath = QDBusArgument()
filepath.add(['/home/svalo/programmi/devel/pythondeps'], QMetaType.QStringList)
result = fpiudaemon.call('sign',filepath,options)
显然,请确保您的数据可以直接转换为您指定的类型。