扩展 Python lightblue 模块以使用多个蓝牙适配器

扩展 Python lightblue 模块以使用多个蓝牙适配器

我正在使用 lightblue 模块和 pybluez 通过蓝牙将文件发送到 obex 协议对象推送。但我需要使用多个蓝牙适配器(3 个及以上)同时将文件发送到多个设备(20 个及以上)。

我需要告诉 lightblue 使用特定的 hcix 并使用它进行连接和发送。我可以编辑 lightblue 模块以使其支持此功能吗?

这是源文件

在来源的末尾(_lightblue.py

# Gets HCI socket thru PyBluez. Remember to close the returned socket.
def _gethcisock(devid=-1):
    try:
        sock = bluetooth.bluez._gethcisock(devid)
    except Exception, e:
        raise _lightbluecommon.BluetoothError(
            "Cannot access local device: " + str(e))
    return sock

我可以为此方法发送一个特定的ID,但是lightblue不会使用此sock来连接和发送。

答案1

在 Linux 上,lightblue 内部使用 PyBluez 库,该库目前不允许在特定 HCI 设备上打开套接字。PyBluez 内部使用 Linux 蓝牙套接字功能,因此这取决于是否允许为特定 HCI 设备创建套接字。我猜它不允许,否则此功能将在 PyBluez API 中公开,但值得检查。如果可能的话,显然 PyBluez 和 lightblue 也可以更改为允许。

相关内容