我想将额外的参数传递给add_signal_receiver,或者以某种方式获取接收信号的路径。 现在它被定义为:
bus.add_signal_receiver(handle_signal, 'RemoteDeviceFound', 'org.bluez.Adapter', 'org.bluez', '/org/bluez/hci'+x)
def handle_signal(address, cls, rssi):
xxxx
我不会同时拥有许多信号接收器,并且能够在handle_signal函数中读取'x'。
答案 0 :(得分:3)
Python DBUS documenation has your answer。它提供了以下示例将发送方传递给处理函数:
def handler(sender=None):
print "got signal from %r" % sender
iface.connect_to_signal("Hello", handler, sender_keyword='sender')
因此,不是使用bus.add_signal_receiver
,而是首先为信号提供对象创建一个接口,然后像示例中那样连接到信号。
答案 1 :(得分:1)
要添加到Oben Sonne的答案,add_signal_receiver
采用相同的论点:
bus = dbus.SystemBus()
bus.add_signal_receiver(handler,
sender_keyword='sender',
destination_keyword='destination',
member_keyword='member',
path_keyword='path',
interface_keyword='interface')
答案 2 :(得分:0)
如果您想要接收信号的路径,请执行以下操作:
def handler(path=None):
print("got signal with path %r" % path)
bus.add_signal_receiver(handler, path_keyword="path")
同样,您可以传递其他人提到的'sender','destination','member'和'interface'。但是,您无法转发任意回调信息。