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") 

同样,你可以通过'发件人','目的地','会员'和'界面',正如其他人所提到的。但是,您不能转发任意回调信息。