gpt4 book ai didi

python - 快速蓝牙名称查找

转载 作者:行者123 更新时间:2023-12-01 06:12:41 25 4
gpt4 key购买 nike

我在快速检测附近蓝牙设备的名称(人名,而不是 BTADDR)时遇到问题我在这里发现了一个非常有趣的基于Python的项目[http://code.google.com/p/python-bluetooth-scanner/],但问题基本上是,虽然寻找BTADDR和RSSI很快,但检测“人类” “设备名称需要更长的时间(即使他们说它应该在代码中工作)

我知道我可以通过以下方式查找姓名:

  1. 简单的“hcitool scan”控制台命令,速度很慢
  2. 模块 PyBlueZ 的 bluetooth.lookup_name(address) 方法
  3. 如项目中所述,报告如下

-

sock = bluetooth.bluez._gethcisock(device)
timeoutms = int(timeout * 1000)
try:
name = bluetooth._bluetooth.hci_read_remote_name( sock, address, timeoutms )
except bluetooth._bt.error, e:
print e
logger.debug("Lookup Failed")
name = None
sock.close()
return name

简要说明:系统使用 2 个加密狗来检测附近的 BT 设备,如果我让它们查找名称,它们会花费更多时间,因此保持锁定状态,当发现新设备时,设备仍会锁定在寻找名称以前的名字和整个软件挂起。我在 WindowsXP 环境中的 VirtualBox 和几个 BT 2.1 加密狗中运行 Ubuntu 10.10。

除了创建一个“未命名”设备列表,以便在我的加密狗使用完以前的设备后立即查找。你知道我有什么办法可以更快地做到这一点吗?

最佳答案

查找远程设备的友好名称通常分为两步。首先,您执行查询扫描“发现”附近可发现的设备。其次,您需要连接到远程设备并“询问”它的友好名称。延迟的部分原因在于这两个步骤通常不以交错的方式执行(即,发现设备,然后查询名称)。通常,您会运行查询扫描直到完成(这需要一段时间),然后询问特定设备的友好名称。 (要交错发现和名称查找,您将开始发现,等到“发现”新设备,取消发现,查询名称,然后重新启动发现。重复直到找不到新设备。某些堆栈会这样做这是自动为您提供的。有些则不会。)

如果两个设备都支持扩展查询响应(在蓝牙 2.1 规范中添加),则会在发现过程中返回友好名称。这大大加快了速度,但它需要在堆栈中得到进一步的支持。

关于python - 快速蓝牙名称查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4897692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com