Python-dbus的额外参数add_signal_receiver
问题描述:
我想通过额外的参数add_signal_receiver或得到某种途径的信号收到来自。 现在,它的定义那样:Python-dbus的额外参数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
我wan't在同一时间有许多信号接收器,并能够读为“x” handle_signal函数内。
答
The 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
,首先创建用于将信号提供对象的接口,并然后连接到信号作为例子。
答
为了增加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')
答
如果你想从接收到的信号是路径,这样做:
def handler(path=None):
print("got signal with path %r" % path)
bus.add_signal_receiver(handler, path_keyword="path")
同样,你可以通过'发件人','目的地','会员'和'界面',正如其他人所提到的。但是,您不能转发任意回调信息。