2011-07-21 117 views
3

我想通過額外的參數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函數內。

回答

3

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,首先創建用於將信號提供對象的接口,並然後連接到信號作爲例子。

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') 
0

如果你想從接收到的信號是路徑,這樣做:

def handler(path=None): 
    print("got signal with path %r" % path) 

bus.add_signal_receiver(handler, path_keyword="path") 

同樣,你可以通過'發件人','目的地','會員'和'界面',正如其他人所提到的。但是,您不能轉發任意回調信息。