扫描iPhone范围内的蓝牙设备需要多长时间?

Tai*_*red 8 iphone bluetooth

我知道在3.0之前无法通过SDK访问iPhone蓝牙功能,但需要多长时间才能找到该区域的设备?是否取决于该地区的设备数量?如果范围内有大约5个设备,扫描发现所有设备的时间是否需要<5秒或> 30秒?

我知道有很多未知因素,但我正在尝试确定如果时间很短,我是否可以在启动时进行蓝牙扫描,或者如果我必须告诉用户它即将进行扫描并且可以是一个很长的延迟.我无法在现实世界中测试这个,因为其他蓝牙设备不可用,但我试图了解它是如何设计的.

Sim*_*ett 19

不确定API会让你做什么,但基于此的蓝牙主机控制器接口(HCI)命令是'查询命令'

这将让您查询设备的固定时间和/或固定数量的响应.

我是蓝牙新手,不是专家,但......

要从处于低功耗模式的蓝牙设备获得至少1个响应需要1.28秒,因此查询时间是该周期的倍数,最大为61.44秒(48个周期),因此时间范围为1(1.28秒)到48(61.44秒).

可能有几个设备可以在一个1.28秒的时间内响应.

您还可以指定您将接受的响应数(1..255)或0表示无限制,例如直到时间用完为止.

如果您找到了您正在寻找的特定设备,也可以取消查询.

我的办公桌使用CSR蓝牙芯片进行了不科学的测试,蓝牙2.1 + EDR固件在芯片上运行查询,并通过芯片UART调试输出.每次调查10次并取平均结果:

  • 1个周期查询时间(1.28秒)平均有10个独特的蓝牙地址.
  • 5个周期查询时间(6.4秒)平均产生23个独特的蓝牙地址.
  • 10个周期查询时间(12.8秒)平均产生29个唯一的蓝牙地址.

我说"独一无二",其实结果在重复很多相同的地址,并且,这可能是执行相关的,虽然和苹果的API只能返回唯一的地址.

然而,这并不代表"现实世界",因为这里的大多数蓝牙设备(我的办公室)都没有处于低功耗模式.我想,我可以通过Class of Device过滤掉PC,笔记本电脑和测试套件.这将获得移动电话,可发现的耳机等......

查询也可以与RSSI结合使用,以获得信号最强的设备,但它们可能不一定是最接近的.

对于您的场景,您可能希望根据设备的时间和数量进行查询,例如4*1.28秒或10台设备.

总结一下:您可以进行查询的最短时间是1.28秒,可以得到10 +/-?该区域内的设备如果它们处于清醒状态并且靠近它们.

如果你有一个饱和的蓝牙环境或(微波炉进入同一个房间),可能需要更长的时间才能找到范围内的所有设备.


use*_*5 3 6

我知道这是一个老问题,但我想我可以为以后发现这个问题的人添加一些内容。

正如Simon Peverett提到的,设备发现是由蓝牙主机控制器接口执行的底层“查询命令”执行的。在蓝牙规范 V4.0,第 2 卷,E 部分,第 6.1.4 节中,规范说:

当蓝牙设备发起一般查询时,INQUIRY 状态应持续 TGAP(100) 或更长时间,除非查询者收集到足够的响应并决定提前中止 INQUIRY 状态。

在其他地方,TGAP(100) 被解释为 10.24 秒,并被描述为蓝牙设备执行设备发现的时间跨度的推荐值。

换句话说,执行查询的最短时间的良好基线是 10.24 秒,或者查询命令测量时间的 1.28 秒周期中的 8 个周期。