我正在使用 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 也可以更改为允许。