Python 中的 BlueZD-Bus API配对问题

问题描述

我可以通过基于 BlueZ 的示例代码将我的 Arduino 与 RaspBerry Pi 配对。但是,当我尝试在同一脚本中通过 D-Bus 库读取数据时,会生成以下错误

[Errno 111] 连接被拒绝

我认为原因是通过配对方法完成的异步调用如下:

new_dbus_device.Pair(reply_handler=pair_reply,error_handler=pair_error,timeout=60000)

但是,如果我运行 2 个不同的脚本(一个用于配对,另一个用于读取数据),我很容易从 Arduino 获取数据。所以,我需要做的是等到 Pair 方法调用下面给出的回复函数(这意味着配对完成):

def pair_reply():
    print("Device paired and trusted")
    set_trusted(dev_path)

我尝试过的:

  • 通过删除导致另一个错误的处理程序使调用同步。

  • 尝试检查配对状态,然后尝试连接(如果状态为 1),如下所示,导致死锁:

    pair_status = device_properties.Get("org.bluez.Device1","Paired") #returns dbus boolean
    

那么我应该怎么做才能等到 Pair 方法完成其功能

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)