Gatt服务器不捕捉连接信号

2024-06-01 07:31:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用BlueZ提供的示例gatt服务器,并添加了一个信号处理程序来检测连接和断开连接,如下所示:

bus.add_signal_receiver(PropertiesChangedHandler,                      
                    dbus_interface = "org.freedesktop.DBus.Properties",                          
                    signal_name = "PropertiesChanged",                                           
                    arg0 = "org.bluez.Device1",                                                  
                    path_keyword = "path")

我的信号处理程序只是打印出一些信息:

def PropertiesChangedHandler(interface, changed, invalidated, path):       
    if 'Connected' in changed:                                             
        print("---- Connected Property Changed ----")                      
        print('Interface: ', interface)                                                              
        print('Changed: ', changed['Connected'])                                                     
        print('Path: ', path)                                                                        
    if 'ServicesResolved' in changed:                                                                
        print("---- ServicesResolved Property Changed ----")                                         
        print('Interface: ', interface)                                                              
        print('Changed: ', changed['ServicesResolved'])                                              
        print('Path: ', path)

但是,在运行服务器时,我只能检测到断开连接。我从来没有收到任何连接信号。我在正在处理的信号中添加了“ServicesResolved”,它似乎按预期工作。当我连接和断开连接时,我的日志如下所示:

----ServicesResolved属性已更改----
界面:org.bluez.Device1
更改:1
路径:/org/bluez/hci0/dev\u 42\u 36\u D9\u 11\u CA\u 4B
----已更改连接的属性----
界面:org.bluez.Device1
更改:0
路径:/org/bluez/hci0/dev\u 42\u 36\u D9\u 11\u CA\u 4B
----ServicesResolved属性已更改----
界面:org.bluez.Device1
更改:0
路径:/org/bluez/hci0/dev\u 42\u 36\u D9\u 11\u CA\u 4B

这种奇怪的行为有什么原因?我用的是bluez5.46,如果这很重要的话


Tags: pathorgdev路径界面属性interfaceprint