2011-07-21 12 views
3

add_signal_receiverに余分なパラメータを渡すか、シグナルを受信した経路を取得したいと思います。 は、今ではそのように定義されています:add_signal_receiverへのPython-dbusの追加パラメータ

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」を読むことができるようにwan't。

答えて

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

add_signal_receiverは同じ引数を取り、OBENゾンネの答えに追加するには:

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

を、あなたが渡すことができます'送信者'、 '送信先'、 'メンバー'、および 'インターフェース'など、ただし、任意のコールバック情報を転送することはできません。

関連する問題