【发布时间】:2019-05-16 01:12:17
【问题描述】:
我非常了解如何创建方法 - 但是,我希望使用 Python 公开一些信号,以便可以一次调用多个程序。
class Bildschirm(dbus.service.Object):
DBUS_NAME = 'hm.retro.Retro'
DBUS_OBJECT_PATH = '/hm/retro/Retro'
DBUS_INTERFACE = 'hm.retro.Retro'
def __init__(self, _Visio):
self.Visio = _Visio
self.bus = dbus.SessionBus()
bus_name = dbus.service.BusName(self.DBUS_NAME, bus=self.bus)
super().__init__(bus_name, self.DBUS_OBJECT_PATH)
@dbus.service.method(DBUS_INTERFACE, in_signature='i')
def delta(self, nr):
weiter = self.Visio.akt_sender_nr
weiter = (weiter+nr) % SENDER_AM
self.Visio.akt_sender_nr = weiter
self.Visio.update_sender_labels()
self.Visio.screen.force_update()
self.Visio.screen.draw_next_frame()
@dbus.service.signal(DBUS_INTERFACE)
def config_change_visio(self):
self.Visio.load_config()
self.Visio.update_sender_labels()
self.Visio.update_preset_labels()
self.Visio.screen.force_update()
self.Visio.screen.draw_next_frame()
但是,如果我尝试使用 dbus-send 调用信号:
dbus-send --session --print-reply --dest=hm.retro.Retro /hm/retro/Retro hm.retro.Retro.config_change_visio
我收到一条错误消息:
Error org.freedesktop.DBus.Error.UnknownMethod: Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/dbus/service.py", line 654, in _message_cb
(candidate_method, parent_method) = _method_lookup(self, method_name, interface_name)
File "/usr/lib/python3/dist-packages/dbus/service.py", line 246, in _method_lookup
raise UnknownMethodException('%s is not a valid method of interface %s' % (method_name, dbus_interface))
dbus.exceptions.UnknownMethodException: org.freedesktop.DBus.Error.UnknownMethod: Unknown method: config_change_visio is not a valid method of interface hm.retro.Retro
我做错了什么?
【问题讨论】:
标签: python-3.x dbus