Python 2.7.16
最近接到一个任务需要使用python来编写DBUS服务,注册dbus服务。
新建一个test.py文件。
pip3 install dbus-python sudo apt-get install libdbus-glib-1-dev $ pip list Package Version ------------- -------------- asn1crypto 0.24.0 cryptography 2.6.1 dbus-python 1.2.16 devscripts 2.19.5+deb10u1 distro 1.3.0 docutils 0.17.1 entrypoints 0.3 gobject 0.1.0 keyring 17.1.1 keyrings.alt 3.1.1 lockfile 0.12.2 meld 3.20.0 onboard 1.4.1 pexpect 4.6.0 pid 3.0.4 Pillow 5.4.1 pip 21.2.4 pycairo 1.16.2 pycrypto 2.6.1 pydbus 0.6.0 PyGObject 3.30.4 pysmbc 1.0.15.6 python-daemon 2.3.0 pyxdg 0.25 reportlab 3.5.13 SecretStorage 2.3.1 service 0.6.0 setproctitle 1.2.2 setuptools 40.8.0 six 1.12.0 wheel 0.32.3
python test.py代码编写
#!/usr/bin/env python
import gobject
import dbus
import dbus.service
import dbus.mainloop.glib
class UBXDBUSRegister(dbus.service.Object):
def __init__(self, bus, object_path):
dbus.service.Object.__init__(self, bus, object_path)
self._last_input = None
@dbus.service.method('com.test.register', in_signature='s', out_signature='s')
def getString(self,str1):
print ("string:",str1 )
return str(str1)
@dbus.service.method('com.test.register', in_signature='', out_signature='')
def Quit(self):
print ("Quit")
exit(0)
return
if __name__ == '__main__':
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
session_bus = dbus.SessionBus()
name = dbus.service.BusName("com.test.register")
ubxPath = "/com/test/register"
object = UBXDBUSRegister(session_bus, ubxPath)
mainloop = gobject.MainLoop()
print ("Running example service.")
mainloop.run()
运行结果
运行结果如下:
调用结果



