快速蓝牙名称查找

问题描述 投票:0回答:1

我在快速检测附近蓝牙设备的名称(人名,而不是 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 中运行 Ubuntu 10.10 和几个 BT 2.1 加密狗。

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

python bluetooth bluetooth-device-discovery
1个回答
2
投票

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

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

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.